📄 menu.c
字号:
#else
MenuShowReturn();
MenuShowStr(SubMenuWin.Hs + 1, SubMenuWin.Vs + 2, StrLanguage, SubStrColor);
MenuShowStr(SubMenuWin.Hs + 1, SubMenuWin.Vs + 3, StrOsdTime, SubStrColor);
MenuShowStr(SubMenuWin.Hs + 1, SubMenuWin.Vs + 4, StrPowerSave, SubStrColor);
MenuShowStr(SubMenuWin.Hs + 1, SubMenuWin.Vs + 5, StrReset, SubStrColor);
OsdClearLine(SubMenuWin.Vs + 7);
AdjLanguage(SHOWONLY, SubPctColor);
AdjOsdTime(SHOWONLY, SubPctColor);
AdjPowerSave(SHOWONLY, SubPctColor);
Alignment = LEFT;
StringWidth = OSD_FRAME_WIDTH - 4;
if (IsWidthPanel()) {
OsdAttrib(OSD_1BITFONT, SubStrColor);
OsdSpecPrint(SubMenuWin.Hs + 1, SubMenuWin.Vs + 6, StrDispZoom);
Adj4B3Disp(SHOWONLY, SubPctColor);
}
else {
OsdAttrib(OSD_1BITFONT, DARKGRAY);
OsdSpecPrint(SubMenuWin.Hs + 1, SubMenuWin.Vs + 6, StrDispZoom);
Adj4B3Disp(SHOWONLY, DARKGRAY);
}
MaxSubMenuItem = 6;
#if EN_CMWIN
MenuShowStr(SubMenuWin.Hs + 1, SubMenuWin.Vs + 7, StrCMWin, SubStrColor);
AdjCMWindow(SHOWONLY, SubPctColor);
MaxSubMenuItem = 7;
#endif
#endif
}
#if EN_ACEROSD
#else
/*
********************************************************************************
* 函 数 名: ShowSubItemGBC
* 功能描述: 显示图形口输入条件下的亮度和对比度等的子菜单
* 输 入: 无
* 返 回: 无
********************************************************************************
*/
static void MenuShowSubItemGBC(void)
{
MenuShowReturn();
MenuShowStr(SubMenuWin.Hs + 1, SubMenuWin.Vs + 2, StrBrightness, SubStrColor);
MenuShowStr(SubMenuWin.Hs + 1, SubMenuWin.Vs + 3, StrContrast, SubStrColor);
MenuShowStr(SubMenuWin.Hs + 1, SubMenuWin.Vs + 4, StrBackLight, SubStrColor);
OsdClearLine(SubMenuWin.Vs + 5);
OsdClearLine(SubMenuWin.Vs + 6);
OsdClearLine(SubMenuWin.Vs + 7);
AdjBri(SHOWONLY, SubPctColor);
AdjCon(SHOWONLY, SubPctColor);
AdjBacklight(SHOWONLY, SubPctColor);
MaxSubMenuItem = 4;
}
#endif
/*
********************************************************************************
* 函 数 名: MenuMain
* 功能描述: 产生主菜单画面
* 输 入: 无
* 返 回: 无
********************************************************************************
*/
void MenuShowMain(void)
{
#if EN_ACEROSD //chen 08-04-15
Flg_EnBurning = 0;
CtrlParReset();
CtrlOsdParReset();
OsdSetWin(&BackMenuWin); //菜单背景
OsdSetWin(&SubMenuWin);
MenuShowMainCornerIcon();
MenuShowKey();
// MenuShowSysState(); // 显示状态
// MenuShowRes();
MenuBottomInfo(); // 显示提示
FontIndexBuf = FontIndex;
MenuShowSubItem();
MenuState = MENU_KEY;
CtrlDispCursor();
OsdEnable();
#else
Flg_EnBurning = 0;
CtrlParReset();
CtrlOsdParReset();
OsdSetWin(&BackMenuWin); //菜单背景
OsdSetWin(&SubMenuWin);
OsdWinGradient(SubMenuWin.No, 0xEE, 0x12); //辅助菜单窗口(灰阶过度)
MenuShowKey();
MenuShowSysState(); // 显示状态
MenuShowRes();
MenuBottomInfo(); // 显示提示
FontIndexBuf = FontIndex;
MenuShowSubItem();
MenuState = MENU_KEY;
CtrlDispCursor();
OsdEnable();
#endif
}
void MenuShowRes(void)
{
#if EN_ACEROSD
uint8 xdata str[15];
uint8 len, Idx;
// 显示分辨率
OsdAttrib(OSD_1BITFONT, WHITE);
StringWidth = 14;
Alignment = LEFT;
// 不正常条件下的信息显示
if (SysState != SYS_NORMAL) {
OsdSpecPrint(SubMenuWin.Hs + 8, SubMenuWin.Vs + 7, StrFreeRun);
return;
}
Idx = 1;
len = HexToDisp(1, DispModeWidth, str + Idx);
Idx += len;
str[Idx++] = _XX;
if (Flg_Interlace) len = HexToDisp(1, DispModeHeight<<1, str+Idx);
else len = HexToDisp(1, DispModeHeight, str+Idx);
Idx += len;
str[0] = Idx - 1;
OsdSpecPrint(SubMenuWin.Hs + 12, SubMenuWin.Vs + MENU_Y_RES, str);
Idx = 1;
str[Idx++] = _H;
str[Idx++] = _MAOHAO;
len = HexToDisp(1, Hfre/100, str + Idx);
Idx += len;
str[Idx++] = _k;
str[Idx++] = _H;
str[Idx++] = _z;
str[Idx++] = __;
str[Idx++] = __;
str[Idx++] = __;
str[Idx++] = __;
str[Idx++] = _V;
str[Idx++] = _MAOHAO;
len = HexToDisp(1, (Vfre + 50)/100, str + Idx);
Idx += len;
str[Idx++] = _H;
str[Idx++] = _z;
str[0] = Idx - 1;
OsdSpecPrint(SubMenuWin.Hs + 10, SubMenuWin.Vs + MENU_Y_RES + 2, str);
OsdSpecPrint(SubMenuWin.Hs + 12, SubMenuWin.Vs + MENU_Y_RES + 4, StrVGAInput);
OsdSpecPrint(SubMenuWin.Hs + 11, SubMenuWin.Vs + MENU_Y_RES + 6, StrT_FWVer);
str[0] = 1;
str[1] = _MAOHAO;
OsdSpecPrint(SubMenuWin.Hs + 15, SubMenuWin.Vs + MENU_Y_RES + 6, str);
OsdSpecPrint(SubMenuWin.Hs + 16, SubMenuWin.Vs + MENU_Y_RES + 6, StrVersion);
// str = StrRelease;
// OsdSpecPrint(SubMenuWin.Hs + 10, SubMenuWin.Vs+MENU_Y_RES+6, StrT_Release);
// OsdSpecPrint(SubMenuWin.Hs + 15, SubMenuWin.Vs+MENU_Y_RES+6, str);
// OsdSpecPrint(SubMenuWin.Hs + 16, SubMenuWin.Vs+MENU_Y_RES+6, StrRelease);
// Idx += len;
// str[Idx++] = _H;
// str[Idx] = _z;
// str[0] = Idx;
// OsdSpecPrint(SubMenuWin.He - 14, SubMenuWin.Ve, str);
#else
uint8 xdata str[15];
uint8 len, Idx;
// 显示分辨率
OsdAttrib(OSD_1BITFONT, CYAN);
StringWidth = 14;
Alignment = RIGHT;
// 不正常条件下的信息显示
if (SysState != SYS_NORMAL) {
OsdSpecPrint(SubMenuWin.He - 13, SubMenuWin.Ve, StrFreeRun);
return;
}
Idx = 1;
len = HexToDisp(1, DispModeWidth, str + Idx);
Idx += len;
str[Idx++] = _XX;
if (Flg_Interlace) len = HexToDisp(1, DispModeHeight<<1, str+Idx);
else len = HexToDisp(1, DispModeHeight, str+Idx);
Idx += len;
str[Idx++] = '@';
len = HexToDisp(1, (Vfre + 50)/100, str + Idx);
Idx += len;
str[Idx++] = _H;
str[Idx] = _z;
str[0] = Idx;
OsdSpecPrint(SubMenuWin.He - 14, SubMenuWin.Ve, str);
#endif
}
/*
********************************************************************************
* 函 数 名: MenuShowSysState
* 功能描述: 显示系统的状态信息
* 输 入: 无
* 返 回: 无
********************************************************************************
*/
void MenuShowSysState(void)
{
uint8 *str;
uint8 val, SysState_posX, SysState_posY;
#if EN_ACEROSD
SysState_posX = SubMenuWin.Hs + 1;
SysState_posY = SubMenuWin.Ve - 1;
#else
SysState_posX = SubMenuWin.Hs;
SysState_posY = SubMenuWin.Ve;
#endif
OsdAttrib(OSD_1BITFONT, GREEN);
str = Icon_State_Analog;
OsdShowStr(SysState_posX, SysState_posY, str, 2);
if (SysPar.Flag & FLAG_AUDIOMUTE) str = Icon_MuteOn;
else str = Icon_MuteOff;
OsdShowStr(SysState_posX + 2, SysState_posY, str, 2);
if (SysPar.ColorTemp == COLOR_9300) str = Icon_State_9300;
else if (SysPar.ColorTemp == COLOR_6500) str = Icon_State_6500;
else str = Icon_State_User;
OsdShowStr(SysState_posX + 4, SysState_posY, str, 2);
OsdAttrib(OSD_1BITFONT + OSD_BLINK, MAGENTA);
if (SysPar.Flag & FLAG_BURNIN) val = 39;
else val = 0x00;
OsdShowChar(SysState_posX + 7, SysState_posY, val);
OsdAttrib(OSD_1BITFONT + OSD_BLINK, RED);
if (Flg_Factory) val = 38;
else val = 0x00;
OsdShowChar(SysState_posX + 8, SysState_posY, val);
}
/*
********************************************************************************
* 函 数 名: MenuBottomInfo
* 功能描述: 显示OSD菜单的底部提示信息
* 输 入: 无
* 返 回: 无
********************************************************************************
*/
void MenuBottomInfo(void)
{
#if EN_ACEROSD
Alignment = LEFT;
StringWidth = 10;
OsdAttrib(OSD_1BITFONT, WHITE);
OsdSpecPrint(BackMenuWin.Hs + 3, BackMenuWin.Ve - 1, StrMove);
OsdSpecPrint(BackMenuWin.Hs + 16, BackMenuWin.Ve - 1, StrExit);
OsdSpecPrint(BackMenuWin.Hs + 27, BackMenuWin.Ve - 1, StrEnter);
OsdShowStr(BackMenuWin.Hs + 1, BackMenuWin.Ve - 1, Icon_Move, 2);
OsdShowStr(BackMenuWin.Hs + 13, BackMenuWin.Ve - 1, Icon_Auto, 3);
OsdShowStr(BackMenuWin.Hs + 24, BackMenuWin.Ve - 1, Icon_Menu, 3);
#endif
}
OSDWIN code BurnInfoWin = {
WIN8, // No; 窗口号
0, // Hs; 水平起始位置,单位是字符
(OSD_FRAME_WIDTH + OSD_BURNWIN_WIDTH)/2 - 1, // He; 水平结束位置,单位是字符
0, // Vs; 垂直起始位置,单位是字符
OSD_BURNWIN_HEIGHT - 1, // Ve; 垂直结束位置,单位是字符
0x00, // Attr; 窗口属性
RED, // Color; 窗口的背景颜色,将取代字符的背景色
DARKGRAY, // SdColor; 阴影的颜色
0x02, // BL_Width; 窗口边框的宽度
DARKGRAY, // BL_RCL; 窗口边框的右边颜色
WHITE, // BL_LCL; 窗口边框的左边颜色
};
uint8 code StrBurning[] = {13, _B,_u,_r,_n,_i,_n,_g,_DOT,_DOT,_DOT,_DOT,_DOT,_DOT};
/*
********************************************************************************
* 函 数 名: MenuBurning
* 功能描述: 显示正在老化的提示信息
* 输 入: 无
* 返 回: 无
********************************************************************************
*/
void MenuBurning(void)
{
CtrlParReset();
CtrlOsdParReset();
OsdSetWin(&BurnInfoWin);
OsdAttrib(OSD_1BITFONT, YELLOW);
StringWidth = OSD_FRAME_WIDTH;
Alignment = CENTER;
OsdSpecPrint(0, (OSD_BURNWIN_HEIGHT - 1)/2, StrBurning);
OsdEnable();
MenuState = MENU_BURNIN;
}
OSDWIN code InfoWin = {
WIN8, // No; 窗口号
(OSD_FRAME_WIDTH - OSD_INFOWIN_WIDTH)/2, // Hs; 水平起始位置,单位是字符
(OSD_FRAME_WIDTH + OSD_INFOWIN_WIDTH)/2 - 1, // He; 水平结束位置,单位是字符
(OSD_FRAME_HEIGHT - OSD_INFOWIN_HEIGHT)/2, // Vs; 垂直起始位置,单位是字符
(OSD_FRAME_HEIGHT + OSD_INFOWIN_HEIGHT)/2 - 1, // Ve; 垂直结束位置,单位是字符
#if EN_ACEROSD
0, // Attr; 窗口属性
BACKWINPALETTE, // Color; 窗口的背景颜色,将取代字符的背景色
#else
WIN_EN_BEVEL + WIN_BL_TYPE2, // Attr; 窗口属性
LIGHTGRAY, // Color; 窗口的背景颜色,将取代字符的背景色
#endif
DARKGRAY, // SdColor; 阴影的颜色
0x01, // BL_Width; 窗口边框的宽度
DARKGRAY, // BL_RCL; 窗口边框的右边颜色
WHITE, // BL_LCL; 窗口边框的左边颜色
};
/*
********************************************************************************
* 函 数 名: MenuShowInfo
* 功能描述: 在屏幕中间显示一个提示信息
* 输 入: 无
* 返 回: 无
********************************************************************************
*/
void MenuShowInfo(uint8 *str, uint8 color, uint8 b_color)
{
#if EN_ACEROSD
uint8 xdata buf[1];
uint16 Pos;
CtrlParReset();
CtrlOsdParReset();
OsdSetWin(&InfoWin);
Pos = MenuGetStrPos(str);
OsdAttrib(OSD_1BITFONT, color);
OsdBorder(0xFF, b_color);
StringWidth = OSD_FRAME_WIDTH;
Alignment = CENTER;
OsdSpecPrint(0, InfoWin.Vs + 1, str + Pos);
OsdAttrib(OSD_2BITFONT, PALETTE_MAINCORNER);
buf[0] = ICON_MAINCORNER;
OsdShowStr(InfoWin.Hs,InfoWin.Vs,buf,1);
buf[0] = ICON_MAINCORNER + 1;
OsdShowStr(InfoWin.He,InfoWin.Vs,buf,1);
buf[0] = ICON_MAINCORNER + 2;
OsdShowStr(InfoWin.Hs,InfoWin.Ve,buf,1);
buf[0] = ICON_MAINCORNER + 3;
OsdShowStr(InfoWin.He,InfoWin.Ve,buf,1);
#else
uint16 Pos;
CtrlParReset();
CtrlOsdParReset();
OsdSetWin(&InfoWin);
Pos = MenuGetStrPos(str);
OsdAttrib(OSD_1BITFONT, color);
OsdBorder(InfoWin.Vs + 1, b_color);
StringWidth = OSD_FRAME_WIDTH;
Alignment = CENTER;
OsdSpecPrint(0, InfoWin.Vs + 1, str + Pos);
#endif
MenuState = MENU_INFO;
OsdEnable();
}
/*
********************************************************************************
* 函 数 名: MenuShowNoSync
* 功能描述: 显示没有同步信号的提示信息
* 输 入: 无
* 返 回: 无
********************************************************************************
*/
void MenuShowNoSync(void)
{
#if EN_ACEROSD
MenuShowInfo(StrNoSync, WHITE, WHITE);
#else
MenuShowInfo(StrNoSync, LIGHTRED, WHITE);
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -