📄 thumb.c
字号:
} else //PAL { _wTHUMBVStartPos += (THUMB_TUNE_DISTANCE_HEIGHT_PAL) * (bIndex / THUMB_COLUMN_NUM); _THUMBFrame.rect.wRight = _wTHUMBHStartPos+THUMB_WIDTH+THUMB_TUNE_DISPLAY_WIDTH_PAL; _THUMBFrame.rect.wBottom = _wTHUMBVStartPos+THUMB_HEIGHT_NTSC+THUMB_TUNE_DISPLAY_HEIGHT_PAL; } _THUMBFrame.rect.wLeft = _wTHUMBHStartPos; _THUMBFrame.rect.wTop = _wTHUMBVStartPos; //Clear the region before re-draw the frame because the thickness of the highlight frame may be bigger than normal frame _THUMBRect.bColor = PAL_ENTRY_COLOR_TRANSPARENT; _THUMBRect.rect.wLeft = _THUMBFrame.rect.wLeft; _THUMBRect.rect.wTop = _THUMBFrame.rect.wTop; _THUMBRect.rect.wRight = _THUMBFrame.rect.wRight; _THUMBRect.rect.wBottom = _THUMBFrame.rect.wBottom; GDI_FillRect_909(0, &_THUMBRect); switch (bMode) { case THUMB_FRAME_NORMAL: _THUMBFrame.bColorBright = THUMB_PALETTE_ENTRY_NORMAL_FRAME_BRIGHT; _THUMBFrame.bColorDark = THUMB_PALETTE_ENTRY_NORMAL_FRAME_DARK; break; case THUMB_FRAME_SELECT: _THUMBFrame.bThickness = THUMB_HIGHLIGHT_FRAME_THICKNESS >> 1; _THUMBFrame.bColorBright = THUMB_PALETTE_ENTRY_SELECT_FRAME_BRIGHT; _THUMBFrame.bColorDark = THUMB_PALETTE_ENTRY_SELECT_FRAME_DARK; break; case THUMB_FRAME_PROGRAM: _THUMBFrame.bColorBright = THUMB_PALETTE_ENTRY_PROGRAM_FRAME_BRIGHT; _THUMBFrame.bColorDark = THUMB_PALETTE_ENTRY_PROGRAM_FRAME_DARK; break; case THUMB_FRAME_CLEAR: _THUMBFrame.bColorBright = PAL_ENTRY_COLOR_TRANSPARENT; _THUMBFrame.bColorDark = PAL_ENTRY_COLOR_TRANSPARENT; break; default: break; } GDI_DrawFrame_909(0, &_THUMBFrame);#else /* --CoCo1.10, fix the bug about the "Program" symbol is not cleared. //Clear the region before re-draw the frame because the "P" for program need to be cleared. if (_bTHUMBSubMode == THUMB_SUBMODE_PROGRAM) _THUMB_ClearProgramSymbol(bIndex); */ _THUMB_GetPosition(bIndex); switch (bMode) { case THUMB_FRAME_NORMAL: _bTHUMBFrameThickness = THUMB_FRAME_THICKNESS; _dwTHUMBFrameColor = THUMB_FRAME_NORMAL_COLOR; break; case THUMB_FRAME_SELECT: _bTHUMBFrameThickness = THUMB_HIGHLIGHT_FRAME_THICKNESS; _dwTHUMBFrameColor = _dwTHUMBSelectFrameColor[__SetupInfo.bUIStyle-SETUP_CUSTOM_UI_STYLE_BEGIN]; //THUMB_FRAME_SELECT_COLOR; break; case THUMB_FRAME_PROGRAM: _bTHUMBFrameThickness = THUMB_FRAME_THICKNESS; _dwTHUMBFrameColor = THUMB_FRAME_PROGRAM_COLOR; break; case THUMB_FRAME_CLEAR: _bTHUMBFrameThickness = THUMB_HIGHLIGHT_FRAME_THICKNESS; //clear the max. thickness _dwTHUMBFrameColor = THUMB_BACKGROUND_COLOR; break; default: break; } _THUMBPSFBRect.wLeft = _wTHUMBHStartPos-_bTHUMBFrameThickness; _THUMBPSFBRect.wTop = _wTHUMBVStartPos-_bTHUMBFrameThickness; _THUMBPSFBRect.wRight = _wTHUMBHStartPos+THUMB_WIDTH+_bTHUMBFrameThickness; _THUMBPSFBRect.wBottom = _wTHUMBVStartPos+THUMB_HEIGHT_NTSC+_bTHUMBFrameThickness; GDI_FBDrawRect(__HALJPEGSetting.bFrameBuffer, &_THUMBPSFBRect, _bTHUMBFrameThickness, _dwTHUMBFrameColor);#endif //THUMB_DRAW_OSD_FRAME}//*********************************************************************************************************// Function : _THUMB_ProcessError// Abstract : Process the error about parsing header or decoding.// Arguments : none.// Return : none.// Side Effect : none.// Notes ://*********************************************************************************************************void _THUMB_ProcessError(void){ //HAL_ControlCDIF(HAL_CDIF_CLOSE); //--CoCo1.20, reduce code size HALJPEG_Reset(); if (_bTHUMBRetryTimes) { _bTHUMBRetryTimes--; _THUMB_Start(); } else { if (_bTHUMBDecodeMode == THUMB_DECODE_PAGE) { _THUMB_DrawFrame((BYTE)(_wTHUMBPlayIndex%THUMB_TOTAL_NUM_IN_PAGE), THUMB_FRAME_NORMAL); _THUMB_ChangeToNextPic(); } else if (_bTHUMBDecodeMode == THUMB_DECODE_UNDETERMINED) { _wTHUMBPlayIndex++; _THUMB_SearchNextValidPic(); } else //decode only one thumbnail _bTHUMBStop = TRUE; }}//*********************************************************************************************************// Function : _THUMB_ChangeToNextPic// Abstract : Prepare to change to next picture.// Arguments : none.// Return : none.// Side Effect : none.// Notes ://*********************************************************************************************************void _THUMB_ChangeToNextPic(void){ _bTHUMBStage = THUMB_STAGE_START; _THUMB_CheckPlayPageBoundary(); _wTHUMBPlayIndex++;}//*********************************************************************************************************// Function : _THUMB_CheckPlayPageBoundary// Abstract : This function will check if we have decoded all thumbnails// : in a page.// Arguments : none.// Return : none.// Side Effect : none.// Notes ://*********************************************************************************************************void _THUMB_CheckPlayPageBoundary(void){ if (_THUMB_CheckPagePlayEnd()) //All thumbnails has been decoded in a page. { _bTHUMBStop = TRUE; _THUMB_UpdateHighlight(THUMB_UPDATE_HIGHLIGHT_DRAW); _THUMB_DisplayPageInfo(); _THUMB_ShowGeneralHelp((BYTE)(_wTHUMBIndex % THUMB_TOTAL_NUM_IN_PAGE)); }}//*********************************************************************************************************// Function : _THUMB_CheckPagePlayEnd// Abstract : Call this function to check if we've played the last thumbnail// : in this page.// Arguments : none.// Return : TRUE: play end.// : FALSE: You can go on playing the next thumbnail.// Side Effect : none.// Notes ://*********************************************************************************************************BYTE _THUMB_CheckPagePlayEnd(void){ if (_bTHUMBSubMode == THUMB_SUBMODE_PROGRAM_LIST) //"Program List" mode _bTHUMBTemp = _bTHUMBProgramListPageNo; else //general mode _bTHUMBTemp = _bTHUMBPageNO; if (((_wTHUMBPlayIndex + 1) / THUMB_TOTAL_NUM_IN_PAGE) > _bTHUMBTemp) return TRUE; return FALSE;}//*********************************************************************************************************// Function : _THUMB_DisplayPageInfo// Abstract : This function will display the page number.// Arguments : none.// Return : none.// Side Effect : none.// Notes ://*********************************************************************************************************void _THUMB_DisplayPageInfo(void){ //clear the page info. _THUMB_ClearRegion(THUMB_CLEAR_PAGE_INFO_REGION); if (_wTHUMBTotalFiles != 0) { _THUMB_SetNormalStringAttribute(); _THUMBStringAttr.bTextColor = THUMB_PALETTE_ENTRY_PAGE_STRING; OSDUTL_PrepareOutputString(); OSDUTL_CopyStringFromIndex(aTHUMBPage);#ifdef SUPPORT_THUMB_PROGRAM if (_bTHUMBSubMode == THUMB_SUBMODE_PROGRAM_LIST) { OSDUTL_OutputNumFromIndex((WORD)(_bTHUMBProgramListPageNo+1)); } else //general mode#endif //SUPPORT_THUMB_PROGRAM { OSDUTL_OutputNumFromIndex((WORD)(_bTHUMBPageNO+1)); } OSDUTL_CopyStringFromIndex(aTHUMBSlash); _bTHUMBTemp = _wTHUMBTotalFiles / THUMB_TOTAL_NUM_IN_PAGE; if (_wTHUMBTotalFiles % THUMB_TOTAL_NUM_IN_PAGE) _bTHUMBTemp++; OSDUTL_OutputNumFromIndex(_bTHUMBTemp); _THUMBStringAttr.wX = THUMB_PAGE_END_H-GDI_GetStringWidth_909(__pOSDUTLOutputString); _THUMBStringAttr.wY = THUMB_PAGE_START_V-_THUMB_TuneForTVType(THUMB_TUNE_POS_TYPE_TITLE); //GDI_DrawString_909(0, &_THUMBStringAttr, __pOSDUTLOutputString); _THUMB_DrawString(); }}//*********************************************************************************************************// Function : _THUMB_SearchNextValidPic// Abstract : This function will search the valid picture that we want to decode. Currently, it's just// : for "reset" in rotate mode.// Arguments : none.// Return : TRUE: Got it.// : FALSE: No suitable picture.// Side Effect : none.// Notes ://*********************************************************************************************************BYTE _THUMB_SearchNextValidPic(void){#ifdef CT950_STYLE _THUMB_CheckDumpFileRecord(TRUE);#endif //CT950_STYLE#ifdef CT950_STYLE MM_AccessJPGStatus(MM_GET_JPG_STATUS, _THUMB_GetPlayIndex());#else MM_AccessJPGStatus(MM_GET_JPG_STATUS, (WORD)(_wTHUMBStartPlayItem+_wTHUMBIndex+1));#endif //CT950_STYLE // wyc2.60-909P, update for unicode issue. while ((__pMMFileRecord->bFileAttr & ~IF_UNICODE_FILE_TAG) == HALJPEG_OPERATION_I) { _wTHUMBPlayIndex++; //Exceed the number of files in this folder if (_wTHUMBPlayIndex == _wTHUMBTotalFiles) return FALSE; else if (_wTHUMBPlayIndex == ((_bTHUMBPageNO+1) * THUMB_TOTAL_NUM_IN_PAGE)) //all thumbnails in the page are unrotating. return FALSE;#ifdef CT950_STYLE _THUMB_CheckDumpFileRecord(TRUE); MM_AccessJPGStatus(MM_GET_JPG_STATUS, _THUMB_GetPlayIndex());#else MM_AccessJPGStatus(MM_GET_JPG_STATUS, (WORD)(_wTHUMBStartPlayItem+_wTHUMBIndex+1));#endif //CT950_STYLE } __bMMJPGStatus = HALJPEG_OPERATION_I;#ifdef CT950_STYLE MM_AccessJPGStatus(MM_STORE_JPG_STATUS, _THUMB_GetPlayIndex());#else MM_AccessJPGStatus(MM_STORE_JPG_STATUS, (WORD)(_wTHUMBStartPlayItem+_wTHUMBIndex+1));#endif //CT950_STYLE //Initialize the decoding stage. _bTHUMBStage = THUMB_STAGE_START; return TRUE;}//*********************************************************************************************************// Function : _THUMB_PlayEnd// Abstract : Call this function to push the IFIFO when playing end.// Arguments : none.// Return : none.// Side Effect : none.// Notes ://*********************************************************************************************************void _THUMB_PlayEnd(void){ if (!__btPlayEnd) { if (__dwTimeNow >= __dwTimeEnd) { __btPlayEnd = TRUE; } }}//*********************************************************************************************************// Function : _THUMB_CheckChangePageValid// Abstract : Call this function to see if the action of changing page is valid or not.// Arguments : bAction: THUMB_NEXT_PAGE: Change to the next page.// : THUMB_PREVIOUS_PAGE: Change to the previous page.// Return : TRUE: It's valid.// : FALSE: It's invalid.// Side Effect : none.// Notes ://*********************************************************************************************************BYTE _THUMB_CheckChangePageValid(BYTE bAction){ if (_bTHUMBSubMode == THUMB_SUBMODE_PROGRAM_LIST) //"Program List" mode _bTHUMBTemp = _bTHUMBProgramListPageNo; else //general mode _bTHUMBTemp = _bTHUMBPageNO; if (bAction == THUMB_NEXT_PAGE) { if (((_bTHUMBTemp + 1) * THUMB_TOTAL_NUM_IN_PAGE) < _wTHUMBTotalFiles) //has "Next" page return TRUE; } else if (bAction == THUMB_PREVIOUS_PAGE) { if (_bTHUMBTemp > 0) return TRUE; } return FALSE;}//*********************************************************************************************************// Function : _THUMB_ChangePageAction// Abstract : Call this function when changing the page.// Arguments : bAction: THUMB_NEXT_PAGE: Change to the next page.// : THUMB_PREVIOUS_PAGE: Change to the previo
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -