📄 osdprgm.c
字号:
__bKey = KEY_PLAY; _OSDPRGM_ClearUI(); OSD_ChangeUI(OSD_UI_DVD_PROGRAM, OSD_EXIT_UI); LINEAR_Program(LINEAR_COUNT_ENTRY, NULL_0); bKeyStatus = KEY_TODO; }/*alan080, comment //else _bCurrentFrame == MAIN_FRAME other than Clear All //cc.c take care of KEY_PLAY/KEY_PLAY_PAUSE if (__bKey==KEY_ENTER) bKeyStatus = KEY_NO_KEY; */ } break; case KEY_CLEAR: case KEY_STOP:#ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06 _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CLEAR, NULL_0);#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_0,NULL_0,NULL_0); _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, ((BYTE)(__bProgramCurrentIndex-1)), NULL_0, NULL_0); _SetClearHighlight(SET_HIGHLIGHT); } } else { //clear chapter frame, up arrow rect, and down arrow rect _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_MAIN_COLOR_BG; _OSDPRGM_FillRect(CHAPTER_FRAME_X0, CHAPTER_FRAME_Y0-1-ARROW_HEIGHT, CHAPTER_FRAME_X1,CHAPTER_FRAME_Y1+1+ARROW_HEIGHT); //CoCo1.20, reduce code size. if (__wDiscType & BOOK_DVD) //no Chapter Frame for VCD { __wProgramChapter = 0; _ShowInput(CHAPTER_INPUT, OSDPRGM_ENTRY_MAIN_COLOR_BG); } __bProgramTitle = 0; _ShowInput(TITLE_INPUT, OSDPRGM_ENTRY_MAIN_COLOR_BG); _bCurrentFrame=TITLE_FRAME; _SetClearHighlight(CLEAR_HIGHLIGHT); _bCurrentFrame=MAIN_FRAME; _SetClearHighlight(SET_HIGHLIGHT); } bKeyStatus = KEY_NO_KEY; break; //Kevin0.91, let original flow deal with PROGRAM,POWER,OPEN,... case KEY_POWER: case KEY_OPEN_CLOSE: case KEY_PROGRAM:#ifndef FORCE_SWITCH_NONPBC if (__btPBC && (__wDiscType != BOOK_CDDA)) { bKeyStatus = KEY_INVALID; } else#endif { if (!__btInputProgram) { if ( !LINEAR_Program (LINEAR_PROGRAM_MODE,NULL_0) ) { bKeyStatus = INVALID_KEY; } else {#ifdef PRESTOP_BEFORE_SETUP_AND_PROGRAM// OSDPRGM_EnterByPrestop(); CC_ForceStop(CC_FORCE_STOP_FROM_PROGRAM);#endif OSD_ChangeUI(OSD_UI_DVD_PROGRAM, OSD_ENTER_UI); _OSDPRGM_ShowUI(); bKeyStatus = KEY_NO_KEY; } } else { OSDPRGM_Exit(OSD_UI_EXIT_ALL); OSD_ChangeUI(OSD_UI_DVD_PROGRAM, OSD_EXIT_UI);#ifdef PRESTOP_BEFORE_SETUP_AND_PROGRAM// OSDPRGM_ExitByResume(); CC_ForceResumeRePlay(CC_FORCE_STOP_FROM_PROGRAM);#endif LINEAR_Program(LINEAR_PROGRAM_CLEAR,NULL_0); bKeyStatus = KEY_NO_KEY; } } 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 (TITLE_INPUT == _bCurrentFrame || CHAPTER_INPUT == _bCurrentFrame) { if (_OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_NUMBER, ((WORD)(__bKey-KEY_N0)) )) bKeyStatus =KEY_NO_KEY; else bKeyStatus = KEY_INVALID; //OSD show "Invalid" } else bKeyStatus = KEY_NO_KEY; break;#endif //Kevin0.91,doesn't allow other keys default: bKeyStatus = KEY_INVALID; break; } return bKeyStatus; } //end of OSDPRGM_ProcessKey// *********************************************************************************// Function : OSDPRGM_Recover// Description : The function is called by OSD to do the recovery of Program UI // Arguments : bRecoverRegion, the recover region // : OSD_RECOVER_ALL // : OSD_RECOVER_UPPER_REGION, invalid// : OSD_RECOVER_BOTTOM_REGION, invalid// Return : TRUE, The region has been recovered.// : FALSE, The region doesn't need to be recovered in this UI.// Side Effect :// *********************************************************************************BYTE OSDPRGM_Recover(BYTE bRecoverRegion){ if (OSD_RECOVER_ALL != bRecoverRegion) return FALSE; _OSDPRGM_ShowUI(); return TRUE;}// *********************************************************************************// 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){ _bCurrentFrame = MAIN_FRAME; /////_ShowOneEntry() will refer to //redraw main frame (can also be moved to the following of //main frame) _OSDPRGM_DrawFrame(MAIN_FRAME_X0, MAIN_FRAME_Y0, MAIN_FRAME_X1, MAIN_FRAME_Y1); //CoCo1.20, reduce code size. 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) { _OSDPRGM_DrawFrame(MAIN_FRAME_X0, MAIN_FRAME_Y1+1, MAIN_FRAME_X1, MAIN_FRAME_Y1+1+ARROW_HEIGHT); //CoCo1.20, reduce code size. _OSDPRGM_SetStringPos(((MAIN_FRAME_X0+MAIN_FRAME_X1)>>1)-7, MAIN_FRAME_Y1+4); //CoCo1.20, reduce code size. _OSDPRGM_DrawDynamicString(aArrowDown); //CoCo1.20, reduce code size. } else //clear arrow down rect { _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_MAIN_COLOR_BG; _OSDPRGM_FillRect(MAIN_FRAME_X0, MAIN_FRAME_Y1+1, MAIN_FRAME_X1, MAIN_FRAME_Y1+1+ARROW_HEIGHT); //CoCo1.20, reduce code size. } //show arrow up rect#ifdef SUPPORT_CLEARALL_IN_PROGRAM if ( _bMainStart >0)#else if ( _bMainStart >1)#endif { _OSDPRGM_DrawFrame(MAIN_FRAME_X0, MAIN_FRAME_Y0-1-ARROW_HEIGHT, MAIN_FRAME_X1, MAIN_FRAME_Y0-1); //CoCo1.20, reduce code size. _OSDPRGM_SetStringPos(((MAIN_FRAME_X0+MAIN_FRAME_X1)>>1)-7, MAIN_FRAME_Y0-ARROW_HEIGHT+2); //CoCo1.20, reduce code size _OSDPRGM_DrawDynamicString(aArrowUp); } else //clear arrow up rect { _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_MAIN_COLOR_BG; _OSDPRGM_FillRect(MAIN_FRAME_X0, MAIN_FRAME_Y0-1-ARROW_HEIGHT,MAIN_FRAME_X1, MAIN_FRAME_Y0-1); //CoCo1.20, reduce code size. } } //end of _ShowMainList()// *********************************************************************************// Function : _ShowTitleList// Description : Show Title List in the Title Frame // Arguments : None// Return : None// Side Effect : _bCurrentFrame might be changed// *********************************************************************************static void _ShowTitleList(void){ _bCurrentFrame = TITLE_FRAME; /////_ShowOneEntry() will refer to //redraw title frame (can also be moved to the following of //title frame) _OSDPRGM_DrawFrame(TITLE_FRAME_X0, TITLE_FRAME_Y0, TITLE_FRAME_X1, TITLE_FRAME_Y1); //CoCo1.20, reduce code size. _PRGM_StrAttr.bTextColor = OSDPRGM_ENTRY_COLOR_TEXT2; _PRGM_StrAttr.bBackground = OSDPRGM_ENTRY_FRAME_CENTER; for (_bOSDPRGMTemp1=_bTitleStart; (_bOSDPRGMTemp1<=_bTotalTitle) && (_bOSDPRGMTemp1-_bTitleStart)<MAX_ENTRY_NUM_SHOWN_IN_TITLE_FRAME; _bOSDPRGMTemp1++) { _ShowOneEntry(_bOSDPRGMTemp1); } //show arrow down rect if ( (_bTotalTitle-_bTitleStart+1) > MAX_ENTRY_NUM_SHOWN_IN_TITLE_FRAME) { _OSDPRGM_DrawFrame(TITLE_FRAME_X0, TITLE_FRAME_Y1+1, TITLE_FRAME_X1, TITLE_FRAME_Y1+1+ARROW_HEIGHT); //CoCo1.20, reduce code size. _OSDPRGM_SetStringPos(((TITLE_FRAME_X0+TITLE_FRAME_X1)>>1)-7, TITLE_FRAME_Y1+4); //CoCo1.20, reduce code size. _PRGM_StrAttr.bBackground = OSDPRGM_ENTRY_FRAME_CENTER; _OSDPRGM_DrawDynamicString(aArrowDown); } else //clear arrow down rect { _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_MAIN_COLOR_BG; _OSDPRGM_FillRect(TITLE_FRAME_X0, TITLE_FRAME_Y1+1,TITLE_FRAME_X1, TITLE_FRAME_Y1+1+ARROW_HEIGHT); //CoCo1.20, reduce code size. } //show arrow up rect if ( _bTitleStart >1) { _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_FRAME_CENTER; _OSDPRGM_DrawFrame(TITLE_FRAME_X0, TITLE_FRAME_Y0-1-ARROW_HEIGHT, TITLE_FRAME_X1, TITLE_FRAME_Y0-1); //CoCo1.20, reduce code size. _OSDPRGM_SetStringPos(((TITLE_FRAME_X0+TITLE_FRAME_X1)>>1)-7, TITLE_FRAME_Y0-ARROW_HEIGHT+2); //CoCo1.20, reduce code size. _PRGM_StrAttr.bBackground = OSDPRGM_ENTRY_FRAME_CENTER; _OSDPRGM_DrawDynamicString(aArrowUp); } else //clear arrow up rect { _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_MAIN_COLOR_BG; _OSDPRGM_FillRect(TITLE_FRAME_X0, TITLE_FRAME_Y0-1-ARROW_HEIGHT, TITLE_FRAME_X1, TITLE_FRAME_Y0-1); //CoCo1.20, reduce code size. } } //end of _ShowTitleList()// *********************************************************************************// Function : _ShowChapterList// Description : Show Chapter List in the Chapter Frame// Arguments : None// Return : None// Side Effect : _bCurrentFrame might be changed// ********************************************************************************* static void _ShowChapterList(void){ _bCurrentFrame = CHAPTER_FRAME; /////_ShowOneEntry() will refer to //redraw chapter frame, otherwise some texts will remain on the frame { _wOSDPRGMString[0] = 2; _wOSDPRGMString[1] = CHAR_SPACE; _wOSDPRGMString[2] = CHAR_SPACE; _PRGM_StrAttr.bTextColor = OSDPRGM_ENTRY_COLOR_TEXT2; _PRGM_StrAttr.bBackground = OSDPRGM_ENTRY_MAIN_COLOR_BG; _OSDPRGM_SetStringPos(CHAPTER_FRAME_X0 + FRAME_THICKNESS + 15, CHAPTER_FRAME_Y0-2*ENTRY_HEIGHT); //CoCo1.20, reduce code size. _OSDPRGM_DrawString(); //CoCo1.20, reduce code size. _OSDPRGM_DrawFrame(CHAPTER_FRAME_X0, CHAPTER_FRAME_Y0, CHAPTER_FRAME_X1-20, CHAPTER_FRAME_Y1); //CoCo1.20, reduce code size. } _PRGM_StrAttr.bTextColor = OSDPRGM_ENTRY_COLOR_TEXT2; _PRGM_StrAttr.bBackground = OSDPRGM_ENTRY_FRAME_CENTER; for (_wOSDPRGMTemp=_wChapterStart; (_wOSDPRGMTemp<=_wTotalChapter) && (_wOSDPRGMTemp-_wChapterStart)<MAX_ENTRY_NUM_SHOWN_IN_CHAPTER_FRAME; _wOSDPRGMTemp++) { _ShowOneEntry(_wOSDPRGMTemp); } //show arrow down rect if ( (_wTotalChapter-_wChapterStart+1) > MAX_ENTRY_NUM_SHOWN_IN_CHAPTER_FRAME) { { _OSDPRGM_DrawFrame(CHAPTER_FRAME_X0, CHAPTER_FRAME_Y1+1, CHAPTER_FRAME_X1-20, CHAPTER_FRAME_Y1+1+ARROW_HEIGHT); //CoCo1.20, reduce code size. _OSDPRGM_SetStringPos(((CHAPTER_FRAME_X0+CHAPTER_FRAME_X1-20)>>1)-7, CHAPTER_FRAME_Y1+4); //CoCo1.20, reduce code size. _OSDPRGM_DrawDynamicString(aArrowDown); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -