📄 osdprgm.c
字号:
{ //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. } else if (TITLE_INPUT == _bCurrentFrame || TITLE_FRAME == _bCurrentFrame) { _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CHECK, NULL_0); if (TITLE_INPUT == _bCurrentFrame) _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CLEAR, NULL_0); _SetClearHighlight(CLEAR_HIGHLIGHT); _bCurrentFrame = TITLE_FRAME; _SetClearHighlight(CLEAR_HIGHLIGHT); _bCurrentFrame = MAIN_FRAME; _SetClearHighlight(SET_HIGHLIGHT); _bTitleHighlightPos = 1; _wChapterHighlightPos = 1; } else if (CHAPTER_INPUT == _bCurrentFrame) { _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. _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CLEAR, NULL_0); _ShowInput(TITLE_INPUT, OSDPRGM_ENTRY_MAIN_COLOR_BG); _SetClearHighlight(CLEAR_HIGHLIGHT); _bCurrentFrame = TITLE_FRAME; _SetClearHighlight(CLEAR_HIGHLIGHT); _bCurrentFrame = TITLE_INPUT; _SetClearHighlight(SET_HIGHLIGHT); __bProgramTitle = 0; __wProgramChapter = 0; _bTitleHighlightPos = 1; _wChapterHighlightPos = 1; } else if (CHAPTER_FRAME == _bCurrentFrame) { __bProgramTitle = 0; _ShowInput(TITLE_INPUT, OSDPRGM_ENTRY_MAIN_COLOR_BG); _SetClearHighlight(CLEAR_HIGHLIGHT); _bCurrentFrame = TITLE_FRAME; _SetClearHighlight(SET_HIGHLIGHT); } bKeyStatus = KEY_NO_KEY; break; case KEY_RIGHT:#ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06 if (__wDiscType & BOOK_DVD || __wDiscType & CDROM_M1) { if (CHAPTER_INPUT == _bCurrentFrame) { _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CHECK, NULL_0); } } else { _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CHECK, NULL_0); _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CLEAR, NULL_0); }#endif if ( (_bCurrentFrame==MAIN_FRAME) && !(_bMainStart+_bMainHighlightPos-1) ) //Clear All { //do nothing } else { #ifndef SUPPORT_PRGM_NUM_INPUT if (__wDiscType & BOOK_DVD) //no Chapter Frame for VCD { if (_bCurrentFrame!=CHAPTER_FRAME) { _SetClearHighlight(CLEAR_HIGHLIGHT); _bCurrentFrame++; _SetClearHighlight(SET_HIGHLIGHT); } if (_bCurrentFrame == TITLE_FRAME ) { //Kevin0.87, add //uncomment when DVD/VCD is in the loader DVD_ParseInfo ( DVD_TOTAL_CHAPTERS, &__dwTemp, (WORD)(_bTitleStart+_bTitleHighlightPos-1) ); _wTotalChapter = __dwTemp; _ShowChapterList(); _bCurrentFrame = TITLE_FRAME; /////highlight remains in Title Frame } }#else //#ifndef SUPPORT_PRGM_NUM_INPUT __wNumberQueue = 0; //clear if (__wDiscType & BOOK_DVD) //no Chapter Frame for VCD { if (_bCurrentFrame==MAIN_FRAME) { //clear whole yellow highlight bar _SetClearHighlight(CLEAR_HIGHLIGHT); __bProgramCurrentIndex = _bMainStart+_bMainHighlightPos-1; _bOSDPRGMTemp = __ProgIdxList[__bProgramCurrentIndex-1].bMainIndex; //CoCo1.21, replace the above code if ((!__bProgramTitle) && _bOSDPRGMTemp) __bProgramTitle = _bOSDPRGMTemp; _ShowInput(TITLE_INPUT, OSDPRGM_ENTRY_COLOR_HILIGHT); //CoCo1.21, replace the above code _OSDPRGM_UpdateProgramChapter(2); _bCurrentFrame = TITLE_INPUT; } else if (_bCurrentFrame==TITLE_INPUT) { if (0 != __bProgramTitle && __bProgramTitle <= _bTotalTitle) { DVD_ParseInfo(DVD_TOTAL_CHAPTERS, &__dwTemp, (WORD)(__bProgramTitle)); _SetClearHighlight(CLEAR_HIGHLIGHT); _wTotalChapter = (WORD)__dwTemp; _bTitleStart = __bProgramTitle; _bTitleHighlightPos = 1; _ShowTitleList(); _ShowChapterList(); _bCurrentFrame = CHAPTER_INPUT; _SetClearHighlight(SET_HIGHLIGHT); } else { __bProgramTitle = 0; _SetClearHighlight(SET_HIGHLIGHT); bKeyStatus = KEY_INVALID; break; } } else if (_bCurrentFrame==TITLE_FRAME) { __bProgramTitle = _bTitleStart + _bTitleHighlightPos - 1; _ShowInput(TITLE_INPUT, OSDPRGM_ENTRY_MAIN_COLOR_BG); _SetClearHighlight(CLEAR_HIGHLIGHT); _bCurrentFrame = CHAPTER_FRAME; _SetClearHighlight(SET_HIGHLIGHT); } } #endif //#ifndef SUPPORT_PRGM_NUM_INPUT else //BOOK_VCD { if (_bCurrentFrame==MAIN_FRAME) { _SetClearHighlight(CLEAR_HIGHLIGHT); _bCurrentFrame = TITLE_INPUT; _SetClearHighlight(SET_HIGHLIGHT); } } } bKeyStatus = 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 if (__btPause) { // Alan 1.20, in Pause mode, sync the behavior with MM program bKeyStatus = KEY_BYPASS; } else { //current index in Main Frame __bProgramCurrentIndex = _bMainStart+_bMainHighlightPos-1; if ((__wDiscType&BOOK_DVD || __wDiscType&CDROM_M1) && ( _bCurrentFrame == CHAPTER_FRAME || _bCurrentFrame == CHAPTER_INPUT)) { _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CHECK, NULL_0); { if (_bCurrentFrame == CHAPTER_FRAME) LINEAR_ProgramEntryOperation(LINEAR_ADD_ENTRY_BY_INDEX, ((BYTE)(__bProgramCurrentIndex-1)), ((BYTE)(_bTitleStart+_bTitleHighlightPos-1)), ((WORD)(_wChapterStart+_wChapterHighlightPos-1))); else if (_bCurrentFrame == CHAPTER_INPUT) { if (0 != __wProgramChapter && __wProgramChapter <= _wTotalChapter) { LINEAR_ProgramEntryOperation(LINEAR_ADD_ENTRY_BY_INDEX, ((BYTE)(__bProgramCurrentIndex-1)), __bProgramTitle, __wProgramChapter); } else { __wNumberQueue = 0; __wProgramChapter = 0; _SetClearHighlight(SET_HIGHLIGHT); bKeyStatus = KEY_INVALID; break; } } } //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. _bTitleStart = 1; _bTitleHighlightPos = 1; _wChapterStart = 1; _wChapterHighlightPos = 1; _ShowTitleList(); _bCurrentFrame = MAIN_FRAME; _SetClearHighlight(SET_HIGHLIGHT); //Kevin1.23DMTech, proceed to next entry when current entry is set _OSDPRGM_ProceedToNextMainEntry(); _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CLEAR, NULL_0); _ShowInput(TITLE_INPUT, OSDPRGM_ENTRY_MAIN_COLOR_BG); _ShowInput(CHAPTER_INPUT, OSDPRGM_ENTRY_MAIN_COLOR_BG); bKeyStatus = KEY_NO_KEY; } else if ( (__wDiscType&BOOK_DVD || __wDiscType&CDROM_M1) && _bCurrentFrame==TITLE_FRAME) { _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CHECK, NULL_0); __bProgramTitle = _bTitleStart + _bTitleHighlightPos - 1; _ShowInput(TITLE_INPUT, OSDPRGM_ENTRY_MAIN_COLOR_BG); _SetClearHighlight(CLEAR_HIGHLIGHT); if (_wTotalChapter) //move the highlight to Chapter Frame _bCurrentFrame = CHAPTER_FRAME; else //empty dir => move the highlight to Main Frame _bCurrentFrame = MAIN_FRAME; _SetClearHighlight(SET_HIGHLIGHT); bKeyStatus = KEY_NO_KEY; } else if ( (__wDiscType&BOOK_DVD || __wDiscType&CDROM_M1) && _bCurrentFrame==TITLE_INPUT) { __wNumberQueue = 0; //clear if (__wDiscType & BOOK_DVD) //no Chapter Frame for VCD { if (0 != __bProgramTitle && __bProgramTitle <= _bTotalTitle) { DVD_ParseInfo(DVD_TOTAL_CHAPTERS, &__dwTemp, (WORD)(__bProgramTitle)); _SetClearHighlight(CLEAR_HIGHLIGHT); _wTotalChapter = (WORD)__dwTemp; _bTitleStart = __bProgramTitle; _bTitleHighlightPos = 1; _ShowTitleList(); _ShowChapterList(); _bCurrentFrame = CHAPTER_INPUT; _SetClearHighlight(SET_HIGHLIGHT); bKeyStatus = KEY_NO_KEY; break; } else { __bProgramTitle = 0; _SetClearHighlight(SET_HIGHLIGHT); bKeyStatus = KEY_INVALID; break; } } } else if ( !(__wDiscType&BOOK_DVD || __wDiscType&CDROM_M1) && (_bCurrentFrame==TITLE_FRAME || TITLE_INPUT == _bCurrentFrame) ) //VCD { _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CHECK, NULL_0); if (TITLE_FRAME == _bCurrentFrame) { LINEAR_ProgramEntryOperation(LINEAR_ADD_ENTRY_BY_INDEX, ((BYTE)(__bProgramCurrentIndex-1)), NULL_0, ((WORD)(_bTitleStart+_bTitleHighlightPos-1))); _bTitleStart = 1; _bTitleHighlightPos = 1; _ShowTitleList(); } else { if (0 != __bProgramTitle && __bProgramTitle <= _bTotalTitle) { LINEAR_ProgramEntryOperation(LINEAR_ADD_ENTRY_BY_INDEX, ((BYTE)(__bProgramCurrentIndex-1)), NULL_0, ((WORD)(__bProgramTitle))); } else { bKeyStatus = KEY_INVALID; break; } }// _SetClearHighlight(CLEAR_HIGHLIGHT); _bCurrentFrame = MAIN_FRAME; _SetClearHighlight(SET_HIGHLIGHT); //Kevin1.23DMTech, proceed to next entry when current entry is set _OSDPRGM_ProceedToNextMainEntry(); _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CLEAR, NULL_0); _ShowInput(TITLE_INPUT, OSDPRGM_ENTRY_MAIN_COLOR_BG); bKeyStatus = KEY_NO_KEY; } #ifdef SUPPORT_CLEARALL_IN_PROGRAM else if ( (_bCurrentFrame==MAIN_FRAME) && !__bProgramCurrentIndex ) //Clear All { _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CHECK, NULL); _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CLEAR, NULL); LINEAR_ProgramEntryOperation(LINEAR_CLEAR_ALL_ENTRY,NULL,NULL,NULL); _ShowMainList(); _bMainHighlightPos = 2; //highlight 1. __-__ _SetClearHighlight(SET_HIGHLIGHT); bKeyStatus = KEY_NO_KEY; }#endif /*Alan2.30, remove the code to make pressing KEY_PLAY in the Main Frame will to play the program list. else if (_bCurrentFrame == MAIN_FRAME) { if (0 == __ProgIdxList[__bProgramCurrentIndex - 1].bMainIndex && 0 == __ProgIdxList[__bProgramCurrentIndex - 1].wSubIndex) { bKeyStatus = KEY_NO_KEY; } }*/ if (KEY_NO_KEY != bKeyStatus) { if (KEY_PLAY_PAUSE == __bKey)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -