Hola
Ya logré entender completamente que es lo que ellos hacen en la función y no me sirve pero usaré la PutImage8BPP que es 8 bits por pixel.
La otra es 1 bit por pixel. Ya vi que el color se crea cn Setcolor pero que el formato es en rgb565 y hay una función para convertirlo..
Tengo que crear una paleta de colores, que en mi caso es escala de grises y así creo mi propia función basado en PutImage8BPP.
Si suky, tienes razón. Estas funciones trabajan con bitmap y por eso tengo que modificarla porque yo no tengo ese formato sino directamente la imágen.
Las imágenes bitmap traen el tamaño de la imágen y luego la paleta de colores y eso es lo que hace la función ésta. La seguiré analizándo y les contaré.
Saludos
/*********************************************************************
* Function: void PutImage8BPP(SHORT left, SHORT top, FLASH_BYTE* bitmap, BYTE stretch)
*
* PreCondition: none
*
* Input: left,top - left top image corner, bitmap - image pointer,
* stretch - image stretch factor
*
* Output: none
*
* Side Effects: none
*
* Overview: outputs 256 color image starting from left,top coordinates
*
* Note: image must be located in flash
*
********************************************************************/
#if (COLOR_DEPTH >=
/* */
void PutImage8BPP(SHORT left, SHORT top, FLASH_BYTE *bitmap, BYTE stretch)
{
register FLASH_BYTE *flashAddress;
register FLASH_BYTE *tempFlashAddress;
WORD sizeX, sizeY;
WORD x, y;
WORD xc, yc;
BYTE temp;
BYTE stretchX, stretchY;
WORD pallete[256];
WORD counter;
// Move pointer to size information
flashAddress = bitmap + 2;
// Read image size
sizeY = *((FLASH_WORD *)flashAddress);
flashAddress += 2;
sizeX = *((FLASH_WORD *)flashAddress);
flashAddress += 2;
// Read pallete
for(counter = 0; counter < 256; counter++)
{
pallete[counter] = *((FLASH_WORD *)flashAddress);
flashAddress += 2;
}
yc = top;
for(y = 0; y < sizeY; y++)
{
tempFlashAddress = flashAddress;
for(stretchY = 0; stretchY < stretch; stretchY++)
{
flashAddress = tempFlashAddress;
xc = left;
for(x = 0; x < sizeX; x++)
{
// Read pixels from flash
temp = *flashAddress;
flashAddress++;
// Set color
#ifdef USE_PALETTE
SetColor(temp);
#else
SetColor(pallete[temp]);
#endif
// Write pixel to screen
for(stretchX = 0; stretchX < stretch; stretchX++)
{
PutPixel(xc++, yc);
}
}
yc++;
}
}
}