📄 osdprgm.c
字号:
//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 } //end of OSDPRGM_Display()// *********************************************************************************// Function : OSDPRGM_ProcessKey// Description : Process the input key while in DVD/VCD Program mode// Arguments : bKey, the input key// Return : KEY_NO_KEY , the input key is processed// : INVALID_KEY , the input key is not allowed under this mode// : KEY_xxx , main program needs to do more processing for the key.// Side Effect :// *********************************************************************************BYTE OSDPRGM_ProcessKey(BYTE bKey){ //Kevin1.00, fix the video hang/audio broken when invoking Program GUI HAL_PreFillBuffer(HAL_FILL_AV_BUFFER, NULL); switch (bKey) { ///// Enter the following cases when in program mode ///// case KEY_UP:#ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06 _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CHECK, NULL);#endif _SetClearHighlight(CLEAR_HIGHLIGHT); if (_bCurrentFrame==MAIN_FRAME) { if (_bMainHighlightPos>1) _bMainHighlightPos--; else {#ifdef SUPPORT_CLEARALL_IN_PROGRAM if (_bMainStart>0)#else if (_bMainStart>1)#endif { _bMainStart--; _ShowMainList(); } #ifdef SUPPORT_CIRCULAR_WRAP //Kevin1.05, add else { _bMainStart=MAX_PROG_ITEM-MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME+1; _bMainHighlightPos = MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME; //highlight MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME. __-__ _ShowMainList(); }#endif } } else if (_bCurrentFrame==TITLE_FRAME) { if (_bTitleHighlightPos>1) _bTitleHighlightPos--; else { if (_bTitleStart>1) { _bTitleStart--; _ShowTitleList(); } #ifdef SUPPORT_CIRCULAR_WRAP //Kevin1.05, add else if (_bTotalTitle>MAX_ENTRY_NUM_SHOWN_IN_TITLE_FRAME) { _bTitleStart=_bTotalTitle-MAX_ENTRY_NUM_SHOWN_IN_TITLE_FRAME+1; _bTitleHighlightPos = MAX_ENTRY_NUM_SHOWN_IN_TITLE_FRAME; _ShowTitleList(); }#endif } if (__wDiscType & BOOK_DVD) { // uncomment when DVD/VCD is in the loader DVD_ParseInfo ( DVD_TOTAL_CHAPTERS, &__dwTemp, (WORD)(_bTitleStart+_bTitleHighlightPos-1) ); _wTotalChapter = (WORD)__dwTemp; //_wTotalChapter=(_bTitleStart+_bTitleHighlightPos-1); //comment when DVD/VCD is in the loader /*--CoCo1.21 _wChapterStart = 1; _wChapterHighlightPos = 1; _ShowChapterList(); */ _OSDPRGM_UpdateChapterList(); //CoCo1.21, Use this function to replace the above code _bCurrentFrame = TITLE_FRAME; /////highlight remains in the Title Frame } #ifdef SUPPORT_SIMPLE_FM_PROGRAM //Kevin1.10 else if (__wDiscType & CDROM_M1) { _wTotalChapter=__pwFMFilesOfDir[_bTitleStart+_bTitleHighlightPos-1-1]; //dir 0~ /*--CoCo1.21 _wChapterStart = 1; _wChapterHighlightPos = 1; _ShowChapterList(); */ _OSDPRGM_UpdateChapterList(); //CoCo1.21, Use this function to replace the above code _bCurrentFrame = TITLE_FRAME; /////highlight remains in the Title Frame } #endif } else //CHAPTER_FRAME { if (_wChapterHighlightPos>1) _wChapterHighlightPos--; else { if (_wChapterStart>1) { _wChapterStart--; _ShowChapterList(); } #ifdef SUPPORT_CIRCULAR_WRAP //Kevin1.05, add else if (_wTotalChapter>MAX_ENTRY_NUM_SHOWN_IN_CHAPTER_FRAME) { _wChapterStart=_wTotalChapter-MAX_ENTRY_NUM_SHOWN_IN_CHAPTER_FRAME+1; _wChapterHighlightPos = MAX_ENTRY_NUM_SHOWN_IN_CHAPTER_FRAME; _ShowChapterList(); }#endif } } _SetClearHighlight(SET_HIGHLIGHT); __bKey=KEY_NO_KEY; break; case KEY_DOWN:#ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06 _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CHECK, NULL);#endif _SetClearHighlight(CLEAR_HIGHLIGHT); if (_bCurrentFrame==MAIN_FRAME) { //Kevin1.23DMTech, move to a function /* if ((_bMainHighlightPos<MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME) && (_bMainStart+_bMainHighlightPos-1<MAX_PROG_ITEM) ) //change _bMainHighlightPos only _bMainHighlightPos++; else { if ((_bMainStart+MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME-1)<MAX_PROG_ITEM) { _bMainStart++; _ShowMainList(); } #ifdef SUPPORT_CIRCULAR_WRAP //Kevin1.05, add else {#ifdef SUPPORT_CLEARALL_IN_PROGRAM _bMainStart = 0; _bMainHighlightPos = 2; //highlight 1. __-__ #else _bMainStart = 1; _bMainHighlightPos = 1; //highlight 1. __-__ #endif _ShowMainList(); }#endif } */ _OSDPRGM_ProceedToNextMainEntry(); } else if (_bCurrentFrame==TITLE_FRAME) { //Kevin1.05-3, modify //if ( (_bTitleHighlightPos<MAX_ENTRY_NUM_SHOWN_IN_TITLE_FRAME) && (_bTitleHighlightPos<_bTotalTitle) ) if ( (_bTitleHighlightPos<MAX_ENTRY_NUM_SHOWN_IN_TITLE_FRAME) && (_bTitleStart+_bTitleHighlightPos-1<_bTotalTitle) ) //change _bTitleHighlightPos only _bTitleHighlightPos++; else //change _bTitleStart { if ((_bTitleStart+MAX_ENTRY_NUM_SHOWN_IN_TITLE_FRAME-1)<_bTotalTitle) { _bTitleStart++; _ShowTitleList(); } #ifdef SUPPORT_CIRCULAR_WRAP //Kevin1.05, add //Kevin1.07a, consider _bTitleStart=5, _bTotalTitle=9 //else if (_bTitleStart>MAX_ENTRY_NUM_SHOWN_IN_TITLE_FRAME) else if (_bTitleStart!=1) { /*--CoCo1.21 _bTitleStart=1; _bTitleHighlightPos=1; _ShowTitleList(); */ _OSDPRGM_UpdateTitleList(); //CoCo1.21, use this function to replace the above code }#endif } if (__wDiscType & BOOK_DVD) //no Chapter Frame for VCD { //uncomment when DVD/VCD is in the loader DVD_ParseInfo ( DVD_TOTAL_CHAPTERS, &__dwTemp, (WORD)(_bTitleStart+_bTitleHighlightPos-1) ); _wTotalChapter = (WORD)__dwTemp; //_wTotalChapter=(_bTitleStart+_bTitleHighlightPos-1); //comment when DVD/VCD is in the loader /*--CoCo1.21 _wChapterStart = 1; _wChapterHighlightPos = 1; _ShowChapterList(); */ _OSDPRGM_UpdateChapterList(); //CoCo1.21, Use this function to replace the above code _bCurrentFrame = TITLE_FRAME; /////highlight remains in the Title Frame } #ifdef SUPPORT_SIMPLE_FM_PROGRAM //Kevin1.10 else if (__wDiscType & CDROM_M1) { _wTotalChapter=__pwFMFilesOfDir[_bTitleStart+_bTitleHighlightPos-1-1]; //dir 0~ /*--CoCo1.21 _wChapterStart = 1; _wChapterHighlightPos = 1; _ShowChapterList(); */ _OSDPRGM_UpdateChapterList(); //CoCo1.21, Use this function to replace the above code _bCurrentFrame = TITLE_FRAME; /////highlight remains in the Title Frame } #endif } else //CHAPTER_FRAME { //Kevin1.05-3, modify //if ( (_wChapterHighlightPos<MAX_ENTRY_NUM_SHOWN_IN_CHAPTER_FRAME) && (_wChapterHighlightPos<_wTotalChapter) ) if ( (_wChapterHighlightPos<MAX_ENTRY_NUM_SHOWN_IN_CHAPTER_FRAME) && (_wChapterStart+_wChapterHighlightPos-1<_wTotalChapter) ) //change _wChapterHighlightPos only _wChapterHighlightPos++; else //change _wChapterStart { if ((_wChapterStart+MAX_ENTRY_NUM_SHOWN_IN_CHAPTER_FRAME-1)<_wTotalChapter) { _wChapterStart++; _ShowChapterList(); } #ifdef SUPPORT_CIRCULAR_WRAP //Kevin1.05, add //Kevin1.07a, consider _wChapterStart=5, _wTotalChapter=9 //else if (_wChapterStart>MAX_ENTRY_NUM_SHOWN_IN_CHAPTER_FRAME) else if (_wChapterStart!=1) { /*--CoCo1.21 _wChapterStart=1; _wChapterHighlightPos=1; _ShowChapterList(); */ _OSDPRGM_UpdateChapterList(); //CoCo1.21, Use this function to replace the above code } #endif } } _SetClearHighlight(SET_HIGHLIGHT); __bKey=KEY_NO_KEY; break; //Kevin1.05-3, page down case KEY_NEXT:#ifdef SUPPORT_PRGM_NUM_INPUT //Kevin1.06 _OSDPRGM_ProcessNumInput(PRGM_NUMBERINPUT_CHECK, NULL);#endif _SetClearHighlight(CLEAR_HIGHLIGHT); if (_bCurrentFrame==MAIN_FRAME) { //if (_bMainStart+_bMainHighlightPos-1+2*MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME-_bMainHighlightPos<=MAX_PROG_ITEM) //scroll down a whole page if (_bMainStart-1+2*MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME<=MAX_PROG_ITEM) //scroll down a whole page { _bMainStart+=MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME; //_bMainHighlightPos remains the same _ShowMainList(); } else if (_bMainStart+_bMainHighlightPos-1+MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME<=MAX_PROG_ITEM) //scroll down not a whole page { //__bTemp=_bMainStart+_bMainHighlightPos-1+MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME; //--CoCo1.21 _bMainStart=MAX_PROG_ITEM-MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME+1; //_bMainHighlightPos = __bTemp-_bMainStart+1; //--CoCo1.21 _bMainHighlightPos = _bMainStart+_bMainHighlightPos-1+MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME-_bMainStart+1; _ShowMainList(); } else if (_bMainStart+MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME-1<MAX_PROG_ITEM) //scroll down not a whole page { _bMainStart=MAX_PROG_ITEM-MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME+1; _bMainHighlightPos =MAX_PROG_ITEM-_bMainStart+1; //last one _ShowMainList(); } #ifdef SUPPORT_CIRCULAR_WRAP //else if (_bMainStart>=MAX_ENTRY_NUM_SHOWN_IN_MAIN_FRAME)#ifdef SUPPORT_CLEARALL_IN_PROGRAM else if (_bMainStart!=0) //avoid unnecessary redraw { _bMainStart = 0; _bMainHighlightPos = 2; //highlight 1. __-__ #else else if (_bMainStart!=1) //avoid unnecessary redraw { _bMainStart = 1; _bMainHighlightPos = 1; //highlight 1. __-__ #endif _ShowMainList(); }#endif } else if (_bCurrentFrame==TITLE_FRAME) { //if (_bTitleStart+_bTitleHighlightPos-1+MAX_ENTRY_NUM_SHOWN_IN_TITLE_FRAME+MAX_ENTRY_NUM_SHOWN_IN_TITLE_FRAME-_bTitleHighlightPos<=_bTotalTitle) //scroll down a whole page if (_bTitleStart-1+2*MAX_ENTRY_NUM_SHOWN_IN_TITLE_FRAME<=_bTotalTitle) //scroll down a whole page { _bTitleStart+=MAX_ENTRY_NUM_SHOWN_IN_TITLE_FRAME;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -