⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu.c

📁 NT68617源程序代码集合
💻 C
📖 第 1 页 / 共 4 页
字号:
#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 + -