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

📄 menu.c

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