📄 osdprgm.c
字号:
__wGDIString[1] = CHAR_UNDERLIN; __wGDIString[2] = CHAR_UNDERLIN; __wGDIString[3] = CHAR_UNDERLIN; __wGDIString[4] = CHAR_UNDERLIN; } */ //CoCo1.21, replace the above code _OSDPRGM_UpdateProgramChapter(4); GDI_SetTextColor(TEXT_BG_COLOR, GDI_ENTRY_4B_COLOR_YELLOW); GDI_DRAW_STRING (MAIN_FRAME_X0+FRAME_THICKNESS+145, MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(_bMainHighlightPos-1)); } else //PROGRAM_NUM_CURSOR_CHAPTER { _SetClearHighlight(CLEAR_HIGHLIGHT); _bCurrentFrame++; _SetClearHighlight(SET_HIGHLIGHT); if (__wDiscType & BOOK_DVD) { DVD_ParseInfo ( DVD_TOTAL_CHAPTERS, &__dwTemp, (WORD)(_bTitleStart+_bTitleHighlightPos-1) ); _wTotalChapter = (WORD)__dwTemp; } else //CDROM_M1 _wTotalChapter=__pwFMFilesOfDir[_bTitleStart+_bTitleHighlightPos-1-1]; //dir: 0~ _ShowChapterList(); _bCurrentFrame = TITLE_FRAME; /////highlight remains in Title Frame } } //else if (_bCurrentFrame==TITLE_FRAME) else if (_bCurrentFrame==TITLE_FRAME && _wTotalChapter) //not allowed to go to chapter frame for empty dir. { _SetClearHighlight(CLEAR_HIGHLIGHT); _bCurrentFrame++; _SetClearHighlight(SET_HIGHLIGHT); } }#endif //#ifdef SUPPORT_SIMPLE_FM_PROGRAM #endif //#ifndef SUPPORT_PRGM_NUM_INPUT else //BOOK_VCD { if (_bCurrentFrame==MAIN_FRAME) { _SetClearHighlight(CLEAR_HIGHLIGHT); _bCurrentFrame++; _SetClearHighlight(SET_HIGHLIGHT); } } } __bKey = KEY_NO_KEY; break; case KEY_ENTER: //Kevin1.07, combine all the following keys case KEY_PLAY_PAUSE: //Kevin1.06, add case KEY_PLAY: //Kevin0.87, KEY_PLAY act as KEY_ENTER for some cases#ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06 _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CHECK, NULL);#endif __bProgramCurrentIndex = _bMainStart+_bMainHighlightPos-1; //current index in Main Frame if ( (__wDiscType&BOOK_DVD || __wDiscType&CDROM_M1) && _bCurrentFrame==CHAPTER_FRAME) {#ifdef SUPPORT_SIMPLE_FM_PROGRAM //Kevin1.10 if (__wDiscType&CDROM_M1) LINEAR_ProgramEntryOperation(LINEAR_ADD_ENTRY_BY_INDEX, __bProgramCurrentIndex-1, _bTitleStart+_bTitleHighlightPos-2, _wChapterStart+_wChapterHighlightPos-1); //dir: 0~ (stored in the array) 1~ (display on UI) else#endif LINEAR_ProgramEntryOperation(LINEAR_ADD_ENTRY_BY_INDEX, __bProgramCurrentIndex-1, _bTitleStart+_bTitleHighlightPos-1, _wChapterStart+_wChapterHighlightPos-1); #ifdef SUPPORT_PRGM_NUM_INPUT _bPrgmDigitPos = PROGRAM_NUM_CURSOR_TITLE; //reset#endif //clear chapter frame, up arrow rect, and down arrow rect GDI_FILL_RECT(CHAPTER_FRAME_X0, CHAPTER_FRAME_Y0-1-ARROW_HEIGHT, CHAPTER_FRAME_X1, CHAPTER_FRAME_Y1+1+ARROW_HEIGHT, GDI_ENTRY_4B_COLOR_GENERAL_BG_BLUE ); _bCurrentFrame--; _SetClearHighlight(CLEAR_HIGHLIGHT); _bCurrentFrame--; _SetClearHighlight(SET_HIGHLIGHT); //Kevin1.23DMTech, proceed to next entry when current entry is set _OSDPRGM_ProceedToNextMainEntry(); __bKey=KEY_NO_KEY; } else if ( (__wDiscType&BOOK_DVD || __wDiscType&CDROM_M1) && _bCurrentFrame==TITLE_FRAME) { _SetClearHighlight(CLEAR_HIGHLIGHT); if (_wTotalChapter) //move the highlight to Chapter Frame _bCurrentFrame++; else //empty dir => move the highlight to Main Frame _bCurrentFrame--; _SetClearHighlight(SET_HIGHLIGHT); __bKey=KEY_NO_KEY; } else if ( !(__wDiscType&BOOK_DVD || __wDiscType&CDROM_M1) && (_bCurrentFrame==TITLE_FRAME) ) //VCD { LINEAR_ProgramEntryOperation(LINEAR_ADD_ENTRY_BY_INDEX, __bProgramCurrentIndex-1, NULL, _bTitleStart+_bTitleHighlightPos-1); _SetClearHighlight(CLEAR_HIGHLIGHT); _bCurrentFrame--; _SetClearHighlight(SET_HIGHLIGHT); //Kevin1.23DMTech, proceed to next entry when current entry is set _OSDPRGM_ProceedToNextMainEntry(); __bKey=KEY_NO_KEY; } #ifdef SUPPORT_CLEARALL_IN_PROGRAM else if ( (_bCurrentFrame==MAIN_FRAME) && !__bProgramCurrentIndex ) //Clear All { //LINEAR_ClearProgramEntry(LINEAR_CLEARENTRY,NULL,NULL); //__wProgramData[0~MAX_PROG_ITEM-1]=0 LINEAR_ProgramEntryOperation(LINEAR_CLEAR_ALL_ENTRY,NULL,NULL,NULL); _ShowMainList(); _bMainHighlightPos = 2; //highlight 1. __-__ _SetClearHighlight(SET_HIGHLIGHT); __bKey=KEY_NO_KEY; }#endif //else _bCurrentFrame == MAIN_FRAME other than Clear All //cc.c take care of KEY_PLAY/KEY_PLAY_PAUSE if (bKey==KEY_ENTER) __bKey=KEY_NO_KEY; #ifdef SUPPORT_SIMPLE_FM_PROGRAM //Kevin1.10 if (__bKey==KEY_PLAY || __bKey==KEY_PLAY_PAUSE) //to play program { if (__bThumbnailMode) THUMBNAIL_Exit(); }#endif break; case KEY_CLEAR:#ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06 _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CLEAR, NULL);#endif if ( _bCurrentFrame==MAIN_FRAME) { __bProgramCurrentIndex = _bMainStart+_bMainHighlightPos-1; //current index in Main Frame if (!__bProgramCurrentIndex ) //Clear All { //LINEAR_ClearProgramEntry(LINEAR_CLEARENTRY,NULL,NULL); //__wProgramData[0~MAX_PROG_ITEM-1]=0 LINEAR_ProgramEntryOperation(LINEAR_CLEAR_ALL_ENTRY,NULL,NULL,NULL); _ShowMainList();#ifdef SUPPORT_CLEARALL_IN_PROGRAM _bMainHighlightPos = 2; //highlight 1. __-__ #else _bMainHighlightPos = 1; //highlight 1. __-__ #endif _SetClearHighlight(SET_HIGHLIGHT); } else //Clear one Entry { /////__wProgramData[__bTemp-1] = 0x0000; LINEAR_ProgramEntryOperation(LINEAR_DELETE_ENTRY_BY_INDEX_WO_REARRANGE, __bProgramCurrentIndex-1, NULL, NULL); _SetClearHighlight(SET_HIGHLIGHT); } } else { //clear chapter frame, up arrow rect, and down arrow rect GDI_FILL_RECT(CHAPTER_FRAME_X0, CHAPTER_FRAME_Y0-1-ARROW_HEIGHT, CHAPTER_FRAME_X1, CHAPTER_FRAME_Y1+1+ARROW_HEIGHT, GDI_ENTRY_4B_COLOR_GENERAL_BG_BLUE ); _bCurrentFrame=TITLE_FRAME; _SetClearHighlight(CLEAR_HIGHLIGHT); _bCurrentFrame=MAIN_FRAME; _SetClearHighlight(SET_HIGHLIGHT); } __bKey=KEY_NO_KEY; break; //Kevin0.91, let original flow deal with PROGRAM,POWER,OPEN,... case KEY_POWER: case KEY_OPEN_CLOSE: case KEY_PROGRAM: //exit program UI case KEY_SETUP:#ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06 _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CLEAR, NULL);#endif break; #ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06 //process number keys 0..9 (except 10+..) case KEY_N0: case KEY_N1: case KEY_N2: case KEY_N3: case KEY_N4: case KEY_N5: case KEY_N6: case KEY_N7: case KEY_N8: case KEY_N9: if ( _bCurrentFrame==MAIN_FRAME) { if (_OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_NUMBER, bKey-KEY_N0)) __bKey=KEY_NO_KEY; else __bKey=KEY_INVALID; //OSD show "Invalid" } else __bKey=KEY_NO_KEY; break;#endif //Kevin0.91,doesn't allow other keys default: __bKey=KEY_INVALID; } //Alan2.37, fix the drawing UI slowly when playing CDDA in Anti-Shock#ifndef SUPPORT_ANTISHOCK //Kevin1.00, fix the video hang/audio broken when invoking Program GUI HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL);#else if (BOOK_CDDA != __wDiscType) { HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL); }#endif return __bKey; } //end of OSDPRGM_ProcessKey// *********************************************************************************// Function : _ShowMainList// Description : Show Main List in the Main Frame// Arguments : None// Return : None// Side Effect : _bCurrentFrame might be changed// Note : Why not combine _ShowMainList(), _ShowTitleList(), and _ShowFrameList() into _ShowList()?// Because the exactly common code is so little although they're similar. // *********************************************************************************static void _ShowMainList(void){ //Alan2.37, fix the drawing UI slowly when playing CDDA in Anti-Shock#ifndef SUPPORT_ANTISHOCK //Kevin1.00, fix the video hang/audio broken when invoking Program GUI HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL);#else if (BOOK_CDDA != __wDiscType) { HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL); }#endif _bCurrentFrame = MAIN_FRAME; /////_ShowOneEntry() will refer to //redraw main frame (can also be moved to the following of //main frame) GDI_DRAW_FRAME(MAIN_FRAME_X0, MAIN_FRAME_Y0, MAIN_FRAME_X1, MAIN_FRAME_Y1, GDI_ENTRY_4B_COLOR_WHITE, // bColorBright GDI_ENTRY_4B_COLOR_TEXT_DISABLED, // bColorDark GDI_ENTRY_4B_COLOR_CENTER, // bColorCenter FRAME_POP_SOLID, // bStyle FRAME_THICKNESS // bThickness ); GDI_SetTextColor(TEXT_FG_COLOR, GDI_ENTRY_4B_COLOR_BLACK); GDI_SetTextColor(TEXT_BG_COLOR, GDI_ENTRY_4B_COLOR_CENTER); for (_bOSDPRGMTemp1=_bMainStart; (_bOSDPRGMTemp1<=MAX_PROG_ITEM) && ((_bOSDPRGMTemp1-_bMainStart)<MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME); _bOSDPRGMTemp1++) { _ShowOneEntry(_bOSDPRGMTemp1); } //show arrow down rect if ( (MAX_PROG_ITEM-_bMainStart+1) > MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME) { GDI_DRAW_FRAME(MAIN_FRAME_X0, MAIN_FRAME_Y1+1, MAIN_FRAME_X1, MAIN_FRAME_Y1+1+ARROW_HEIGHT, GDI_ENTRY_4B_COLOR_WHITE, // bColorBright GDI_ENTRY_4B_COLOR_TEXT_DISABLED, // bColorDark GDI_ENTRY_4B_COLOR_CENTER, // bColorCenter FRAME_POP_SOLID, // bStyle FRAME_THICKNESS // bThickness ); GDI_OUTPUT_TEXT(((MAIN_FRAME_X0+MAIN_FRAME_X1)>>1)-5, MAIN_FRAME_Y1+4, aArrowDown); } else //clear arrow down rect { GDI_FILL_RECT(MAIN_FRAME_X0, MAIN_FRAME_Y1+1, MAIN_FRAME_X1, MAIN_FRAME_Y1+1+ARROW_HEIGHT, GDI_ENTRY_4B_COLOR_GENERAL_BG_BLUE ); } //Alan2.37, fix the drawing UI slowly when playing CDDA in Anti-Shock#ifndef SUPPORT_ANTISHOCK //Kevin1.00, fix the video hang/audio broken when invoking Program GUI HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL);#else if (BOOK_CDDA != __wDiscType) { HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL); }#endif //show arrow up rect#ifdef SUPPORT_CLEARALL_IN_PROGRAM if ( _bMainStart >0)#else if ( _bMainStart >1)#endif { GDI_DRAW_FRAME(MAIN_FRAME_X0, MAIN_FRAME_Y0-1-ARROW_HEIGHT, MAIN_FRAME_X1, MAIN_FRAME_Y0-1, GDI_ENTRY_4B_COLOR_WHITE, // bColorBright GDI_ENTRY_4B_COLOR_TEXT_DISABLED, // bColorDark GDI_ENTRY_4B_COLOR_CENTER, // bColorCenter FRAME_POP_SOLID, // bStyle FRA
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -