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

📄 osd.c

📁 车载 液晶显示器的主控程序(主要使用芯片为 MYSON MTV512 单片机、RealTek 2323 Scare 芯片、TVP5147(视频解码)。配Sharp 8寸液晶显示器 )。
💻 C
📖 第 1 页 / 共 5 页
字号:

void COsdMiscPageItemAdjMessage(void)
{
	BYTE temp;
	if(ucOsd_Item_Index0 == 0)
	{
		//x.hu, for No signal osd show
		switch (GET_INPUTPORT_TYPE(stSystemData.InputSource))
		{
			case _DSUB_A0_PORT:
				temp = _VGA_MENU_NUM;
				break;
			#if(_VIDEO_SUPPORT == _ON)
			case _VIDEO_AV_PORT:
			case _VIDEO_AV2_PORT:
				temp = _AV_MENU_NUM;
				break;
			#endif
			default:
				break;
		}

		COsdIconItemSelection(&ucOsdState, ucKeyMessage, temp+1, temp, _MENU_1, COsdDispIconSelect);
	}
	else
	{
             if(GET_INPUTSOURCE_TYPE()==_SOURCE_VGA)
             	{
             	 //COsdIconItemSelection(&ucOsd_Item_Index0, ucKeyMessage, _MISC_NUM+1, _MISC_NUM, _ITEM_2, COsdDispItemSelect2);
             	 COsdIconItemSelection(&ucOsd_Item_Index0, ucKeyMessage, _MISC_NUM+1, _MISC_NUM, _ITEM_1, COsdDispItemSelect);
             	}
	    else
	    	{
		COsdIconItemSelection(&ucOsd_Item_Index0, ucKeyMessage, _MISC_NUM+1, _MISC_NUM, _ITEM_1, COsdDispItemSelect);
	    	}
	}
}

void COsdMiscPageValueAdjMessage(void)
{
	switch(ucOsd_Item_Index0)
	{
		//x.hu, update for audio select
		#if (_AUDIO_DEVICE != _AUDIO_NONE)
		case _MISC_VOLUME:
			COsdByteValueAdj(&stOsdUserData.Volume, _VOLUME_MAX, _VOLUME_MIN, ucKeyMessage, CAdjustVolume);

			COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stOsdUserData.Volume, _VOLUME_MAX-_VOLUME_MIN, _VOLUME_MIN,_CP_WHITE, _CP_WHITE, _SHOW_PERCENT);

			ucOsdEventMsg = _SAVE_EE_OSDUSERDATA_MSG;
			break;
		#endif
		case _MISC_ZOOM:
			COsdFxChange1bitColor(ROW(12), COL((ucOsd_Item_Index1-1)*7+9), WIDTH(2), HEIGHT(1), FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));
			if(_VALUE_UP_MESSAGE == ucKeyMessage)
			{
				ucOsd_Item_Index1 = (ucOsd_Item_Index1+1 > _MISC_ZOOM_NUM) ? _ITEM_1 : ucOsd_Item_Index1+1;
			}
			else if(_VALUE_DOWN_MESSAGE == ucKeyMessage)
			{
				ucOsd_Item_Index1 = (ucOsd_Item_Index1-1 < _ITEM_1) ? _MISC_ZOOM_NUM : ucOsd_Item_Index1-1;
			}
			COsdFxChange1bitColor(ROW(12), COL((ucOsd_Item_Index1-1)*7+9), WIDTH(2), HEIGHT(1), FGCOLOR(_CP_RED), BGCOLOR(_CP_BLACK));
			break;
	}
}

void COsdMiscPageExitMessage(void)
{
	COsdMainPageExit();
}

void COsdMiscPageSwitchMessage(void)
{

}

void COsdMiscPageIRMessage(void)
{

}

//--------------------------------------------
// Main Exit page process
//--------------------------------------------
void COsdExitPageSelectMessage(void)
{
	COsdPageExit();
}

void COsdExitPageItemAdjMessage(void)
{
	if(ucOsd_Item_Index0 == 0)
	{
		BYTE temp;

		/*
		switch(GET_INPUTSOURCE_TYPE())
		{
			case _SOURCE_VGA:
				temp = _VGA_MENU_NUM;
				break;

			#if(_VIDEO_SUPPORT == _ON)
			case _SOURCE_VIDEO8:
				temp = _AV_MENU_NUM;
				break;
			#endif
			
			default:
				break;
		}
		*/
				//x.hu, for No signal osd show
				switch (GET_INPUTPORT_TYPE(stSystemData.InputSource))
				{
					case _DSUB_A0_PORT:
						temp = _VGA_MENU_NUM;
						break;
					#if(_VIDEO_SUPPORT == _ON)
					case _VIDEO_AV_PORT:
					case _VIDEO_AV2_PORT:
						temp = _AV_MENU_NUM;
						break;
					#endif
					default:
						break;
				}

		COsdIconItemSelection(&ucOsdState, ucKeyMessage, temp+1, temp, _MENU_1, COsdDispIconSelect);
	}
	else
	{
		COsdIconItemSelection(&ucOsd_Item_Index0, ucKeyMessage, _IMAGE_NUM+1, _IMAGE_NUM, _ITEM_1, COsdDispItemSelect);
	}
}

void COsdExitPageValueAdjMessage(void)
{

}

void COsdExitPageExitMessage(void)
{
	COsdPageExit();
}

void COsdExitPageSwitchMessage(void)
{

}

void COsdExitPageIRMessage(void)
{

}

//-----------------------------------------
// Color Temp Page process
//-----------------------------------------
void COsdColorTempPageExit(void)
{
	bValueAdj = _FALSE;

	switch(GET_INPUTSOURCE_TYPE())
	{
		case _SOURCE_VGA:
			SETOSDSTATE(_VGA_MENU_COLOR);
			break;
		
		default:
			break;
	}

	SETOSDITEM0(_VGA_COLOR_TEMP);
	SETOSDITEM1(_ITEM_NONE);
	//SETOSDITEM2(_ITEM_NONE);

	//COsdClearItemSelect();
	COsdFxChange1bitColor(ROW(8), COL(0), WIDTH(28), HEIGHT(1), FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));
	COsdFxCodeWrite((BYTE code *)tVGA_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);

	COsdDispItemSelect();
}

void COsdColorTempPageSelectMessage(void)
{
	switch(ucOsd_Item_Index0)
	{
		case _TEMP_EXIT:
			COsdColorTempPageExit();
			return;
			//break;
		case _TEMP_9300:
		case _TEMP_6500:
		case _TEMP_5800:
		case _TEMP_SRGB:	//no use
		case _TEMP_USER:
			//set to selected color temp
			SET_COLOR_TEMP_TYPE(ucOsd_Item_Index0 -1);
			CEepromLoadColorTempData();
    			CAdjustContrast();

			ucOsdEventMsg = _SAVE_EE_SYSTEMDATA_MSG;
			break;
		default:
			break;
	}

	if(_TEMP_USER == ucOsd_Item_Index0)
	{
		//show R,G,B adjust
		SETOSDSTATE(_VGA_MENU_COLOR_USER);
		
		SETOSDITEM0(_ITEM_1);
		SETOSDITEM1(_ITEM_NONE);
		//SETOSDITEM2(_ITEM_NONE);

		//COsdFxDrawWindow(WXSTART(0xA8, 0x21), WYSTART(0x21, 0x15), WXEND(0x2C, 0x85), WYEND(0x85, 0x20), tOSD_WINDOW4_STYLE);
		COsdFxCodeWrite((BYTE code *)tCOLOR_USER_TABLE[stOsdUserData.Language]);
		
		COsdFxChange1bitColor(ROW(8), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1), FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));

		COsdDispItemSelect();
	}
}

void COsdColorTempPageItemAdjMessage(void)
{
	if(ucOsd_Item_Index1 == _ITEM_NONE)
	{
		COsdIconItemSelection(&ucOsd_Item_Index0, ucKeyMessage, _TEMP_SRGB, _COLOR_TEMP_NUM, _ITEM_1, COsdDispItemSelect);
		/*if(ucOsd_Item_Index0 == _TEMP_SRGB)
		{
			if(ucKeyMessage == _ITEM_UP_MESSAGE)
				ucOsd_Item_Index0++;
			else if(ucKeyMessage == _ITEM_DOWN_MESSAGE)
				ucOsd_Item_Index0--;
		}
		COsdDispItemSelect();*/

		//9300--0, 6500--1, 5800--2, SRGB--3, USER--4 & in Premierme type OSD, I do not use SRGB
		if(ucOsd_Item_Index0 < _TEMP_EXIT)
		{
			SET_COLOR_TEMP_TYPE(ucOsd_Item_Index0 -1);
		}
		else 	//exit, load default color
		{
			CEepromLoadSystemData();
		}
		CEepromLoadColorTempData();
    		CAdjustContrast();
	}
}

void COsdColorTempPageValueAdjMessage(void)
{

}

void COsdColorTempPageExitMessage(void)
{
	//if(ucOsd_Item_Index1 == _ITEM_NONE)
	//{
	COsdColorTempPageExit();
	//}
}

void COsdColorTempPageSwitchMessage(void)
{

}

void COsdColorTempPageIRMessage(void)
{
	
}

//-----------------------------------------
// Color User Process
//-----------------------------------------
void COsdColorUserPageExit(void)
{
	bValueAdj = _FALSE;

	switch(GET_INPUTSOURCE_TYPE())
	{
		case _SOURCE_VGA:
			SETOSDSTATE(_VGA_MENU_COLOR_TEMP);
			break;
		
		default:
			break;
	}
	//SETOSDSTATE(_VGA_MENU_COLOR_TEMP);
	SETOSDITEM1(_ITEM_NONE);
	//SETOSDITEM2(_ITEM_NONE);
	
	
	SETOSDITEM0(_TEMP_USER);
	
	//COsdFxCloseWindow(WINNO(4));
	
	//COsdFxCodeWrite(tOSD_COLOR_TEMP_ENG);
	COsdFxCodeWrite((BYTE code *)tCOLOR_TEMP_TABLE[stOsdUserData.Language]);
	COsdFxChange1bitColor(ROW(8), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1), FGCOLOR(_CP_GRAY), BGCOLOR(_CP_BLACK));
	
	COsdDispItemSelect();
}

void COsdColorUserPageSelectMessage(void)
{
	switch(ucOsd_Item_Index0)
	{
		case _USER_R:
		case _USER_G:
		case _USER_B:
			if(ucOsd_Item_Index1 > _ITEM_NONE)
			{
				bValueAdj = _FALSE;
				CLR_KEYREPEATENABLE();
				
				SETOSDITEM1(_ITEM_NONE);

				COsdFxCloseWindow(WINNO(4));
				COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1));
			}
			else
			{
				bValueAdj = _TRUE;
				SETOSDITEM1(1);

				COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
				COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stColorTempData.ColorTemp[ucOsd_Item_Index0-1], 255, 0,_CP_WHITE, _CP_WHITE, _SHOW_PERCENT);
			}
			break;
		case _USER_EXIT:
			COsdColorUserPageExit();
			break;
	}
}

void COsdColorUserPageItemAdjMessage(void)
{
	COsdIconItemSelection(&ucOsd_Item_Index0, ucKeyMessage, _COLOR_USER_NUM+1, _COLOR_USER_NUM, _ITEM_1, COsdDispItemSelect);
}

void COsdColorUserPageValueAdjMessage(void)
{
	COsdByteValueAdj(&stColorTempData.ColorTemp[ucOsd_Item_Index0-1], 255, 0, ucKeyMessage, CAdjustContrast);
	COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stColorTempData.ColorTemp[ucOsd_Item_Index0-1], 255, 0,_CP_WHITE, _CP_WHITE, _SHOW_PERCENT);

	ucOsdEventMsg = _SAVE_EE_COLORPROC1_MSG;
}

void COsdColorUserPageExitMessage(void)
{
	if(ucOsd_Item_Index1 == _ITEM_NONE)
	{
		COsdColorUserPageExit();
	}
	else
	{
		bValueAdj = _FALSE;

		SETOSDITEM1(_ITEM_NONE);

		COsdFxCloseWindow(WINNO(4));
		//clear bar
		COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1));
	}
}

void COsdColorUserPageSwitchMessage(void)
{

}

void COsdColorUserPageIRMessage(void)
{

}

//-----------------------------------------
// Language Process
//-------------------------------------------
void COsdLanguagePageExit(void)
{
	/*
	switch(GET_INPUTSOURCE_TYPE())
	{
		case _SOURCE_VGA:
			SETOSDSTATE(_VGA_MENU_OSD);
			
			COsdFxCodeWrite((BYTE code *)tVGA_MENU_TABLE[ucOsdState-1][stOsdUserData.Language]);
			COsdFxCodeWrite((BYTE code *)tVGA_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
			break;

		#if(_VIDEO_SUPPORT == _ON)
		case _SOURCE_VIDEO8:
			SETOSDSTATE(_AV_MENU_OSD);

			COsdFxCodeWrite((BYTE code *)tAV_MENU_TABLE[ucOsdState-1][stOsdUserData.Language]);
			COsdFxCodeWrite((BYTE code *)tAV_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
			break;
		#endif
		
		default:
			break;
	}
	*/

	//x.hu, for No signal osd show
	switch (GET_INPUTPORT_TYPE(stSystemData.InputSource))
	{
		case _DSUB_A0_PORT:
			SETOSDSTATE(_VGA_MENU_OSD);
			COsdFxCodeWrite((BYTE code *)tVGA_MENU_TABLE[ucOsdState-1][stOsdUserData.Language]);
			COsdFxCodeWrite((BYTE code *)tVGA_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);

			//x.hu, for no signal osd show when language is changed (VGA MODE)
			// refresh signal mode line
			COsdDispCurrVGAMode(FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));
			break;
		#if(_VIDEO_SUPPORT == _ON)
		case _VIDEO_AV_PORT:
		case _VIDEO_AV2_PORT:
			SETOSDSTATE(_AV_MENU_OSD);
			COsdFxCodeWrite((BYTE code *)tAV_MENU_TABLE[ucOsdState-1][stOsdUserData.Language]);
			COsdFxCodeWrite((BYTE code *)tAV_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
			//x.hu, for no signal osd show when language is changed (VIDEO MODE)
			// refresh signal mode line
			COsdDispCurrAVMode(FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));

			break;
		#endif
		default:
			break;
		}
	SETOSDITEM0(_OSD_LANGUAGE);
	COsdDispItemSelect();
}

void COsdLanguagePageSelectMessage(void)
{
	//fist, set to selected language
	stOsdUserData.Language = ucOsd_Item_Index0-1;
	
	if(stOsdUserData.Language == _CHINESE_S)
	{
		CScalerLoadFont(tFONT_SCHINESE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_SCHINESE_CHAR_NUM), _COMPRESS_FONT); //load 1-bit Simple Chinese font.
	}
	else
	{
		CScalerLoadFont(tFONT_EUROPE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_EUROPE_CHAR_NUM), _COMPRESS_FONT);	//load 1-bit Europe font.
	}

	//second, return to main page
	COsdLanguagePageExit();

	//save language
	ucOsdEventMsg = _SAVE_EE_OSDUSERDATA_MSG;
}

void COsdLanguagePageItemAdjMessage(void)
{
	COsdIconItemSelection(&ucOsd_Item_Index0, ucKeyMessage, _LANGUAGE_NUM+1, _LANGUAGE_NUM, _ITEM_1, COsdDispItemSelect);
}

void COsdLanguagePageValueAdjMessage(void)
{

}

void COsdLanguagePageExitMessage(void)
{
	COsdLanguagePageExit();
}

void COsdLanguagePageSwitchMessage(void)
{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -