/******************************************************************************* Function: BYTE ImageDecodeTask(void) Precondition: ImageDecode() must have been called Overview: This function completes one small part of the image decode function Input: None Output: Status code - '1' means decoding is completed - '0' means decoding is not yet completed, call this function again *******************************************************************************/ BYTE ImageDecodeTask(void) { #ifdef IMG_USE_NON_BLOCKING_DECODING { if(IMG_pCurrentFile != NULL) // At present, supports only JPEG { return JPEG_bDecode(IMG_pCurrentFile, FALSE); } } #endif return 1; }
/******************************************************************************* Function: BYTE ImageDecode(IMG_FILE *pImageFile, IMG_FILE_FORMAT eImgFormat, WORD wStartx, WORD wStarty, WORD wWidth, WORD wHeight, WORD wFlags, IMG_FILE_SYSTEM_API *pFileAPIs, IMG_PIXEL_OUTPUT pPixelOutput) Precondition: None Overview: This function uses the approperiate image decoding function to decode and display the image Input: File pointer, Kind of image, Image position and boundaries, If center alignment and downscaling to fit into the display is required, File System API pointer and function to output the decoded pixels Output: Error code - '0' means no error *******************************************************************************/ BYTE ImageDecode(IMG_FILE *pImageFile, IMG_FILE_FORMAT eImgFormat, WORD wStartx, WORD wStarty, WORD wWidth, WORD wHeight, WORD wFlags, IMG_FILE_SYSTEM_API *pFileAPIs, IMG_PIXEL_OUTPUT pPixelOutput) { BYTE bRetVal = 0; IMG_wStartX = wStartx; IMG_wStartY = wStarty; IMG_wWidth = wWidth; IMG_wHeight = wHeight; IMG_wImageWidth = 0; IMG_wImageHeight = 0; IMG_bDownScalingFactor = (wFlags & IMG_DOWN_SCALE)? 1: 0; IMG_bAlignCenter = (wFlags & IMG_ALIGN_CENTER)? 1: 0; #ifndef IMG_USE_ONLY_565_GRAPHICS_DRIVER_FOR_OUTPUT IMG_pPixelOutput = pPixelOutput; #endif #ifndef IMG_USE_ONLY_MDD_FILE_SYSTEM_FOR_INPUT IMG_pFileAPIs = pFileAPIs; #endif switch(eImgFormat) { #ifdef IMG_SUPPORT_BMP case IMG_BMP: bRetVal = BMP_bDecode(pImageFile); break; #endif #ifdef IMG_SUPPORT_JPEG case IMG_JPEG: bRetVal = JPEG_bDecode(pImageFile); break; #endif #ifdef IMG_SUPPORT_GIF case IMG_GIF: bRetVal = GIF_bDecode(pImageFile); // case IMG_GIF: while(PORTDbits.RD14==1) GIF_bDecode(pImageFile); break; #endif default: bRetVal = 0xFF; } return(bRetVal); }