📄 thumb.c
字号:
for (_wTHUMBTemp = 0; _wTHUMBTemp < __pMMFilterFilesOfDir[__MMSelectCursor.wDirID]; _wTHUMBTemp++) { //Dump file record. MM_GetDumpedFileRecord(); if (__pMMFileRecord->FileName.bExtID == EXTNAME_JPG) { if (!_bTHUMBTemp) { _wTHUMBStartPlayItem = _wTHUMBTemp; _bTHUMBTemp = TRUE; } _wTHUMBTotalFiles++; } else { if (_bTHUMBTemp) //All JPEG has beed parsed. break; } } /* _wTHUMBStartPlayItem = 0; if (MM_ParseDirFiles(__MMPlayingItem.wDirID, EXT_BIT_JPG, 0)) { // MM_GetDumpedFileRecord will update the __pMMFileRecord. Call MM_GetDumpedFileRecord again will go next file record // and update the __pMMFileRecord again. _wTHUMBTotalFiles = __pMMFilterFilesOfDir[__MMPlayingItem.wDirID]; } */ }}//*********************************************************************************************************// Function : _THUMB_InitialStage// Abstract : This fucntion will initialize the stage.// Arguments : none.// Return : none.// Side Effect : none.// Notes : _bTHUMBStop and _bTHUMBStage are initialized.//*********************************************************************************************************void _THUMB_InitialStage(void){ _bTHUMBStop = FALSE; _bTHUMBStage = THUMB_STAGE_START;}//*********************************************************************************************************// Function : _THUMB_InitializeGDI// Abstract : Call this function to initialize the palettes.// Arguments : none.// Return : none.// Side Effect : none.// Notes ://*********************************************************************************************************void _THUMB_InitializeGDI(void){ _bTHUMBTemp = __SetupInfo.bUIStyle-SETUP_CUSTOM_UI_STYLE_BEGIN; GDI_ClearRegion(0); //clear region 0 GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_SELECT_FRAME_BRIGHT, THUMB_PALETTE_COLOR_SELECT_FRAME_BRIGHT, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_SELECT_FRAME_DARK, THUMB_PALETTE_COLOR_SELECT_FRAME_DARK, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_NORMAL_FRAME_BRIGHT, THUMB_PALETTE_COLOR_NORMAL_FRAME_BRIGHT, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_NORMAL_FRAME_DARK, THUMB_PALETTE_COLOR_NORMAL_FRAME_DARK, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_PROGRAM_FRAME_BRIGHT, THUMB_PALETTE_COLOR_PROGRAM_FRAME_BRIGHT, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_PROGRAM_FRAME_DARK, THUMB_PALETTE_COLOR_PROGRAM_FRAME_DARK, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_HELP_STRING, THUMB_PALETTE_COLOR_HELP_STRING, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_BUTTON_STRING_ENABLE, THUMB_PALETTE_COLOR_BUTTON_STRING_ENABLE, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_BUTTON_STRING_HIGHLIGHT, THUMB_PALETTE_COLOR_BUTTON_STRING_HIGHLIGHT, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_PL_FILE_EXT, THUMB_PALETTE_COLOR_PL_FILE_EXT, FALSE); //GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_TITLE_STRING, THUMB_PALETTE_COLOR_TITLE_STRING, FALSE); //GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_PAGE_STRING, THUMB_PALETTE_COLOR_PAGE_STRING, FALSE); //GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_BUTTON_ENABLE_BACKGROUND, THUMB_PALETTE_COLOR_BUTTON_ENABLE_BACKGROUND, FALSE); //GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_BUTTON_HIGHLIGHT_BACKGROUND, THUMB_PALETTE_COLOR_BUTTON_HIGHLIGHT_BACKGROUND, FALSE); //GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_HELP_REGION_BACKGROUND, THUMB_PALETTE_COLOR_HELP_REGION_BACKGROUND, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_BUTTON_ENABLE_BACKGROUND, _dwTHUMBBtnEnableColor[_bTHUMBTemp], FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_BUTTON_HIGHLIGHT_BACKGROUND, _dwTHUMBBtnHighlightColor[_bTHUMBTemp], FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_HELP_REGION_BACKGROUND, _dwTHUMBHelpRegionColor[_bTHUMBTemp], FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_TITLE_STRING, _dwTHUMBTitleStringColor[__SetupInfo.bUIStyle-SETUP_CUSTOM_UI_STYLE_BEGIN], FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_PAGE_STRING, _dwTHUMBPageStringColor[__SetupInfo.bUIStyle-SETUP_CUSTOM_UI_STYLE_BEGIN], FALSE); //Initialize the palettes of the icons for Program list. GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_MP3_ICON_TEXT_FOREGROUND, THUMB_PALETTE_COLOR_MP3_ICON_TEXT_FOREGROUND, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_MP3_ICON_SHADOW_1, THUMB_PALETTE_COLOR_MP3_ICON_SHADOW_1, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_MP3_ICON_SHADOW_2, THUMB_PALETTE_COLOR_MP3_ICON_SHADOW_2, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_WMA_ICON_TEXT_FOREGROUND, THUMB_PALETTE_COLOR_WMA_ICON_TEXT_FOREGROUND, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_WMA_ICON_SHADOW_1, THUMB_PALETTE_COLOR_WMA_ICON_SHADOW_1, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_WMA_ICON_SHADOW_2, THUMB_PALETTE_COLOR_WMA_ICON_SHADOW_2, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_MP4_ICON_TEXT_FOREGROUND, THUMB_PALETTE_COLOR_MP4_ICON_TEXT_FOREGROUND, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_MP4_ICON_SHADOW_1, THUMB_PALETTE_COLOR_MP4_ICON_SHADOW_1, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_MP4_ICON_SHADOW_2, THUMB_PALETTE_COLOR_MP4_ICON_SHADOW_2, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_MP2_ICON_TEXT_FOREGROUND, THUMB_PALETTE_COLOR_MP2_ICON_TEXT_FOREGROUND, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_MP2_ICON_SHADOW_1, THUMB_PALETTE_COLOR_MP2_ICON_SHADOW_1, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_MP2_ICON_SHADOW_2, THUMB_PALETTE_COLOR_MP2_ICON_SHADOW_2, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_DAT_ICON_TEXT_FOREGROUND, THUMB_PALETTE_COLOR_DAT_ICON_TEXT_FOREGROUND, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_DAT_ICON_SHADOW_1, THUMB_PALETTE_COLOR_DAT_ICON_SHADOW_1, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_DAT_ICON_SHADOW_2, THUMB_PALETTE_COLOR_DAT_ICON_SHADOW_2, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_VOB_ICON_TEXT_FOREGROUND, THUMB_PALETTE_COLOR_VOB_ICON_TEXT_FOREGROUND, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_VOB_ICON_SHADOW_1, THUMB_PALETTE_COLOR_VOB_ICON_SHADOW_1, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_VOB_ICON_SHADOW_2, THUMB_PALETTE_COLOR_VOB_ICON_SHADOW_2, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_BUTTON_FRAME, THUMB_PALETTE_COLOR_BUTTON_FRAME, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_HELP_REGION_FRAME, THUMB_PALETTE_COLOR_HELP_REGION_FRAME, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_PROGRAM_SYMBOL, THUMB_PALETTE_COLOR_PROGRAM_SYMBOL, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_MPG_ICON_TEXT_FOREGROUND, THUMB_PALETTE_COLOR_MPG_ICON_TEXT_FOREGROUND, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_MPG_ICON_SHADOW_1, THUMB_PALETTE_COLOR_MPG_ICON_SHADOW_1, FALSE); GDI_ChangePALEntry(THUMB_PALETTE_ENTRY_MPG_ICON_SHADOW_2, THUMB_PALETTE_COLOR_MPG_ICON_SHADOW_2, FALSE); //CoCo0.95 GDI_WaitPaletteComplete(); GDI_ActivateRegion(0); //open GDI}//*********************************************************************************************************// Function : _THUMB_TuneFramePosition// Abstract : Tune the thumbnail's frame when according to different TV type.// Return : none.// Side Effect : none.// Notes ://*********************************************************************************************************void _THUMB_TuneFramePosition(void){ if (__bTVType == SETUP_SCREEN_TV_SYSTEM_NTSC) { if(__SetupInfo.bProgressiveScan == SETUP_PROGRESSIVE_SCAN_ON) { _bTHUMBTuneFrame_H = THUMB_TUNE_FRAME_H_NTSC_PSCAN; _bTHUMBTuneFrame_V = THUMB_TUNE_FRAME_V_NTSC_PSCAN;#if (DRAM_CONFIGURATION_TYPE_DVD == DRAM_SIZE_16) _bTHUMBTuneOSDOffset_H = THUMB_TUNE_OSD_H_OFFSET_NTSC_PSCAN; _bTHUMBTuneOSDOffset_V = THUMB_TUNE_OSD_V_OFFSET_NTSC_PSCAN; _bTHUMBTuneOSDDistance_H = THUMB_TUNE_OSD_H_DISTANCE_NTSC_PSCAN; _bTHUMBTuneOSDDistance_V = THUMB_TUNE_OSD_V_DISTANCE_PAL_PSCAN;#endif } else { _bTHUMBTuneFrame_H = THUMB_TUNE_FRAME_H_NTSC; _bTHUMBTuneFrame_V = THUMB_TUNE_FRAME_V_NTSC;#if (DRAM_CONFIGURATION_TYPE_DVD == DRAM_SIZE_16) _bTHUMBTuneOSDOffset_H = THUMB_TUNE_OSD_H_OFFSET_NTSC; _bTHUMBTuneOSDOffset_V = THUMB_TUNE_OSD_V_OFFSET_NTSC; _bTHUMBTuneOSDDistance_H = THUMB_TUNE_OSD_H_DISTANCE_NTSC; _bTHUMBTuneOSDDistance_V = THUMB_TUNE_OSD_V_DISTANCE_PAL_PSCAN;#endif } } else // PAL { if(__SetupInfo.bProgressiveScan == SETUP_PROGRESSIVE_SCAN_ON) { _bTHUMBTuneFrame_H= THUMB_TUNE_FRAME_H_PAL_PSCAN; _bTHUMBTuneFrame_V= THUMB_TUNE_FRAME_V_PAL_PSCAN;#if (DRAM_CONFIGURATION_TYPE_DVD == DRAM_SIZE_16) _bTHUMBTuneOSDOffset_H = THUMB_TUNE_OSD_H_OFFSET_PAL_PSCAN; _bTHUMBTuneOSDOffset_V = THUMB_TUNE_OSD_V_OFFSET_PAL_PSCAN; _bTHUMBTuneOSDDistance_H = THUMB_TUNE_OSD_H_DISTANCE_PAL_PSCAN; _bTHUMBTuneOSDDistance_V = THUMB_TUNE_OSD_V_DISTANCE_PAL;#endif } else { _bTHUMBTuneFrame_H= THUMB_TUNE_FRAME_H_PAL; _bTHUMBTuneFrame_V= THUMB_TUNE_FRAME_V_PAL;#if (DRAM_CONFIGURATION_TYPE_DVD == DRAM_SIZE_16) _bTHUMBTuneOSDOffset_H = THUMB_TUNE_OSD_H_OFFSET_PAL; _bTHUMBTuneOSDOffset_V = THUMB_TUNE_OSD_V_OFFSET_PAL; _bTHUMBTuneOSDDistance_H = THUMB_TUNE_OSD_H_DISTANCE_PAL; _bTHUMBTuneOSDDistance_V = THUMB_TUNE_OSD_V_DISTANCE_PAL;#endif } }}//*********************************************************************************************************// Function : _THUMB_TuneForTVType// Abstract : Call this function to tune the value for different TV type// Arguments : bType: the type of tunning the value.// Return : the value should be tune// Side Effect : none.// Notes ://*********************************************************************************************************BYTE _THUMB_TuneForTVType(BYTE bType){ if (__bTVType == SETUP_SCREEN_TV_SYSTEM_NTSC) return 0; switch (bType) { case THUMB_TUNE_POS_TYPE_TITLE: return THUMB_TUNE_TITLE_START_V_PAL; case THUMB_TUNE_POS_TYPE_BUTTON: return THUMB_TUNE_BUTTON_START_V_PAL; case THUMB_TUNE_POS_TYPE_HELP: return THUMB_TUNE_HELP_START_V_PAL; default: return 0; }}//*********************************************************************************************************// Function : _THUMB_CheckPlayEnd// Abstract : Call this function to check if we've played the last thumbnail.// Arguments : none.// Return : TRUE: play end.// : FALSE: You can go on playing the next thumbnail.// Side Effect : none.// Notes ://*********************************************************************************************************BYTE _THUMB_CheckPlayEnd(void){#ifdef SUPPORT_DELETE_FILE_IN_THUMB_UI if (_bTHUMBSubMode == THUMB_SUBMODE_SORT_MODE) { if (_wTHUMBPlayIndex > _bTHUMBSortFileEndIndex) return TRUE; else return FALSE; } else#endif //SUPPORT_DELETE_FILE_IN_THUMB_UI { if ((_wTHUMBPlayIndex + 1) <= _wTHUMBTotalFiles) return FALSE; return TRUE; }}//*********************************************************************************************************// Function : _THUMB_UpdateHighlight// Abstract : This function will Update the highlight.// Arguments : none.// Return : none.// Side Effect : none.// Notes ://*********************************************************************************************************void _THUMB_UpdateHighlight(BYTE bUpdate){ _bTHUMBTemp = (BYTE)(_wTHUMBIndex % THUMB_TOTAL_NUM_IN_PAGE); if (bUpdate == THUMB_UPDATE_HIGHLIGHT_DRAW) { if (_bTHUMBCursorType == THUMB_CURSOR_PICTURE) { _THUMB_DrawFrame(_bTHUMBTemp, THUMB_FRAME_SELECT);#ifdef SUPPORT_THUMB_PROGRAM if (_bTHUMBSubMode == THUMB_SUBMODE_PROGRAM) { if (LINEAR_ProgramEntryOperation(LINEAR_QUERY_INDEX, 0, (BYTE)__MMSelectCursor.wDirID, (WORD)(_wTHUMBStartPlayItem+_wTHUMBIndex+1)) != 0xFF) { //If it is a programmed item. Need to draw the Program symbol _THUMB_OutputProgramSymbol(_bTHUMBTemp); } }#endif //#ifdef SUPPORT_THUMB_PROGRAM } } else //Recover the frame to its correct state when cursor leaves it. {#ifndef THUMB_DRAW_OSD_FRAME _THUMB_DrawFrame(_bTHUMBTemp, THUMB_FRAME_CLEAR);#endif //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_LIST) { _THUMB_ClearProgramSymbol((BYTE)(_wTHUMBIndex % THUMB_TOTAL_NUM_IN_PAGE)); } //if (_wTHUMBIndex > _wTHUMBPlayIndex) if (_wTHUMBIndex > (_wTHUMBTotalFiles - 1)) { _THUMB_DrawFrame(_bTHUMBTemp, THUMB_FRAME_CLEAR); }#ifdef SUPPORT_THUMB_PROGRAM else if ((_bTHUMBSubMode == THUMB_SUBMODE_PROGRAM) && (LINEAR_ProgramEntryOperation(LINEAR_QUERY_INDEX, 0, (BYTE)__MMSelectCursor.wDirID, (WORD)(_wTHUMBStartPlayItem+_wTHUMBIndex+1)) != 0xFF)) //This is a programmed item. { _THUMB_DrawFrame(_bTHUMBTemp, THUMB_FRAME_PROGRAM); }#endif //SUPPORT_THUMB_PROGRAM else { _THUMB_DrawFrame(_bTHUMBTemp, THUMB_FRAME_NORMAL); } }}//*********************************************************************************************************// Function : _THUMB_GetPosition// Abstract : This function will calculate the position for the thumbnail.// Arguments : bIndex: The index in a page. Only 0 to 8 is valid.// Return : none.// Side Effect : none.// Notes : Update _wTHUMBHStartPos and _wTHUMBVStartPos.//*********************************************************************************************************void _THUMB_GetPosition(BYTE bIndex){ _wTHUMBHStartPos = (THUMB_DISTANCE_WIDTH) * (bIndex % THUMB_COLUMN_NUM) + THUMB_WIDTH * (bIndex % THUMB_COLUMN_NUM) + THUMB_H_REGION; _wTHUMBVStartPos = (THUMB_DISTANCE_HEIGHT_NTSC) * (bIndex / THUMB_COLUMN_NUM) + THUMB_HEIGHT_NTSC * (bIndex / THUMB_COLUMN_NUM) + THUMB_V_REGION_NTSC;}//*********************************************************************************************************// Function : _THUMB_DrawFrame// Abstract : Draw frame for the thumbnail.// Arguments : bIndex: The index of the thumbnail.// : bMode: what kind of frame you want to draw.// Return : none.// Side Effect : none.// Notes ://*********************************************************************************************************void _THUMB_DrawFrame(BYTE bIndex, BYTE bMode){#ifdef THUMB_DRAW_OSD_FRAME _THUMBFrame.bStyle = FRAME_DOUBLE; _THUMBFrame.bThickness = THUMB_FRAME_THICKNESS >> 1; _THUMBFrame.bColorCenter = PAL_ENTRY_COLOR_TRANSPARENT; _THUMB_GetPosition(bIndex); _wTHUMBHStartPos -= _bTHUMBTuneFrame_H; _wTHUMBVStartPos -= _bTHUMBTuneFrame_V; if (__bTVType == SETUP_SCREEN_TV_SYSTEM_NTSC) { _THUMBFrame.rect.wRight = _wTHUMBHStartPos+THUMB_WIDTH+THUMB_TUNE_DISPLAY_WIDTH_NTSC; _THUMBFrame.rect.wBottom = _wTHUMBVStartPos+THUMB_HEIGHT_NTSC+THUMB_TUNE_DISPLAY_HEIGHT_NTSC;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -