📄 osd3.c
字号:
__wGDIString[1] = CHAR_SETUP_EXIT3;
__wGDIString[2] = CHAR_SETUP_EXIT4;
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+27) // Brian1.24a //xuli1118
#endif //#ifndef REMOVE_SETUP_ICON
}
}
// *********************************************************************
// Function : _DisplayMenu
// Description : This function display the single menu
// Arguments : bItem: the item must be displayed.
// : bLevel: the level of menu, root = 0, next is 1,2,...
// Global Var : _pTempMenu: The menu
// Return : None
// Side Effect :
// *********************************************************************
void _DisplayMenu(BYTE bItem, BYTE bLevel)
{
BYTE i;
//#define OFFSCREEN_MENU
#ifdef OFFSCREEN_MENU
if(__bCurrentRegionId == 0)
GDI_SetCurrentRegion(1);
else
GDI_SetCurrentRegion(0);
// ****
// clear the scroll-up/down area first, or there may be garbage
#endif
//_pTempMenu = _SetupMenuIndex[bMenuId];
_bMENUTemp = GET_MENU_ITEM_NUM(_pTempMenu);
_bMENUTemp2 = GET_MENU_ROW(_pTempMenu);
if (_bMENUTemp2 > _bMENUTemp)
_wMENUTemp = _bMENUTemp;
else
_wMENUTemp = _bMENUTemp2;
GDI_DRAW_FRAME(GET_MENU_X(_pTempMenu), // left
GET_MENU_Y(_pTempMenu), // top
GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1, // right
GET_MENU_Y(_pTempMenu)+MENU_ITEM_HEIGHT*_wMENUTemp+MENU_BORDER_THICKNESS*2-1, // bottom
OSDMENU_ENTRY_MENU_COLOR_BRIGHT, // bColorBright
OSDMENU_ENTRY_MENU_COLOR_DARK, // bColorDark
OSDMENU_ENTRY_MENU_COLOR_CENTER, // bColorCenter
FRAME_POP_SOLID, //FRAME_POP, //FRAME_POP_SOLID, // bStyle
MENU_BORDER_THICKNESS // bThickness
);
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL);
GDI_SetTextColor(TEXT_BG_COLOR, OSDMENU_ENTRY_ITEM_COLOR_NORMAL);
if (bItem != 0xFF)
{
// first display, calculate the display range.
_wMENUTemp = (_bMENUTemp2 - 1)/2; //up-half
if (_wMENUTemp > bItem)
bItem = 0; // display starts from the first item
else
bItem = bItem - _wMENUTemp;
if (_bMENUTemp2+bItem > _bMENUTemp)
{
_wMENUTemp = _bMENUTemp2+bItem-_bMENUTemp;
if (_wMENUTemp > bItem)
{
if (_bMENUTemp2 > _bMENUTemp)
_bMENUTemp2 = _bMENUTemp;
bItem = 0; // display starts from the first item
}
else
bItem = bItem - _wMENUTemp;
}
__bMENUDisplayStart[bLevel] = bItem; // record the start item of the displaying area
}
else
{
// not first time, use the __bMENUDisplayStart
bItem = __bMENUDisplayStart[bLevel];
}
for (_bMENUTemp=bItem; (_bMENUTemp<_bMENUTemp2+bItem) && (_bMENUTemp<GET_MENU_ITEM_NUM(_pTempMenu)); _bMENUTemp++)
{
if (_bMENUTemp==bItem)
{
if (bItem != 0)
{
//if (!(__bMENUStatus[bLevel] & 0x01))
{
// Draw the scroll up mark
//GDI_FILL_RECT(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS, GET_MENU_Y(_pTempMenu)-MENU_SCROLL_HEIGHT,
// GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-MENU_BORDER_THICKNESS-1,
// GET_MENU_Y(_pTempMenu)-1,
// MENU_ITEM_COLOR_NORMAL);
if (!(__bMENUStatus[bLevel] & 0x01))
{
GDI_DRAW_FRAME(GET_MENU_X(_pTempMenu), // left
GET_MENU_Y(_pTempMenu)-MENU_SCROLL_HEIGHT, // top
GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1, // right
GET_MENU_Y(_pTempMenu)-1, // bottom
OSDMENU_ENTRY_MENU_COLOR_BRIGHT, // bColorBright
OSDMENU_ENTRY_MENU_COLOR_DARK, // bColorDark
OSDMENU_ENTRY_MENU_COLOR_CENTER, // bColorCenter
FRAME_POP_SOLID, // bStyle
MENU_BORDER_THICKNESS // bThickness
);
}
#ifdef SKIP_DISABLED_ITEM
// Brian1.05, set Up mark color to disable if all the "Up" items are disbaled, ie., can't scroll up
if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_ITEM||
GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_DIALOG)
{
for (i=0; i<bItem; i++)
{
if (*(GET_MENU_ENABLE(_pTempMenu)+i/8) & (1 << (i%8))) // if enabled
{
break; // find a enabled item
}
}
if (i==bItem)
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_DISABLE);
else
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL);
}
else
{
// it is value, just set Up mark as normal color
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL);
}
#endif
__wGDIString[1] = CHAR_N_UP_16;
__wGDIString[0] = 1;
GDI_DRAW_STRING(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS + GET_MENU_WIDTH(_pTempMenu)/2-16,
GET_MENU_Y(_pTempMenu)-MENU_SCROLL_HEIGHT+MENU_BORDER_THICKNESS);
__bMENUStatus[bLevel] |= 0x01; // set scroll-up bit
}
}
else
{
if (__bMENUStatus[bLevel] & 0x01)
{
// Clear the scroll up mark
//GDI_FILL_RECT(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS, GET_MENU_Y(_pTempMenu)-MENU_SCROLL_HEIGHT,
// GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-MENU_BORDER_THICKNESS-1,
// GET_MENU_Y(_pTempMenu)-1,
// UI_BACKGROUND_COLOR);
GDI_FILL_RECT(GET_MENU_X(_pTempMenu), // left
GET_MENU_Y(_pTempMenu)-MENU_SCROLL_HEIGHT, // top
GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1, // right
GET_MENU_Y(_pTempMenu)-1, // bottom
OSDSETUP_ENTRY_MAIN_COLOR_BG);
__bMENUStatus[bLevel] &= 0xFE; // clear scroll-up bit
}
}
}
else if (_bMENUTemp==_bMENUTemp2+bItem-1)
{
if (_bMENUTemp < GET_MENU_ITEM_NUM(_pTempMenu)-1)
{
//if (!(__bMENUStatus[bLevel] & 0x02))
{
// Draw the scroll down mark
//GDI_FILL_RECT(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS, GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT,
// GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-MENU_BORDER_THICKNESS-1,
// GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT+MENU_SCROLL_HEIGHT-1,
// MENU_ITEM_COLOR_NORMAL);
if (!(__bMENUStatus[bLevel] & 0x02))
{
GDI_DRAW_FRAME(GET_MENU_X(_pTempMenu), // left
GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT, // top
GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1, // right
GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT+MENU_SCROLL_HEIGHT-1, // bottom
OSDMENU_ENTRY_MENU_COLOR_BRIGHT, // bColorBright
OSDMENU_ENTRY_MENU_COLOR_DARK, // bColorDark
OSDMENU_ENTRY_MENU_COLOR_CENTER, // bColorCenter
FRAME_POP_SOLID, // bStyle
MENU_BORDER_THICKNESS // bThickness
);
}
#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 (*(GET_MENU_ENABLE(_pTempMenu)+i/8) & (1 << (i%8))) // if enabled
{
break; // find a enabled item
}
}
if (i==GET_MENU_ITEM_NUM(_pTempMenu))
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_DISABLE);
else
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL);
}
else
{
// it is value, just set Up mark as normal color
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL);
}
#endif
__wGDIString[1] = CHAR_N_DWN_16;
__wGDIString[0] = 1;
GDI_DRAW_STRING(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS + GET_MENU_WIDTH(_pTempMenu)/2-16,
GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*3+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT);
__bMENUStatus[bLevel] |= 0x02; // set scroll-down bit
}
}
else
{
if (__bMENUStatus[bLevel] & 0x02)
{
// Clear the scroll-down mark
//GDI_FILL_RECT(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS, GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT,
// GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-MENU_BORDER_THICKNESS-1,
// GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT+MENU_SCROLL_HEIGHT-1,
// UI_BACKGROUND_COLOR);
GDI_FILL_RECT(GET_MENU_X(_pTempMenu), // left
GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT, // top
GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-1, // right
GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+1)*MENU_ITEM_HEIGHT+MENU_SCROLL_HEIGHT-1, // bottom
OSDSETUP_ENTRY_MAIN_COLOR_BG);
__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
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL);
}
else
{
// item is disabled, set the text color as disable color
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_DISABLE);
}
}
{
// Draw single Menu Item
OSDMENU_DrawItem(bItem, _bMENUTemp, OSDMENU_ENTRY_ITEM_COLOR_NORMAL);
}
}
#ifdef OFFSCREEN_MENU
if(__bCurrentRegionId == 0)
{
GDI_BITMAP_COPY(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS, GET_MENU_Y(_pTempMenu)-MENU_ITEM_HEIGHT,
GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-MENU_BORDER_THICKNESS-1,
GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+2)*MENU_ITEM_HEIGHT-1,
GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS, GET_MENU_Y(_pTempMenu)-MENU_ITEM_HEIGHT,
0,
1,
);
GDI_SetCurrentRegion(1);
}
else
{
GDI_BITMAP_COPY(GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS, GET_MENU_Y(_pTempMenu)-MENU_ITEM_HEIGHT,
GET_MENU_X(_pTempMenu)+GET_MENU_WIDTH(_pTempMenu)-MENU_BORDER_THICKNESS-1,
GET_MENU_Y(_pTempMenu)+MENU_BORDER_THICKNESS*2+(_bMENUTemp-bItem+2)*MENU_ITEM_HEIGHT-1,
GET_MENU_X(_pTempMenu)+MENU_BORDER_THICKNESS, GET_MENU_Y(_pTempMenu)-MENU_ITEM_HEIGHT,
1,
0,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -