hello,
I have managed to display a start Icon on my LCD using the hex data defined in uint8_t home_start_icon[]. Below is how I did that:
However, I have a home icon saved as a png image and I converted it to a hex file which I used in an array, and I followed same sequence in displaying the start Icon, but it not display when I run the code. Could anyone say what I need to change in the code below so that that png icon is displayed. I tried changing format from L4 to ARGB4, but no success.
void Display(void)
{
uint16_t length=0;
WaitCmdFifoEmpty(); //wait for FIFO read/write
ft813memWrite32(RAM_CMD + cmdOffset, CMD_INFLATE);
cmdOffset = incCMDOffset(cmdOffset, 4);
ft813memWrite32(RAM_CMD + cmdOffset, START_ICON_ADDR);
cmdOffset = incCMDOffset(cmdOffset, 4);
length=sizeof(home_start_icon);
cmd_WrCmdBuf(home_start_icon,length); //Load from RAM
WaitCmdFifoEmpty(); //wait for FIFO read/write
/** Start a new Display list ***********************************/
ft813memWrite16(REG_CMD_DL, 0); // Start the display list
ft813memWrite32(RAM_CMD + cmdOffset, (CMD_DLSTART)); // Start the display list
cmdOffset = incCMDOffset(cmdOffset, 4);
ft813memWrite32(RAM_CMD + cmdOffset, (DL_CLEAR_RGB |BLUE)); // same as CLEAR_COLOR_RGB(0, 0, 0) Start the display list
cmdOffset = incCMDOffset(cmdOffset, 4);
ft813memWrite32(RAM_CMD + cmdOffset, CLEAR(1,1,1)) ;
cmdOffset = incCMDOffset(cmdOffset, 4);
ft813memWrite32(RAM_CMD + cmdOffset, BITMAP_HANDLE(START_ICON_HANDLE));
cmdOffset = incCMDOffset(cmdOffset, 4);
ft813memWrite32(RAM_CMD + cmdOffset, BITMAP_SOURCE(START_ICON_ADDR));
cmdOffset = incCMDOffset(cmdOffset, 4);
ft813memWrite32(RAM_CMD + cmdOffset, BITMAP_LAYOUT(L4, 16, 32));//L4
//ft813memWrite32(RAM_CMD + cmdOffset, BITMAP_LAYOUT(ARGB4, 140, 70));//L4
cmdOffset = incCMDOffset(cmdOffset, 4);
ft813memWrite32(RAM_CMD + cmdOffset, BITMAP_SIZE(NEAREST, BORDER, BORDER, 32, 32));
//ft813memWrite32(RAM_CMD + cmdOffset, BITMAP_SIZE(NEAREST, BORDER, BORDER, 70, 140));
cmdOffset = incCMDOffset(cmdOffset, 4);
ft813memWrite32(RAM_CMD + cmdOffset, COLOR_RGB(255,25,0)); //used for making colors
cmdOffset = incCMDOffset(cmdOffset, 4);
ft813memWrite32(RAM_CMD + cmdOffset,BEGIN(BITMAPS));
cmdOffset = incCMDOffset(cmdOffset, 4);
ft813memWrite32(RAM_CMD + cmdOffset,VERTEX2II(450,240,START_ICON_HANDLE,4));
cmdOffset = incCMDOffset(cmdOffset, 4);
ft813memWrite32(RAM_CMD + cmdOffset,END());
cmdOffset = incCMDOffset(cmdOffset, 4);
LCD_Display();
}
void LCD_Display(void)
{
ft813memWrite32(RAM_CMD + cmdOffset, (DL_DISPLAY)); // Instruct the graphics processor to show the list
cmdOffset = incCMDOffset(cmdOffset, 4); // Update the command pointer
ft813memWrite32(RAM_CMD + cmdOffset, (CMD_SWAP)); // Make this list active
cmdOffset = incCMDOffset(cmdOffset, 4); // Update the command pointer
ft813memWrite16(REG_CMD_WRITE, (cmdOffset));
}