📄 osd3.c
字号:
else { if (__bMENUStatus[bLevel] & 0x01) { // Clear the scroll up mark _MENU_RectAttr.bColor = OSDSETUP_ENTRY_CENTER_COLOR_BG; _OSDMENU_FillRect(GET_MENU_X(_pTempMenu), GET_MENU_Y(_pTempMenu)-MENU_SCROLL_HEIGHT, GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1, GET_MENU_Y(_pTempMenu)-1); //CoCo1.20, reduce code size. __bMENUStatus[bLevel] &= 0xFE; // clear scroll-up bit } } } else if (_bMENUTemp==_bMENUTemp2+bItem-1) { if (_bMENUTemp < GET_MENU_ITEM_NUM(_pTempMenu)-1) { { // Draw the scroll down mark if (!(__bMENUStatus[bLevel] & 0x02)) { _InitRect((PURECT)&(_MENU_FrameAttr), GET_MENU_X(_pTempMenu), GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT, GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1, GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT+MENU_SCROLL_HEIGHT-1); _OSDMENU_DrawFrame(FRAME_POP_SOLID); //CoCo1.20, reduce code size. }#ifdef SKIP_DISABLED_ITEM // Brian1.05, set Down mark color to disable if all the "Down" items are disbaled, ie., can't scroll down if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_ITEM|| GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_DIALOG) { for (i=_bMENUTemp+1; i<GET_MENU_ITEM_NUM(_pTempMenu); i++) { if (*(((BYTE*)(_pTempMenu[0].pbItemText))+i/8) & (1 << (i%8))) // if enabled { break; // find a enabled item } } if (i==GET_MENU_ITEM_NUM(_pTempMenu)) _MENU_StrAttr.bTextColor = OSDMENU_ENTRY_TEXT_COLOR_DISABLE; else _MENU_StrAttr.bTextColor = OSDMENU_ENTRY_TEXT_COLOR_NORMAL; } else { // it is value, just set Up mark as normal color _MENU_StrAttr.bTextColor = OSDMENU_ENTRY_TEXT_COLOR_NORMAL; }#endif _wMENUString[0] = 1; _wMENUString[1] = CHAR_N_DWN_16; //__bTemp = GDI_GetStringHeight(&_wMENUString); _MENU_StrAttr.wX = GET_MENU_X(_pTempMenu) + MENU_BORDER_THICKNESS + GET_MENU_WIDTH(_pTempMenu)/2 - 16; _MENU_StrAttr.wY = GET_MENU_Y(_pTempMenu) + MENU_BORDER_THICKNESS*3 + (_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT; _OSDMENU_DrawString(); //CoCo1.20, reduce code size. __bMENUStatus[bLevel] |= 0x02; // set scroll-down bit } } else { if (__bMENUStatus[bLevel] & 0x02) { // Clear the scroll-down mark _MENU_RectAttr.bColor = OSDSETUP_ENTRY_CENTER_COLOR_BG; _OSDMENU_FillRect(GET_MENU_X(_pTempMenu), GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT, GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1, GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT+MENU_SCROLL_HEIGHT-1); //CoCo1.20, reduce code size. __bMENUStatus[bLevel] &= 0xFD; // clear scroll-down bit } } } //else // check if disable if(GET_ITEM_ATTRIBUTE(_pTempMenu, bItem) == IS_ITEM) //if (GET_MENU_ENABLE(_pTempMenu) != NULL) // the _bEnabelxxx exist { if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8))) { // item is enabled, set the text color as normal color _MENU_StrAttr.bTextColor = OSDMENU_ENTRY_TEXT_COLOR_NORMAL; } else { // item is disabled, set the text color as disable color _MENU_StrAttr.bTextColor = OSDMENU_ENTRY_TEXT_COLOR_DISABLE; } } { // Draw single Menu Item OSDMENU_DrawItem(bItem, _bMENUTemp, OSDMENU_ENTRY_ITEM_COLOR_NORMAL); } }}// *********************************************************************// Function : OSDMENU_DisplaySubMenu// Description : This function display the single menu// Arguments : bItem: the item must be displayed.// Global Var : _pTempMenu: The menu// Return : None // Side Effect :// *********************************************************************void OSDMENU_DisplaySubMenu(BYTE bItem, BYTE bLevel){ if (GET_ITEM_ATTRIBUTE(_pTempMenu, bItem)==IS_ITEM) { _pTempMenu = _pTempMenu[2+bItem].pSubMenu; // get sub menu // Brian1.10, for Keil 7, don't use expression like !pointer, the result may be wrong if (_pTempMenu == NULL) // for Main Menu "Exit" item, the submenu is null return; if(GET_ITEM_ATTRIBUTE(_pTempMenu, 0) == IS_VALUE) // use one item to judge if it is value sub menu { // find the checked item // for "Default Value->Read", it is a value but there is no check if (GET_MENU_CHECK(_pTempMenu) != NULL) // It is a "Value" sub menu { bItem = _GetMenuItemPosition(*(GET_MENU_CHECK(_pTempMenu))); // the checked item is also the selection, so record it at the same time. __bMENUSelect[bLevel+1] = bItem; } else { bItem = 0; // for "Default Value->Read", it is a value but there is no check // Brian1.24a __bMENUSelect[bLevel+1] = 0; // assign it to 0, the first item. } } else bItem = 0; // it is a "item" sub menu, so just assign the first item as the one that must be displayed _DisplayMenu(bItem, (BYTE)(bLevel+1)); }}// *********************************************************************// Function : OSDMENU_DrawItem// Description : This function draws a menu item text // Arguments : bItem: the item number// bColor: the color represent the state:// MENU_ITEM_COLOR_HIGHLIGHT, MENU_ITEM_COLOR_SELECT or MENU_ITEM_COLOR_NORMAL // Global Var : _pTempMenu: The menu// Return : None // Side Effect :// Note : may use macro instead to save SRAM// *********************************************************************void OSDMENU_DrawItem(BYTE bBase, BYTE bItem, BYTE bColor){ // The following code handles Icon menu if (CHECK_ICON_ATTRIBUTE(_pTempMenu, bItem)) {#ifndef REMOVE_SETUP_ICON switch (bColor) { case OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT: _wMENUString[5] = BUTTON_HIGHLIGHT; //|BUTTON_WITH_TEXT; break; case OSDMENU_ENTRY_ITEM_COLOR_NORMAL: _wMENUString[5] = BUTTON_NORMAL; //|BUTTON_WITH_TEXT; break; case OSDMENU_ENTRY_ITEM_COLOR_SELECT: _wMENUString[5] = BUTTON_PUSH; //|BUTTON_WITH_TEXT; break; } switch(bItem) { case 0: _wMENUString[1] = BUTTON_ID_LANGUAGE; break; case 1: _wMENUString[1] = BUTTON_ID_SCREEN; break; case 2: _wMENUString[1] = BUTTON_ID_AUDIO; break; case 3: _wMENUString[1] = BUTTON_ID_CUSTOM; break; case 4: _wMENUString[1] = BUTTON_ID_EXIT; break; }// Brian1.08a#ifdef SUPPORT_SETUP_HORIZONTAL_ICON_MENU // Draw the icon menu in horizontal direction here _InitRect(&(_MENU_BtnAttr.rect), GET_MENU_X(_pTempMenu)+ (MENU_ICON_X_OFFSET+MENU_ICON_WIDTH)*bItem, GET_MENU_Y(_pTempMenu), GET_MENU_X(_pTempMenu)+(MENU_ICON_X_OFFSET+MENU_ICON_WIDTH)*bItem+MENU_ICON_WIDTH-1, GET_MENU_Y(_pTempMenu)+MENU_ICON_HEIGHT-1); _MENU_BtnAttr.bButtonId = _wMENUString[1]; _MENU_BtnAttr.bStyle = _wMENUString[5]; GDI_DrawButton_909(0, &_MENU_BtnAttr);#else _InitRect(&(_MENU_BtnAttr.rect), GET_MENU_X(_pTempMenu), GET_MENU_Y(_pTempMenu)+(MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT)*bItem, GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1, GET_MENU_Y(_pTempMenu)+(MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT)*bItem+MENU_ICON_HEIGHT-1); _MENU_BtnAttr.bButtonId = _wMENUString[1]; _MENU_BtnAttr.bStyle = _wMENUString[5]; GDI_DrawButton_909(0, &_MENU_BtnAttr);#endif#else // #ifndef REMOVE_SETUP_ICON/* switch (bColor) { case OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT: _MENU_StrAttr.bBackground = bColor; break; case OSDMENU_ENTRY_ITEM_COLOR_NORMAL: case OSDMENU_ENTRY_ITEM_COLOR_SELECT: _MENU_StrAttr.bBackground = OSDSETUP_ENTRY_COLOR_TOP_BANNER; break; } //alan085a adds for divx reg code _MENU_StrAttr.bTextColor = OSDMENU_ENTRY_TEXT_COLOR_NORMAL; _MENU_StrAttr.bShadow1 = OSDMENU_ENTRY_TEXT_COLOR_NORMAL; _MENU_StrAttr.bShadow2 = OSDMENU_ENTRY_TEXT_COLOR_DISABLE;*/ _MENU_StrAttr.bTextColor = OSDSETUP_ENTRY_ICON_COLOR_BLUE; _MENU_StrAttr.bBackground = bColor; _MENU_StrAttr.bShadow1 = OSDMENU_ENTRY_TEXT_COLOR_NORMAL; _MENU_StrAttr.bShadow2 = OSDMENU_ENTRY_TEXT_COLOR_DISABLE; bItem=bItem-bBase; switch(bItem) { case 0: _wMENUString[1] = CHAR_SETUP_LANG1; _wMENUString[2] = CHAR_SETUP_LANG2; break; case 1: _wMENUString[1] = CHAR_SETUP_SCRN1; _wMENUString[2] = CHAR_SETUP_SCRN2; break; case 2: _wMENUString[1] = CHAR_SETUP_AUDIO1; _wMENUString[2] = CHAR_SETUP_AUDIO2; _MENU_StrAttr.bShadow2 = OSDSETUP_ENTRY_ICON_COLOR_GREEN; _MENU_StrAttr.bTextColor = OSDSETUP_ENTRY_ICON_COLOR_ORANGE; break; case 3: _wMENUString[1] = CHAR_SETUP_CUSTOM1; _wMENUString[2] = CHAR_SETUP_CUSTOM2; _MENU_StrAttr.bTextColor = OSDSETUP_ENTRY_ICON_COLOR_ORANGE; break; case 4: _wMENUString[1] = CHAR_SETUP_EXIT1; _wMENUString[2] = CHAR_SETUP_EXIT2; _MENU_StrAttr.bShadow2 = OSDSETUP_ENTRY_ICON_COLOR_RED; _MENU_StrAttr.bTextColor = OSDSETUP_ENTRY_ICON_COLOR_ORANGE; break; } _wMENUString[0]=2;#ifdef SUPPORT_SETUP_HORIZONTAL_ICON_MENU _MENU_StrAttr.wX = GET_MENU_X(_pTempMenu) + (MENU_ICON_X_OFFSET+MENU_ICON_WIDTH)*bItem, _MENU_StrAttr.wY = GET_MENU_Y(_pTempMenu);#else _MENU_StrAttr.wX = GET_MENU_X(_pTempMenu) + MENU_BORDER_THICKNESS; _MENU_StrAttr.wY = GET_MENU_Y(_pTempMenu) + (MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT+4)*bItem+MENU_BORDER_THICKNESS;#endif _OSDMENU_DrawString(); //CoCo1.20, reduce code size. switch(bItem) { case 0: _wMENUString[1] = CHAR_SETUP_LANG3; _wMENUString[2] = CHAR_SETUP_LANG4; break; case 1: _wMENUString[1] = CHAR_SETUP_SCRN3; _wMENUString[2] = CHAR_SETUP_SCRN4; break; case 2: _wMENUString[1] = CHAR_SETUP_AUDIO3; _wMENUString[2] = CHAR_SETUP_AUDIO4; _MENU_StrAttr.bShadow2 = OSDSETUP_ENTRY_ICON_COLOR_GREEN; _MENU_StrAttr.bTextColor = OSDSETUP_ENTRY_ICON_COLOR_ORANGE; break; case 3: _wMENUString[1] = CHAR_SETUP_CUSTOM3; _wMENUString[2] = CHAR_SETUP_CUSTOM4; _MENU_StrAttr.bTextColor = OSDSETUP_ENTRY_ICON_COLOR_ORANGE; break; case 4: _wMENUString[1] = CHAR_SETUP_EXIT3; _wMENUString[2] = CHAR_SETUP_EXIT4; _MENU_StrAttr.bShadow2 = OSDSETUP_ENTRY_ICON_COLOR_RED; _MENU_StrAttr.bTextColor = OSDSETUP_ENTRY_ICON_COLOR_ORANGE; break; } _wMENUString[0]=2; #ifdef SUPPORT_SETUP_HORIZONTAL_ICON_MENU _MENU_StrAttr.wX = GET_MENU_X
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -