📄 osd3.c
字号:
//__bMENUSelect[__bMENUCurrentLevel] = 0;; // set select to 0, the first item.
__bCurrentMenuId = GET_MENU_ID(_pTempMenu);
__bMENUCurrentLevel--;
__wMENUCurrentItemId = GET_ITEM_ID(_pTempMenu, __bMENUSelect[__bMENUCurrentLevel]);
OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);
//OSDMENU_DisplaySubMenu(__bMENUSelect[__bMENUCurrentLevel], __bMENUCurrentLevel);
}
// Brian1.08a, from sub menu to the icon menu, so display the settings
#ifdef SUPPORT_MENU_SETTINGS_DISPLAY
if (__bMENUCurrentLevel == 0 && _bMenuType == MENU_TYPE_SETUP)
{
_DisplayCurrentSettings();
}
#endif
}
break;
// Brian1.08a
//case KEY_ENTER:
//case KEY_PLAY: // Brian2.81, CC module doesn't transfer key anymore
//case KEY_PLAY_PAUSE: // Brian2.81, CC module doesn't handle compound keys
case OSDMENU_SELECT_ITEM:
_bMENUTemp = __bMENUSelect[__bMENUCurrentLevel];
if (GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_VALUE)
{
//if (GET_MENU_CHECK(_pTempMenu)) // Brian1.20 avoid using this expression under Keil 7 ==> just another pointer conversion issue
if (GET_MENU_CHECK(_pTempMenu) != NULL) // the "Read default value" Value has no check
{
//bItemNum = *(GET_MENU_CHECK(_pTempMenu)) - GET_MENU_BASE(_pTempMenu); // the current check item
// Brian1.08, search the menu to get item position
bItemNum = _GetMenuItemPosition(*(GET_MENU_CHECK(_pTempMenu))); // the current check item
if (bItemNum >=__bMENUDisplayStart[__bMENUCurrentLevel] && bItemNum < __bMENUDisplayStart[__bMENUCurrentLevel]+GET_MENU_ROW(_pTempMenu))
{
// the current checked item is displayed on the screen, un-check it
OSDMENU_DrawCheckMark((BYTE)(bItemNum-__bMENUDisplayStart[__bMENUCurrentLevel]), (BYTE)OSDMENU_ENTRY_ITEM_COLOR_NORMAL, FALSE);
}
*(GET_MENU_CHECK(_pTempMenu)) = (BYTE)__wMENUCurrentItemId;
OSDMENU_DrawCheckMark((BYTE)(_bMENUTemp-__bMENUDisplayStart[__bMENUCurrentLevel]), OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT, TRUE);
}
#ifdef SUPPORT_MENU_CURSOR_STAY_AT_VALUE_AFTER_ENTER
// Brian1.08a
// menu cursor will stay at the value menu after Key Enter
// but the _SaveDataToSetupInfo depends on the __wMENUCurrentItemId which is item ID to save the value to EEPROM and do actions
// if the cursor is stay at value menu, then the ID is the value ID, not item ID.
// We don't want to change _SaveDataToSetupInfo so much for this option, ===> so we can use a extra variable
// to record the Item ID while the __wMENUCurrentItemId is still the value ID as it should be.
// And in _SaveDataToSetupInfo, we use the new variable instead.
_wMENUTemp = __bMENUParent[__bMENUCurrentLevel];
//_pTempMenu = _pMenuIndex[_wMENUTemp]; // don't change _pTempMenu, or we need to set it back after temp usage
__wMENUItemIdAfterEnter = GET_ITEM_ID(_pMenuIndex[_wMENUTemp], __bMENUSelect[__bMENUCurrentLevel-1]);
#else
// menu cursor will not mov to its parent (by issue a "KEY_LEFT" operation) after KEY_ENTER
// Brian1.08a, use operation instead
//bKey = KEY_LEFT;
bMenuOperation = OSDMENU_GOTO_PARENT_MENU;
goto process_key_op;
#endif
}
else
{
// Brian1.08a
//bKey = KEY_RIGHT;
bMenuOperation = OSDMENU_GOTO_SUB_MENU;
goto process_key_op;
}
break;
}
}
// *********************************************************************
// Function : OSDMENU_DisplayMenu
// Description : This function display the single menu
// Arguments : bMenuId: the ID of menu
// The ID is an index to _pMenuIndex[]
// bLevel: the item must be displayed.
// Return : None
// Side Effect :
// *********************************************************************
void OSDMENU_DisplayMenu(BYTE bMenuId, BYTE bItem, BYTE bLevel)
{
_pTempMenu = _pMenuIndex[bMenuId];
if (_pTempMenu) // for Main Menu "Exit" item, the submenu is null
{
if ((_bMenuType == MENU_TYPE_SETUP) &&
(bMenuId == SETUP_MENU_MAIN
|| bMenuId == SETUP_MENU_MAIN_WITH_PROLOGIC)) // Brian1.08
_DisplayIconMenu();
else
_DisplayMenu(bItem, bLevel);
}
}
// *********************************************************************
// Function : _DisplayIconMenu
// Description : This function display the single Icon menu
// Arguments : None (assume icon menu is the root (level 0) and no scroll)
// Global Var : _pTempMenu: The menu
// Return : None
// Side Effect :
// *********************************************************************
// This fuction would only be called when the Root (icon) menu is first displayed
void _DisplayIconMenu(void)
{
_bMENUTemp2 = GET_MENU_ITEM_NUM(_pTempMenu);
//Brian1.24a, bmp/font icon use the same layout
/*
#ifdef REMOVE_SETUP_ICON
GDI_DRAW_FRAME(GET_MENU_X(_pTempMenu), // left
GET_MENU_Y(_pTempMenu), // top
GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-4, // right//Iris0318
GET_MENU_Y(_pTempMenu)+ (MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT)*GET_MENU_ROW(_pTempMenu)+MENU_BORDER_THICKNESS*2-1-MENU_ICON_Y_OFFSET, // bottom
OSDMENU_ENTRY_MENU_COLOR_BRIGHT, // bColorBright
OSDMENU_ENTRY_MENU_COLOR_DARK, // bColorDark
OSDMENU_ENTRY_MENU_COLOR_CENTER, // bColorCenter
FRAME_POP, //FRAME_POP_SOLID, // bStyle //Iris0312
MENU_BORDER_THICKNESS // bThickness
);//xuli1118
#endif
*/
for (_bMENUTemp=0; _bMENUTemp <_bMENUTemp2; _bMENUTemp++)
{
#ifdef REMOVE_SETUP_ICON
GDI_SetTextColor(TEXT_SHADOW_COLOR_1, OSDMENU_ENTRY_TEXT_COLOR_DISABLE); //OSDMENU_ENTRY_MENU_COLOR_CENTER);
GDI_SetTextColor(TEXT_SHADOW_COLOR_2, OSDMENU_ENTRY_TEXT_COLOR_NORMAL); //OSDMENU_ENTRY_MENU_COLOR_CENTER);
#endif
// check if disable
if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_ITEM)
//if (GET_MENU_ENABLE(_pTempMenu) != NULL) // the _bEnabelxxx exist
{
if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8)))
{
#ifndef REMOVE_SETUP_ICON
// item is enabled, set the text color as normal color
if (_bMENUTemp == __bMENUSelect[__bMENUCurrentLevel])
_wMENUTemp = BUTTON_HIGHLIGHT;
else
_wMENUTemp = BUTTON_NORMAL; //|BUTTON_WITH_TEXT;
#else
// item is enabled, set the text color as normal color
if (_bMENUTemp == __bMENUSelect[__bMENUCurrentLevel])
{
_wMENUTemp = OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT;
// GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_ORANGE);
GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_BLUE); //Brian1.24a //Iris0312
}
else
{
_wMENUTemp = OSDMENU_ENTRY_ITEM_COLOR_NORMAL;
// GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_ORANGE);
GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_BLUE); //Brian1.24a //Iris0312
}
#endif
}
else
{
#ifndef REMOVE_SETUP_ICON
// item is disabled, set the text color as disable color
_wMENUTemp = BUTTON_DISABLED; //|BUTTON_WITH_TEXT;
#else
_wMENUTemp = OSDMENU_ENTRY_ITEM_COLOR_NORMAL;
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_DISABLE);
GDI_SetTextColor(TEXT_SHADOW_COLOR_2, OSDMENU_ENTRY_DESC_TEXT_COLOR); //OSDMENU_ENTRY_MENU_COLOR_CENTER);
#endif
}
}
#ifndef REMOVE_SETUP_ICON
// just for test
switch(_bMENUTemp)
{
case 0:
__wGDIString[1] = BUTTON_ID_LANGUAGE;
break;
case 1:
__wGDIString[1] = BUTTON_ID_SCREEN;
break;
case 2:
__wGDIString[1] = BUTTON_ID_AUDIO;
break;
case 3:
__wGDIString[1] = BUTTON_ID_CUSTOM;
break;
case 4:
__wGDIString[1] = BUTTON_ID_EXIT;
break;
}
// Brian1.08a
#ifdef SUPPORT_SETUP_HORIZONTAL_ICON_MENU
// arrange the icon menu in horizontal direction here
GDI_DRAW_BUTTON(GET_MENU_X(_pTempMenu)+(MENU_ICON_X_OFFSET+MENU_ICON_WIDTH)*_bMENUTemp, // left
GET_MENU_Y(_pTempMenu), // top
GET_MENU_X(_pTempMenu)+(MENU_ICON_X_OFFSET+MENU_ICON_WIDTH)*_bMENUTemp+MENU_ICON_WIDTH-1, // right
GET_MENU_Y(_pTempMenu)+MENU_ICON_HEIGHT-1, // bottom
__wGDIString[1], // bButtonId
_wMENUTemp // bStyle
);
#else
GDI_DRAW_BUTTON(GET_MENU_X(_pTempMenu), // left
GET_MENU_Y(_pTempMenu)+ (MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT)*_bMENUTemp, // top
GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1, // right
GET_MENU_Y(_pTempMenu)+(MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT)*_bMENUTemp+MENU_ICON_HEIGHT-1, // bottom
__wGDIString[1], // bButtonId
_wMENUTemp // bStyle
);
#endif
#else //#ifndef REMOVE_SETUP_ICON
GDI_SetTextColor(TEXT_BG_COLOR, _wMENUTemp);
// Brian1.24a
GDI_DRAW_FRAME(GET_MENU_X(_pTempMenu), // left
GET_MENU_Y(_pTempMenu)+ (MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT+4)*_bMENUTemp, // top
GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-5, // right
GET_MENU_Y(_pTempMenu)+(MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT+4)*_bMENUTemp+MENU_ICON_HEIGHT+3, // bottom
OSDMENU_ENTRY_MENU_COLOR_BRIGHT, // bColorBright
OSDMENU_ENTRY_MENU_COLOR_DARK, // bColorDark
OSDMENU_ENTRY_MENU_COLOR_CENTER, // bColorCenter
FRAME_POP, //FRAME_POP, //FRAME_POP_SOLID, // bStyle
2 // bThickness
);
switch(_bMENUTemp)
{
case 0:
__wGDIString[1] = CHAR_SETUP_LANG1;
__wGDIString[2] = CHAR_SETUP_LANG2;
break;
case 1:
__wGDIString[1] = CHAR_SETUP_SCRN1;
__wGDIString[2] = CHAR_SETUP_SCRN2;
break;
case 2:
__wGDIString[1] = CHAR_SETUP_AUDIO1;
__wGDIString[2] = CHAR_SETUP_AUDIO2;
GDI_SetTextColor(TEXT_SHADOW_COLOR_1, OSDSETUP_ENTRY_ICON_COLOR_GREEN); //Brian1.24a //Iris0318
GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_ORANGE); //Brian1.24a //Iris0312
break;
case 3:
__wGDIString[1] = CHAR_SETUP_CUSTOM1;
__wGDIString[2] = CHAR_SETUP_CUSTOM2;
GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_ORANGE); //Brian1.24a //Iris0312
break;
case 4:
__wGDIString[1] = CHAR_SETUP_EXIT1;
__wGDIString[2] = CHAR_SETUP_EXIT2;
GDI_SetTextColor(TEXT_SHADOW_COLOR_1, OSDSETUP_ENTRY_ICON_COLOR_RED); //Brian1.24a //Iris0318
GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_ORANGE); //Brian1.24a //Iris0312
break;
}
__wGDIString[0]=2;
GDI_DRAW_STRING(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS,GET_MENU_Y(_pTempMenu)+ (MENU_ICON_Y_OFFSET+MENU_ICON_HEIGHT+4)*_bMENUTemp+MENU_BORDER_THICKNESS); // Brian1.24a //xuli1118
switch(_bMENUTemp)
{
case 0:
__wGDIString[1] = CHAR_SETUP_LANG3;
__wGDIString[2] = CHAR_SETUP_LANG4;
break;
case 1:
__wGDIString[1] = CHAR_SETUP_SCRN3;
__wGDIString[2] = CHAR_SETUP_SCRN4;
break;
case 2:
__wGDIString[1] = CHAR_SETUP_AUDIO3;
__wGDIString[2] = CHAR_SETUP_AUDIO4;
GDI_SetTextColor(TEXT_SHADOW_COLOR_1, OSDSETUP_ENTRY_ICON_COLOR_GREEN); //Brian1.24a //Iris0318
GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_ORANGE); //Brian1.24a //Iris0312
break;
case 3:
__wGDIString[1] = CHAR_SETUP_CUSTOM3;
__wGDIString[2] = CHAR_SETUP_CUSTOM4;
GDI_SetTextColor(TEXT_FG_COLOR, OSDSETUP_ENTRY_ICON_COLOR_ORANGE); //Brian1.24a //Iris0312
break;
case 4:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -