📄 menu.c
字号:
/*
********************************************************************************
* 函 数 名: MenuShowOutOfRange
* 功能描述: 显示同步信号超出范围的提示信息
* 输 入: 无
* 返 回: 无
********************************************************************************
*/
void MenuShowOutOfRange(void)
{
#if EN_ACEROSD
MenuShowInfo(StrOutSync, WHITE, WHITE);
#else
MenuShowInfo(StrOutSync, LIGHTRED, WHITE);
#endif
}
OSDWIN code ShortMenuWin = {
WIN8, // No; 窗口号
0, // Hs; 水平起始位置,单位是字符
OSD_FRAME_WIDTH - 1, // He; 水平结束位置,单位是字符
#if EN_ACEROSD
#if USE_DAEWOO
22, // Vs; 垂直起始位置,单位是字符
23, // Ve; 垂直结束位置,单位是字符
#else
24, // Vs; 垂直起始位置,单位是字符
25, // Ve; 垂直结束位置,单位是字符
#endif
#else
11, // Vs; 垂直起始位置,单位是字符
12, // Ve; 垂直结束位置,单位是字符
#endif
WIN_EN_BEVEL + WIN_BL_TYPE2, // Attr; 窗口属性
LIGHTGRAY, // Color; 窗口的背景颜色,将取代字符的背景色
DARKGRAY, // SdColor; 阴影的颜色
0x01, // BL_Width; 窗口边框的宽度
DARKGRAY, // BL_RCL; 窗口边框的右边颜色
WHITE, // BL_LCL; 窗口边框的左边颜色
};
/*
********************************************************************************
* 函 数 名: MenuShowShortWin
* 功能描述: 显示一个用于快捷方式的窗口
* 输 入: 无
* 返 回: 无
********************************************************************************
*/
void MenuShowShortWin(void)
{
OsdSetDispCBD();
OsdBorder(ShortMenuWin.Vs, BLACK);
OsdBorder(ShortMenuWin.Vs + 1, BLACK);
}
/*
********************************************************************************
* 函 数 名: MenuShowShortAdj
* 功能描述: 显示一个参数快捷调整的窗口, 可以被快捷调整的参数是三个: 亮度/对比度/音量
* 输 入: 无
* 返 回: 无
********************************************************************************
*/
void MenuShowShortAdj(void)
{
OsdClearLine(ShortMenuWin.Vs);
switch (MenuState) {
case MENU_OFF:
case MENU_MUTEINFO:
case MENU_SOURCEINFO:
MenuShowShortWin();
MenuShowShortBri();
break;
case MENU_SHORT_BRI:
MenuShowShortCon();
break;
#if USE_AUDIO
case MENU_SHORT_CON:
MenuShowShortVol();
break;
case MENU_SHORT_VOL:
CtrlOsdReset();
break;
#else
case MENU_SHORT_CON:
CtrlOsdReset();
break;
#endif
}
}
/*
********************************************************************************
* 函 数 名: MenuShowShortBri
* 功能描述: 显示一个亮度快捷调整的窗口.
* 输 入: 无
* 返 回: 无
********************************************************************************
*/
static void MenuShowShortBri(void)
{
MenuShowStr(1, ShortMenuWin.Vs, StrBrightness, ShortAdjStrColor);
ParAdjState = ADJPAR_BRIGHTNESS;
MenuState = MENU_SHORT_BRI;
AdjBri(SHOWONLY, 0);
Flg_ParAdj = 1;
}
/*
********************************************************************************
* 函 数 名: MenuShowShortCon
* 功能描述: 显示一个对比度快捷调整的窗口.
* 输 入: 无
* 返 回: 无
********************************************************************************
*/
static void MenuShowShortCon(void)
{
MenuShowStr(1, ShortMenuWin.Vs, StrContrast, ShortAdjStrColor);
ParAdjState = ADJPAR_CONTRAST;
MenuState = MENU_SHORT_CON;
AdjCon(SHOWONLY, 0);
Flg_ParAdj = 1;
}
#if USE_AUDIO
/*
********************************************************************************
* 函 数 名: MenuShowShortVol
* 功能描述: 显示一个音量快捷调整的窗口.
* 输 入: 无
* 返 回: 无
********************************************************************************
*/
void MenuShowShortVol(void)
{
#if EN_ACEROSD
MenuShowStr(5, ShortMenuWin.Vs, StrVolume, ShortAdjStrColor);
ParAdjState = ADJPAR_VOLUME;
MenuState = MENU_SHORT_VOL;
AdjVolume(SHOWONLY, 0);
Flg_ParAdj = 1;
#else
MenuShowStr(1, ShortMenuWin.Vs, StrVolume, ShortAdjStrColor);
ParAdjState = ADJPAR_VOLUME;
MenuState = MENU_SHORT_VOL;
AdjVolume(SHOWONLY, 0);
Flg_ParAdj = 1;
#endif
}
#endif
#if EN_ACEROSD
/*
********************************************************************************
* 函 数 名: MenuShowSelectStr
* 功能描述: 显示选中的字符串
* 输 入: 无
* 返 回: 无
********************************************************************************
*/
void MenuShowSelectStr(void)
{
uint8 tmpColor,*str;
if(Flg_ParAdj) tmpColor = ENADJ_COLOR;
else tmpColor = DISADJ_COLOR;
Alignment = LEFT;
StringWidth = SubMenuWin.He - SubMenuWin.Hs - 1;
if(KeyMenuCursor == 0)
{
#if USE_DAEWOO
if(SubMenuCursor == 0) str = StrBrightness;
else if(SubMenuCursor == 1) str = StrContrast;
else if(SubMenuCursor == 2) str = StrHpos;
else if(SubMenuCursor == 3) str = StrVpos;
else if(SubMenuCursor == 4) str = StrClock;
else if(SubMenuCursor == 5) str = StrPhase;
else if(SubMenuCursor == 6) str = StrColor;
else if(SubMenuCursor == 7) str = StrAutoAdjust;
#else
if(SubMenuCursor == 0) str = StreColorManagement;
else if(SubMenuCursor == 1) str = StrBrightness;
else if(SubMenuCursor == 2) str = StrContrast;
else if(SubMenuCursor == 3) str = StrHpos;
else if(SubMenuCursor == 4) str = StrVpos;
else if(SubMenuCursor == 5) str = StrClock;
else if(SubMenuCursor == 6) str = StrPhase;
else if(SubMenuCursor == 7) str = StrColor;
else if(SubMenuCursor == 8) str = StrAutoAdjust;
#endif
if(SubMenuCursor != 8)
MenuShowStr(SubMenuWin.Hs + 1, SubMenuWin.Vs + 3 + SubMenuCursor * 2, str, tmpColor);
}
else if(KeyMenuCursor == 1)
{
if(SubMenuCursor == 0) str = StrHpos;
else if(SubMenuCursor == 1) str = StrVpos;
else if(SubMenuCursor == 2) str = StrOsdTime;
MenuShowStr(SubMenuWin.Hs + 1, SubMenuWin.Vs + 3 + SubMenuCursor * 2, str, tmpColor);
}
#if USE_AUDIO
else if(KeyMenuCursor == 2)
{
if(SubMenuCursor == 0) str = StrMute;
else if(SubMenuCursor == 1) str = StrVolume;
MenuShowStr(SubMenuWin.Hs + 1, SubMenuWin.Vs + 3 + SubMenuCursor * 2, str, tmpColor);
}
else if(KeyMenuCursor == 3)
{
if(SubMenuCursor == 0) str = StrWideMode;
else if(SubMenuCursor == 1) str = StrDDC_CI;
else if(SubMenuCursor == 2) str = StrACM;
else if(SubMenuCursor == 3) str = StrSource;
else if(SubMenuCursor == 4) str = StrLanguage;
else if(SubMenuCursor == 5) str = StrReset;
if(SubMenuCursor != 5)
#if EN_720MODE
{
if(SubMenuCursor == 2)
{
str = Str720Mode;
OsdAttrib(OSD_1BITFONT, tmpColor);
OsdSpecPrint(SubMenuWin.Hs + 1, SubMenuWin.Vs + 3 + SubMenuCursor * 2, str);
}
else
#endif
MenuShowStr(SubMenuWin.Hs + 1, SubMenuWin.Vs + 3 + SubMenuCursor * 2, str, tmpColor);
#if EN_720MODE
}
#endif
}
#else
else if(KeyMenuCursor == 2)
{
if(SubMenuCursor == 0) str = StrWideMode;
else if(SubMenuCursor == 1) str = StrDDC_CI;
else if(SubMenuCursor == 2) str = StrACM;
else if(SubMenuCursor == 3) str = StrSource;
else if(SubMenuCursor == 4) str = StrLanguage;
else if(SubMenuCursor == 5) str = StrReset;
if(SubMenuCursor != 5)
// MenuShowStr(SubMenuWin.Hs + 1, SubMenuWin.Vs + 3 + SubMenuCursor * 2, str, tmpColor);
#if EN_720MODE
{
if(SubMenuCursor == 2)
{
str = Str720Mode;
OsdAttrib(OSD_1BITFONT, tmpColor);
OsdSpecPrint(SubMenuWin.Hs + 1, SubMenuWin.Vs + 3 + SubMenuCursor * 2, str);
}
else
#endif
MenuShowStr(SubMenuWin.Hs + 1, SubMenuWin.Vs + 3 + SubMenuCursor * 2, str, tmpColor);
#if EN_720MODE
}
#endif }
#endif
}
#endif
#if EN_LOGO
#include "baosaite.h"
#define LogoZoom 2
#define LogoLen 30
#define LogoHigh 9
#define SM_OSDHPOS (PanelWidth - (uint16)12 * LogoZoom * LogoLen)/2
#define SM_OSDVPOS (PanelHeight - (uint16)18 * LogoHigh * LogoZoom)/2
void MenuShowLogo(void)
{
uint8 i;
uint16 xdata Addr;
// 装载用于快速清除屏幕的字符数据
// 否则在冷开机的时候会出现花屏
OsdSetFrame(LogoLen, LogoHigh);
Addr = ((uint16)LogoLen + 1) * (LogoHigh + 1);
WrScalarWord(rP088, Addr);
Addr += 27;
WrScalarWord(rP08A, Addr);
Addr = Addr + ((uint16)sizeof(Logo_Font)/3);
WrScalarWord(rP08C, Addr);
WrScalarPort(PORT_OSD_PALLETE, 16, Logo_Palette, sizeof(Logo_Palette));
WrScalarPort(PORT_OSD_2BF, 0x00, Logo_Font, sizeof(Logo_Font));
OsdLoadBlankFont();
SyncFreeRun();
SetTimerEvent(EVENT_SYSREST, 0x00);
// SarSetBackGround(0x80,0x80,0x80);
SarSetBackGround(0xff,0xff,0xff); //chen 08-04-14
OsdClear();
OsdHpos(SM_OSDHPOS);
OsdVpos(SM_OSDVPOS);
OsdAttrib(OSD_2BITFONT, 0x10);
OsdZoom(LogoZoom - 1, LogoZoom - 1);
for (i = 0; i < LogoHigh; i++) {
OsdShowStr(0, i, Logo_Index + i * LogoLen, LogoLen);
}
OsdEnable();
for (i = 0; i < 200; i++) {
if (Flg_SyncInt) {
SyncClearIntFlag();
Flg_SyncInt = 0;
}
else Delay(10);
}
DisplayMute(ON);
OsdClear(); // 增加这条函数调用可以避免加载四色调色板出错
OsdSetFrame(OSD_FRAME_WIDTH, OSD_FRAME_HEIGHT);
OsdInitFontIndex();
OsdLoadPallete();
}
#endif
OSDWIN code SysInfoWin = {
WIN8, // No; 窗口号
0, // Hs; 水平起始位置,单位是字符
OSD_FRAME_WIDTH-1, // He; 水平结束位置,单位是字符
(OSD_FRAME_HEIGHT - 6)/2, // Vs; 垂直起始位置,单位是字符
(OSD_FRAME_HEIGHT - 6)/2 + 6, // Ve; 垂直结束位置,单位是字符
0x00, // Attr; 窗口属性
BLUE, // Color; 窗口的背景颜色,将取代字符的背景色
DARKGRAY, // SdColor; 阴影的颜色
0x02, // BL_Width; 窗口边框的宽度
DARKGRAY, // BL_RCL; 窗口边框的右边颜色
WHITE, // BL_LCL; 窗口边框的左边颜色
};
uint8 code StrHex[] = {_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_A,_B,_C,_D,_E,_F};
void MenuShowHex(uint8 x, uint8 y, uint8 val)
{
uint8 buf[5];
buf[0] = 0x05;
buf[1] = '(';
buf[2] = StrHex[(val>>4) & 0x0F];
buf[3] = StrHex[val & 0x0F];
buf[4] = _H;
buf[5] = ')';
OsdSpecPrint(x, y, buf);
}
/*
********************************************************************************
* 函 数 名: MenuShowSysInfo
* 功能描述: 显示当前系统的版本信息
* 输 入: 无
* 返 回: 无
********************************************************************************
*/
void MenuShowSysInfo(void)
{
uint8 i;
CtrlParReset();
CtrlOsdParReset();
OsdSetWin(&SysInfoWin);
OsdAttrib(OSD_1BITFONT, YELLOW);
Alignment = LEFT;
StringWidth = 7;
OsdSpecPrint(SysInfoWin.Hs + 1, SysInfoWin.Vs + 1, StrT_Borad);
OsdSpecPrint(SysInfoWin.Hs + 1, SysInfoWin.Vs + 2, StrT_FWVer);
OsdSpecPrint(SysInfoWin.Hs + 1, SysInfoWin.Vs + 3, StrT_Panel);
OsdSpecPrint(SysInfoWin.Hs + 1, SysInfoWin.Vs + 4, StrT_Release);
OsdSpecPrint(SysInfoWin.Hs + 1, SysInfoWin.Vs + 5, StrT_TunerFW);
StringWidth = 1;
for (i = 1; i < 6; i++) OsdSpecPrint(SysInfoWin.Hs + 8, SysInfoWin.Vs + i, StrT_MaoHao);
StringWidth = 17;
OsdAttrib(OSD_1BITFONT, WHITE);
OsdSpecPrint(SysInfoWin.Hs + 11, SysInfoWin.Vs + 1, StrBoard);
OsdSpecPrint(SysInfoWin.Hs + 11, SysInfoWin.Vs + 2, StrVersion);
OsdSpecPrint(SysInfoWin.Hs + 11, SysInfoWin.Vs + 3, StrPanel);
OsdSpecPrint(SysInfoWin.Hs + 11, SysInfoWin.Vs + 4, StrRelease);
MenuShowHex(SysInfoWin.Hs + 11, SysInfoWin.Vs + 5, SCRev);
OsdEnable();
MenuState = MENU_INFO;
Delay(500);
}
/*
********************************************************************************
* 文 件 结 束 *
********************************************************************************
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -