📄 osdprgm.c
字号:
else //clear arrow down rect { _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_MAIN_COLOR_BG; _OSDPRGM_FillRect(CHAPTER_FRAME_X0, CHAPTER_FRAME_Y1+1, CHAPTER_FRAME_X1, CHAPTER_FRAME_Y1+1+ARROW_HEIGHT); //CoCo1.20, reduce code size. } //show arrow up rect if ( _wChapterStart >1) { { _OSDPRGM_DrawFrame(CHAPTER_FRAME_X0, CHAPTER_FRAME_Y0-1-ARROW_HEIGHT, CHAPTER_FRAME_X1-20, CHAPTER_FRAME_Y0-1); //CoCo1.20, reduce code size. _OSDPRGM_SetStringPos(((CHAPTER_FRAME_X0+CHAPTER_FRAME_X1-20)>>1)-7, CHAPTER_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(CHAPTER_FRAME_X0, CHAPTER_FRAME_Y0-1-ARROW_HEIGHT, CHAPTER_FRAME_X1, CHAPTER_FRAME_Y0-1); //CoCo1.20, reduce code size. } } //end of _ShowChapterList()// *********************************************************************************// Function : _SetClearHighlight// Description : Set/Clear Highlight & Show the current entry// Arguments : bFlag: SET_HIGHLIGHT/CLEAR_HIGHLIGHT// Implicit Arg: _bCurrentFrame// Return : None// Side Effect :// *********************************************************************************static void _SetClearHighlight(BYTE bFlag){ _PRGM_StrAttr.bTextColor = OSDPRGM_ENTRY_COLOR_TEXT2; if (bFlag) //SET_HIGHLIGHT { _PRGM_StrAttr.bBackground = OSDPRGM_ENTRY_COLOR_HILIGHT; _bOSDPRGMTemp = OSDPRGM_ENTRY_COLOR_HILIGHT; } else //CLEAR_HIGHLIGHT { if ((__bKey == KEY_RIGHT || KEY_PLAY == __bKey || KEY_ENTER == __bKey) && (MAIN_FRAME != _bCurrentFrame)) { if (__wDiscType&BOOK_DVD || __wDiscType&CDROM_M1) { _bOSDPRGMTemp = OSDPRGM_ENTRY_TEXT_DISABLED; } else //VCD _bOSDPRGMTemp = OSDPRGM_ENTRY_TEXT_DISABLED; } else { if (TITLE_INPUT == _bCurrentFrame || CHAPTER_INPUT == _bCurrentFrame) _bOSDPRGMTemp = OSDPRGM_ENTRY_MAIN_COLOR_BG; else _bOSDPRGMTemp = OSDPRGM_ENTRY_FRAME_CENTER; } _PRGM_StrAttr.bBackground = _bOSDPRGMTemp; } _PRGM_RectAttr.bColor = _bOSDPRGMTemp; if (_bCurrentFrame == MAIN_FRAME) { _OSDPRGM_FillRect(MAIN_FRAME_X0+FRAME_THICKNESS, ((WORD)(MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(_bMainHighlightPos-1))), MAIN_FRAME_X1-FRAME_THICKNESS, ((WORD)(MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(_bMainHighlightPos-1)+ENTRY_HEIGHT))); //CoCo1.20, reduce code size. _ShowOneEntry(((WORD)(_bMainStart+_bMainHighlightPos-1))); } else if (_bCurrentFrame == TITLE_INPUT) { _ShowInput(TITLE_INPUT, _bOSDPRGMTemp); } else if (_bCurrentFrame == TITLE_FRAME) { _OSDPRGM_FillRect( TITLE_FRAME_X0+FRAME_THICKNESS, ((WORD)(TITLE_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(_bTitleHighlightPos-1))), TITLE_FRAME_X1-FRAME_THICKNESS, ((WORD)(TITLE_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(_bTitleHighlightPos-1)+ENTRY_HEIGHT))); //CoCo1.20, reduce code size. _ShowOneEntry(((WORD)(_bTitleStart+_bTitleHighlightPos-1))); } else if (_bCurrentFrame == CHAPTER_INPUT) { _ShowInput(CHAPTER_INPUT, _bOSDPRGMTemp); } else //CHAPTER_FRAME { { _OSDPRGM_FillRect( CHAPTER_FRAME_X0+FRAME_THICKNESS, ((WORD)(CHAPTER_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(_wChapterHighlightPos-1))), CHAPTER_FRAME_X1-20-FRAME_THICKNESS, ((WORD)(CHAPTER_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(_wChapterHighlightPos-1)+ENTRY_HEIGHT))); //CoCo1.20, reduce code size. } _ShowOneEntry(((WORD)(_wChapterStart+_wChapterHighlightPos-1))); } } //end of _SetClearHighlight() // *********************************************************************************// Function : _ShowInput// Description : Show One Entry in either Main, Title, or Chapter Frame. // Arguments : wEntry: main frame entry #, title #, or chapter #// Implicit Arg: _bCurrentFrame// Return : None// Side Effect :// *********************************************************************************static void _ShowInput(BYTE bInput, BYTE bBgColor){ _PRGM_StrAttr.bTextColor = OSDPRGM_ENTRY_COLOR_TEXT2; _PRGM_StrAttr.bBackground = bBgColor; _wOSDPRGMString[0] = 3; _wOSDPRGMString[1] = CHAR_SPACE; _wOSDPRGMString[2] = CHAR_SPACE; _wOSDPRGMString[3] = CHAR_SPACE; switch(bInput) { case TITLE_INPUT: if (0 != __bProgramTitle) { _OSDPRGM_OutputNum(__bProgramTitle, 2); } /* --CoCo1.20, reduce code size. else { _wOSDPRGMString[0] = 3; _wOSDPRGMString[1] = CHAR_SPACE; _wOSDPRGMString[2] = CHAR_SPACE; _wOSDPRGMString[3] = CHAR_SPACE; } */ _OSDPRGM_SetStringPos(TITLE_FRAME_X0 + FRAME_THICKNESS + 15, TITLE_FRAME_Y0-2*ENTRY_HEIGHT); //CoCo1.20, reduce code size. break; case CHAPTER_INPUT: if (0 != __wProgramChapter) { _OSDPRGM_OutputNum(__wProgramChapter, 2); } /* --CoCo1.20, reduce code size. else { _wOSDPRGMString[0] = 3; _wOSDPRGMString[1] = CHAR_SPACE; _wOSDPRGMString[2] = CHAR_SPACE; _wOSDPRGMString[3] = CHAR_SPACE; } */ _OSDPRGM_SetStringPos(CHAPTER_FRAME_X0 + FRAME_THICKNESS + 15, CHAPTER_FRAME_Y0-2*ENTRY_HEIGHT); //CoCo1.20, reduce code size. break; } _OSDPRGM_DrawString(); //CoCo1.20, reduce code size. _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_COLOR_TEXT2; _OSDPRGM_FillRect( _PRGM_StrAttr.wX, //CoCo1.20, reduce code size. _PRGM_StrAttr.wY + GDI_GetStringHeight(_wOSDPRGMString)+1, _PRGM_StrAttr.wX + GDI_GetStringWidth(_wOSDPRGMString), _PRGM_StrAttr.wY + GDI_GetStringHeight(_wOSDPRGMString)+3); //CoCo1.20, reduce code size.}// *********************************************************************************// Function : _ShowOneEntry// Description : Show One Entry in either Main, Title, or Chapter Frame. // Arguments : wEntry: main frame entry #, title #, or chapter #// Implicit Arg: _bCurrentFrame// Return : None// Side Effect :// *********************************************************************************static void _ShowOneEntry(WORD wEntry){ if (_bCurrentFrame == MAIN_FRAME) {#ifdef SUPPORT_CLEARALL_IN_PROGRAM if (!wEntry) //0 { _wOSDPRGMString[0] = 9; //9 digits _wOSDPRGMString[1] = CHAR_C; _wOSDPRGMString[2] = CHAR_ll; _wOSDPRGMString[3] = CHAR_ee; _wOSDPRGMString[4] = CHAR_aa; _wOSDPRGMString[5] = CHAR_rr; _wOSDPRGMString[6] = CHAR_SPACE; _wOSDPRGMString[7] = CHAR_A; _wOSDPRGMString[8] = CHAR_ll; _wOSDPRGMString[9] = CHAR_ll; _OSDPRGM_SetStringPos(MAIN_FRAME_X0+FRAME_THICKNESS+20, MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart); //CoCo1.20, reduce code size. _OSDPRGM_DrawString(); //CoCo1.20, reduce code size. } else //1,2,...,9#endif { if (__wDiscType&BOOK_DVD) { _wOSDPRGMString[0] = 3; //digits 1. - //Kevin1.22, expand program entry to more than 10 _wOSDPRGMString[1] = aNDNumbers[wEntry/10]; //CoCo1.20, reduce code size if (wEntry<10) _wOSDPRGMString[1] = CHAR_SPACE; _wOSDPRGMString[2] = aNDNumbers[wEntry%10]; //CoCo1.20, reduce code size _wOSDPRGMString[3] = CHAR_FULL_STOP; _OSDPRGM_SetStringPos(MAIN_FRAME_X0+FRAME_THICKNESS+20, MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart)); //CoCo1.20, reduce code size. _OSDPRGM_DrawString(); //CoCo1.20, reduce code size. if (!__ProgIdxList[wEntry-1].wSubIndex) //0: not set yet { _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_COLOR_TEXT2; _OSDPRGM_FillRect( MAIN_FRAME_X0+FRAME_THICKNESS+75, ((WORD)(MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart+1) - 5)), MAIN_FRAME_X0+FRAME_THICKNESS+75 + 120, ((WORD)(MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart+1) + 3 - 5))); //CoCo1.20, reduce code size. } else //12 34 { _wOSDPRGMString[0] = 4; //2 digits _bOSDPRGMTemp = __ProgIdxList[wEntry-1].bMainIndex; _wOSDPRGMString[1] = aNDNumbers[_bOSDPRGMTemp/10];//CoCo1.20, reduce code size _wOSDPRGMString[2] = aNDNumbers[_bOSDPRGMTemp%10]; //CoCo1.20, reduce code size _wOSDPRGMString[3] = CHAR_HYPHEN_MINUS; _wOSDPRGMString[4] = CHAR_HYPHEN_MINUS; _OSDPRGM_SetStringPos(MAIN_FRAME_X0+FRAME_THICKNESS+75, MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart)); //CoCo1.20, reduce code size. _OSDPRGM_DrawString(); //CoCo1.20, reduce code size. _wOSDPRGMString[0] = 2; //2 digits __wTemp = __ProgIdxList[wEntry-1].wSubIndex; _wOSDPRGMString[1] = aNDNumbers[__wTemp/10]; //CoCo1.20, reduce code size _wOSDPRGMString[2] = aNDNumbers[__wTemp%10]; //CoCo1.20, reduce code size _OSDPRGM_SetStringPos(MAIN_FRAME_X0+FRAME_THICKNESS+125, MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart)); //CoCo1.20, reduce code size. _OSDPRGM_DrawString(); //CoCo1.20, reduce code size. } } else //VCD { _wOSDPRGMString[0] = 3; _wOSDPRGMString[1] = aNDNumbers[wEntry/10];//CoCo1.20, reduce code size if (wEntry<10) _wOSDPRGMString[1] = CHAR_SPACE; _wOSDPRGMString[2] = aNDNumbers[wEntry%10]; //CoCo1.20, reduce code size _wOSDPRGMString[3] = CHAR_FULL_STOP; _OSDPRGM_SetStringPos(MAIN_FRAME_X0+FRAME_THICKNESS+20, MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart)); //CoCo1.20, reduce code size. _OSDPRGM_DrawString(); //CoCo1.20, reduce code size. if (!__ProgIdxList[wEntry-1].wSubIndex) //0: not set yet { _PRGM_RectAttr.bColor = OSDPRGM_ENTRY_COLOR_TEXT2; _OSDPRGM_FillRect( MAIN_FRAME_X0+FRAME_THICKNESS+75, ((WORD)(MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart+1) - 5)), MAIN_FRAME_X0+FRAME_THICKNESS+75 + 120, ((WORD)(MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart+1) + 3 - 5))); //CoCo1.20, reduce code size. } else { __wTemp = __ProgIdxList[wEntry-1].wSubIndex; // 12 _wOSDPRGMString[1] = aNDNumbers[__wTemp/10]; //CoCo1.20, reduce code size _wOSDPRGMString[2] = aNDNumbers[__wTemp%10]; //CoCo1.20, reduce code size _OSDPRGM_SetStringPos(MAIN_FRAME_X0+FRAME_THICKNESS+75, MAIN_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bMainStart)); //CoCo1.20, reduce code size. _OSDPRGM_DrawString(); //CoCo1.20, reduce code size. } } } } else if (_bCurrentFrame == TITLE_FRAME) { if (!(__wDiscType&CDROM_M1)) //DVD/VCD { _OSDPRGM_OutputNum(wEntry, 2); } _OSDPRGM_SetStringPos(TITLE_FRAME_X0+FRAME_THICKNESS+15, TITLE_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_bTitleStart)); //CoCo1.20, reduce code size. _OSDPRGM_DrawString(); //CoCo1.20, reduce code size. } else //CHAPTER_FRAME { if (!(__wDiscType&CDROM_M1)) //DVD/VCD { _OSDPRGM_OutputNum(wEntry, 2); } _OSDPRGM_SetStringPos(CHAPTER_FRAME_X0+FRAME_THICKNESS+15, CHAPTER_FRAME_Y0+FRAME_THICKNESS+ENTRY_HEIGHT*(wEntry-_wChapterStart)); //CoCo1.20, reduce code size. _OSDPRGM_DrawString(); //CoCo1.20, reduce code size. } } //end of _ShowOneEntry()//***************************************************************************// Function : _OSDPRGM_ShowUI// Abstract : Draw the Program UI.// Arguments : // Return : none.// Side Effect : none.// Notes : //***************************************************************************void _OSDPRGM_ShowUI(void){#ifdef MINI_OSD_REGION //CoCo2.30, borrow frame buffer to show OSD. __dwRegionHeight = GDI_REGION_HEIGHT; // 460 // Need to set to the correct DRAM address GDI_InitialRegion (0); // initialize region to set it to 8-bit mode#endif GDI_SetMixRatio(GDI_GENERAL_MIX_RATIO); GDI_ActivateRegion(0); //Initialization of Variables #ifdef SUPPORT_CLEARALL_IN_PROGRAM _bMainStart = 0; #else _bMainStart = 1; #endif _bTitleStart = 1; _wChapterStart = 1; #ifdef SUPPORT_CLEARALL_IN_PROGRAM _bMainHighlightPos = 2; //highlight 1. __-__ #else _bMainHighlightPos = 1; //highlight 1. __-__ #endif _bTitleHighlightPos = 1; _wChapterHighlightPos = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -