📄 thumb.c
字号:
#ifdef CT950_STYLE if ((_bTHUMBSubMode == THUMB_SUBMODE_SORT_MODE) && (_bTHUMBStartSort)) { _THUMB_DrawFrame(_bTHUMBTemp, THUMB_FRAME_PROGRAM); _dwTHUMBFlashTime = OS_GetSysTimer(); return; }#endif //CT950_STYLE if (_dwTHUMBFlash == FALSE) { _THUMB_DrawFrame(_bTHUMBTemp, THUMB_FRAME_SELECT); _dwTHUMBFlash = TRUE; } else { if ((_bTHUMBSubMode == THUMB_SUBMODE_PROGRAM) && (LINEAR_ProgramEntryOperation(LINEAR_QUERY_INDEX, 0, (BYTE)__MMSelectCursor.wDirID, (WORD)(_wTHUMBIndex+1)) != 0xFF)) //This is a programmed item. { _THUMB_DrawFrame(_bTHUMBTemp, THUMB_FRAME_PROGRAM); } else { _THUMB_DrawFrame(_bTHUMBTemp, THUMB_FRAME_NORMAL); } _dwTHUMBFlash = FALSE; } _dwTHUMBFlashTime = OS_GetSysTimer(); } } }}//*********************************************************************************************************// Function : THUMB_Trigger// Abstract : Call this function in main loop.// Arguments : none.// Return : none.// Side Effect : none.// Notes ://*********************************************************************************************************void THUMB_Trigger(void){ if (__bThumbnailMode) { /* if (_bTHUMBStop || __btPause) { __btPlaying = FALSE; return; } */ if (_bTHUMBStop) { __btPlaying = FALSE; return; } if (__btPause) { _wTHUMBStartTime = OS_GetSysTimer(); return; } switch (_bTHUMBStage) { case THUMB_STAGE_START: _bTHUMBRetryTimes = THUMB_REDECODE_TIMES; if (_bTHUMBDecodeMode == THUMB_DECODE_ONE) //decode only one thumbnail { _THUMB_Start(); } else { if (!_THUMB_CheckPlayEnd()) _THUMB_Start(); else //All thumbnails has been decoded. Stop! { _bTHUMBStop = TRUE; _THUMB_UpdateHighlight(THUMB_UPDATE_HIGHLIGHT_DRAW); _THUMB_DisplayPageInfo(); //CoCo, Show the page info. if this is the last page and there are not "THUMB_TOTAL_NUM_IN_PAGE" thumbnails in this page. } } break; case THUMB_STAGE_PARSEHEADER: if ((OS_GetSysTimer() - _wTHUMBStartTime) < THUMB_MAX_PARSEHEADER_TIME) { _bTHUMBTemp = HALJPEG_Status(HALJPEG_PARSE_HEADER); if (_bTHUMBTemp == JPEG_STATUS_OK) { //update the JPEG info. //_THUMB_GetJPEGInfo((BYTE)(_wTHUMBPlayIndex % THUMB_TOTAL_NUM_IN_PAGE)); //_THUMB_ShowGeneralHelp((BYTE)(_wTHUMBPlayIndex % THUMB_TOTAL_NUM_IN_PAGE)); _THUMB_Decode(); OSD_Output(MSG_PROGRESS, 0, 1); //CoCo1.10 _bTHUMBStage = THUMB_STAGE_DECODE; _wTHUMBStartTime = OS_GetSysTimer(); } else if (_bTHUMBTemp == JPEG_STATUS_UNSUPPORT) { _bTHUMBRetryTimes = 0; _THUMB_ProcessError(); return; } else if (_bTHUMBTemp == JPEG_STATUS_FAIL) { _THUMB_ProcessError(); return; } else //unfinish { _THUMB_PlayEnd(); return; } } else { _THUMB_ProcessError(); return; } _THUMB_GetPosition((BYTE)(_wTHUMBPlayIndex % THUMB_TOTAL_NUM_IN_PAGE)); _bTHUMBStage = THUMB_STAGE_DECODE; break; case THUMB_STAGE_DECODE: if ((OS_GetSysTimer() - _wTHUMBStartTime) < THUMB_MAX_DECODE_TIME) { OSD_Output(MSG_PROGRESS, 0, 1); //CoCo1.10 _bTHUMBTemp = HALJPEG_Status(HALJPEG_DECODE); if (_bTHUMBTemp == JPEG_STATUS_OK) { //HAL_ControlCDIF(HAL_CDIF_CLOSE); //--CoCo1.20, reduce code size __btPlayEnd=TRUE; //data input end, but not playing end _THUMB_GetJPEGInfo((BYTE)(_wTHUMBPlayIndex % THUMB_TOTAL_NUM_IN_PAGE)); _THUMB_ShowGeneralHelp((BYTE)(_wTHUMBPlayIndex % THUMB_TOTAL_NUM_IN_PAGE)); HALJPEG_Display(__HALJPEGSetting.bFrameBuffer); if (_bTHUMBDecodeMode == THUMB_DECODE_PAGE) {#ifdef SUPPORT_THUMB_PROGRAM if (_bTHUMBSubMode == THUMB_SUBMODE_PROGRAM) { if (LINEAR_ProgramEntryOperation(LINEAR_QUERY_INDEX, 0, (BYTE)__MMSelectCursor.wDirID, (WORD)(_wTHUMBStartPlayItem+_wTHUMBPlayIndex+1)) == 0xFF) //not found _THUMB_DrawFrame((BYTE)(_wTHUMBPlayIndex%THUMB_TOTAL_NUM_IN_PAGE), THUMB_FRAME_NORMAL); else _THUMB_DrawFrame((BYTE)(_wTHUMBPlayIndex%THUMB_TOTAL_NUM_IN_PAGE), THUMB_FRAME_PROGRAM); } else#endif //#ifdef SUPPORT_THUMB_PROGRAM _THUMB_DrawFrame((BYTE)(_wTHUMBPlayIndex%THUMB_TOTAL_NUM_IN_PAGE), THUMB_FRAME_NORMAL); _THUMB_ChangeToNextPic(); } else if (_bTHUMBDecodeMode == THUMB_DECODE_UNDETERMINED) { //Search next picture to be decoded. _wTHUMBPlayIndex++; if (!_THUMB_SearchNextValidPic()) _bTHUMBStop = TRUE; } else //decode only one thumbnail { _bTHUMBStop = TRUE; _bTHUMBDecodeMode = THUMB_DECODE_PAGE; } } else if (_bTHUMBTemp == JPEG_STATUS_FAIL) { _THUMB_ProcessError(); } else //unfinish { _THUMB_PlayEnd(); } } else { _THUMB_ProcessError(); } break; } }}//*********************************************************************************************************// Function : THUMB_ProcessKey// Abstract : Call this function to process the keys.// Arguments : none.// Return : KEY_NO_KEY: The input key is processed.// : INVALID_KEY: The input key is not allowed.// : KEY_xxx: The main program need do more process for the key.// Side Effect : none.// Notes ://*********************************************************************************************************BYTE THUMB_ProcessKey(void){ if (!__bThumbnailMode) return KEY_BYPASS; //audio keys if ((__bKey >= INPUT_KEY_GROUP2) && (__bKey < INPUT_KEY_GROUP3)) return INVALID_KEY; switch (__bKey) { //invalid keys: case KEY_FF: case KEY_SF: // wyc2.17-909S, add language study case case KEY_LAN_STUDY: case KEY_SCF: case KEY_SCB: case KEY_STEP: case KEY_FREEZE: case KEY_BOOKMARK: case KEY_DIGEST: case KEY_REPEAT_AB: case KEY_RESUME: case KEY_GOTOTIME: case KEY_RETURN: case KEY_STOP: case KEY_ZOOM: case KEY_STOP_RETURN: case KEY_DISPLAY: case KEY_SPST_CTL: case KEY_INTRO: case KEY_REMAIN: return INVALID_KEY;#ifdef IMAGE_FRAME_SETUP //CoCo2.38 case KEY_FUNCTION: THUMB_NormalExit(); break;#endif //#ifdef IMAGE_FRAME_SETUP //CoCo2.38 case KEY_MENU:#ifdef SUPPORT_DELETE_FILE_IN_THUMB_UI if (__bTHUMBMainMode == THUMB_MAIN_MODE_EDIT) return INVALID_KEY;#endif //SUPPORT_DELETE_FILE_IN_THUMB_UI if (!_THUMB_ToMMUI()) return INVALID_KEY; break; case KEY_TVMODE: __OSDNDBottomMsgAttr.wY = THUMB_HELP_START_V+_THUMB_TuneForTVType(THUMB_TUNE_POS_TYPE_HELP); return KEY_BYPASS; case KEY_PAUSE_STEP: __bKey = KEY_PAUSE; return KEY_BYPASS; case KEY_NEXT: //change to next page return _THUMB_ChangePageAction(THUMB_NEXT_PAGE); case KEY_PREV: //change to previous page return _THUMB_ChangePageAction(THUMB_PREVIOUS_PAGE); case KEY_LEFT: //move the cursor to left item if (_bTHUMBCursorType == THUMB_CURSOR_PICTURE) {#ifdef SUPPORT_DELETE_FILE_IN_THUMB_UI if (_bTHUMBStartSort) { if (!_THUMB_SortToPrevious()) { return INVALID_KEY; } } else#endif //SUPPORT_DELETE_FILE_IN_THUMB_UI { if (_THUMB_CheckLeftBoundary()) {#ifdef THUMBNAIL_ROUND_HIGHLIGHT _THUMB_UpdateHighlight(THUMB_UPDATE_HIGHLIGHT_CLEAR); while (((_wTHUMBIndex % THUMB_COLUMN_NUM + 1) < THUMB_COLUMN_NUM) && ((_wTHUMBIndex+1) < _wTHUMBTotalFiles)) { _wTHUMBIndex++; } _THUMB_UpdateHighlight(THUMB_UPDATE_HIGHLIGHT_DRAW);#else return INVALID_KEY; //exceed the left item.#endif //THUMBNAIL_ROUND_HIGHLIGHT } else { _THUMB_UpdateHighlight(THUMB_UPDATE_HIGHLIGHT_CLEAR); _wTHUMBIndex--; _THUMB_UpdateHighlight(THUMB_UPDATE_HIGHLIGHT_DRAW); _THUMB_ShowGeneralHelp((BYTE)(_wTHUMBIndex % THUMB_TOTAL_NUM_IN_PAGE)); } } } else //the cursor is at the button. { if (_bTHUMBButtonIndex) { //Recover the original highlight button to normal state. _THUMB_DrawButton(_bTHUMBButtonIndex, THUMB_BUTTON_STATE_ENABLE); //Update new highlight button. _bTHUMBButtonIndex--; _THUMB_DrawButton(_bTHUMBButtonIndex, THUMB_BUTTON_STATE_HIGHLIGHT); } else return INVALID_KEY; } break; case KEY_RIGHT: //move the cursor to right item if (_bTHUMBCursorType == THUMB_CURSOR_PICTURE) {#ifdef SUPPORT_DELETE_FILE_IN_THUMB_UI if (_bTHUMBStartSort) { if (!_THUMB_SortToNext()) { return INVALID_KEY; } } else#endif //SUPPORT_DELETE_FILE_IN_THUMB_UI { if (_THUMB_CheckRightBoundary()) {#ifdef THUMBNAIL_ROUND_HIGHLIGHT _THUMB_UpdateHighlight(THUMB_UPDATE_HIGHLIGHT_CLEAR); while (_wTHUMBIndex > ((_wTHUMBIndex / THUMB_COLUMN_NUM) * THUMB_COLUMN_NUM)) { _wTHUMBIndex--; } _THUMB_UpdateHighlight(THUMB_UPDATE_HIGHLIGHT_DRAW);#else return INVALID_KEY; //exceed the right item.#endif //THUMBNAIL_ROUND_HIGHLIGHT } else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -