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

📄 osd.c

📁 车载 液晶显示器的主控程序(主要使用芯片为 MYSON MTV512 单片机、RealTek 2323 Scare 芯片、TVP5147(视频解码)。配Sharp 8寸液晶显示器 )。
💻 C
📖 第 1 页 / 共 5 页
字号:
			break;
		case _IMAGE_VPOS:
			COsdWordValueAdj(&stModeUserData.VPosition,  COsdFxGetVPositionRange(_GET_VPOSITIONRANGE_MAX), COsdFxGetVPositionRange(_GET_VPOSITIONRANGE_MIN), ucKeyMessage, CAdjustVPosition);
			COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stModeUserData.VPosition, _VPOSITION_BIAS * 2, stModeUserCenterData.CenterVPos - _VPOSITION_BIAS, _CP_WHITE, _CP_WHITE, _SHOW_PERCENT);

			ucOsdEventMsg = _SAVE_EE_MODEUSERDATA_MSG;
			break;
		case _IMAGE_PHASE:
    		COsdByteValueAdj(&stModeUserData.Phase, 63, 0, ucKeyMessage, NullFunction);
			COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stModeUserData.Phase, 63, 0, _CP_WHITE, _CP_WHITE, _SHOW_PERCENT);
			CAdjustPhase(stModeUserData.Phase);

			ucOsdEventMsg = _SAVE_EE_MODEUSERDATA_MSG;
			break;
		case _IMAGE_CLOCK:
    			COsdWordValueAdj(&stModeUserData.Clock, COsdFxGetAdcClockRange(_GET_CLOCKRANGE_MAX), COsdFxGetAdcClockRange(_GET_CLOCKRANGE_MIN), ucKeyMessage, NullFunction);
			COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stModeUserData.Clock, _CLOCK_BIAS * 2, stModeUserCenterData.CenterClock - _CLOCK_BIAS, _CP_WHITE, _CP_WHITE, _SHOW_PERCENT);
			CAdjustAdcClock(stModeUserData.Clock);

			ucOsdEventMsg = _SAVE_EE_MODEUSERDATA_MSG;
			break;
		default:
			break;
	}
}

void COsdImagePageExitMessage(void)
{
	COsdMainPageExit();
}

void COsdImagePageSwitchMessage(void)
{

}

void COsdImagePageIRMessage(void)
{

}

//-----------------------------------
// OSD Page Process
//-----------------------------------
void COsdOsdpageSelectMessage(void)
{
	if(ucOsd_Item_Index0 == _ITEM_NONE)
	{
		ucOsd_Item_Index0 = _ITEM_1;

		COsdDispItemSelect();
	}
	else
	{
		switch(ucOsd_Item_Index0)
		{
			case _OSD_EXIT:
				COsdClearItemSelect();

				SETOSDITEM0(_ITEM_NONE);
				break;
			case _OSD_LANGUAGE:
				/*
				switch(GET_INPUTSOURCE_TYPE())
				{
					case _SOURCE_VGA:
						SETOSDSTATE(_VGA_MENU_LANGUAGE);
						break;

					#if(_VIDEO_SUPPORT == _ON)
					case _SOURCE_VIDEO8:
						SETOSDSTATE(_AV_MENU_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_LANGUAGE);
						break;
					#if(_VIDEO_SUPPORT == _ON)
					case _VIDEO_AV_PORT:
					case _VIDEO_AV2_PORT:
						SETOSDSTATE(_AV_MENU_LANGUAGE);
						break;
					#endif
					default:
						break;
				}

				SETOSDITEM0(stOsdUserData.Language+1);
				
				//show language selection page
				COsdFxCodeWrite(tOSD_LANGUAGE_PAGE);
				//show current selection
				COsdDispItemSelect();
				break;
			case _OSD_HPOS:
				if(ucOsd_Item_Index1 == _ITEM_NONE)
				{
					//if enter contrast adjust, 
					SETOSDITEM1(1);
					bValueAdj = _TRUE;
					//show window
					COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
					//show bar
					COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stOsdUserData.OsdHPos, _OSD_HPOSITION_RANGE, 0,_CP_WHITE, _CP_WHITE, _SHOW_PERCENT);
				}
				else
				{
					bValueAdj = _FALSE;
					CLR_KEYREPEATENABLE();
					
					COsdFxCloseWindow(WINNO(4));
					COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1));	//Clear Bar

					SETOSDITEM1(0);
				}
				break;
			case _OSD_VPOS:
				if(ucOsd_Item_Index1 == _ITEM_NONE)
				{
					//if enter contrast adjust, 
					SETOSDITEM1(1);
					bValueAdj = _TRUE;
					//show window
					COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
					//show bar
					COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stOsdUserData.OsdVPos, _OSD_VPOSITION_RANGE, 0,_CP_WHITE, _CP_WHITE, _SHOW_PERCENT);
				}
				else
				{
					bValueAdj = _FALSE;
					CLR_KEYREPEATENABLE();
					
					COsdFxCloseWindow(WINNO(4));
					COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1));	//Clear Bar

					SETOSDITEM1(0);
				}
				break;
			case _OSD_TIMER:
				if(ucOsd_Item_Index1 == _ITEM_NONE)
				{
					//if enter contrast adjust, 
					SETOSDITEM1(1);
					bValueAdj = _TRUE;
					//show window
					COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
					//show bar
					COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stOsdUserData.OsdTimeout, _OSD_TIMER_MAX-_OSD_TIMER_MIN, _OSD_TIMER_MIN,_CP_WHITE, _CP_WHITE,_SHOW_RAW);
				}
				else
				{
					bValueAdj = _FALSE;
					CLR_KEYREPEATENABLE();
					
					COsdFxCloseWindow(WINNO(4));
					COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1));	//Clear Bar

					SETOSDITEM1(0);
				}
				break;
			case _OSD_TRANS:
				//show select item
				if(ucOsd_Item_Index1 == _ITEM_NONE)
				{
					SETOSDITEM1((stOsdUserData.OsdSettingFlag & 0x07)+1);
					bValueAdj = _TRUE;
					
					//show window
					COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
					//show current select(0, 1, 2, 3, 4)
					COsdFxCodeWrite(tOSD_NUM_ROW1);
					COsdFxChange1bitColor(ROW(12), COL(ucOsd_Item_Index1*3), WIDTH(1), HEIGHT(1), FGCOLOR(_CP_RED), BGCOLOR(_CP_BLACK));
				}
				else
				{
					bValueAdj = _FALSE;
					CLR_KEYREPEATENABLE();

					COsdFxCloseWindow(WINNO(4));
					COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1));	//Clear Bar

					SETOSDITEM1(0);
				}
				break;
			default:
				break;
		}
	}
}

void COsdOsdPageItemAdjMessage(void)
{
	if(ucOsd_Item_Index0 == 0)		//icon selection
	{
		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		//item selection
	{
		COsdIconItemSelection(&ucOsd_Item_Index0, ucKeyMessage, _OSD_NUM+1, _OSD_NUM, _ITEM_1, COsdDispItemSelect);
	}
}

void COsdOsdPageValueAdjMessage(void)
{
	switch(ucOsd_Item_Index0)
	{
		case _OSD_HPOS:
			//When double size enabled, disable position adjustment.
			if(((stOsdUserData.OsdSettingFlag & 0x08) >> 3)+1 == _MISC_ZOOM_X2)
				return;
			
			COsdByteValueAdj(&stOsdUserData.OsdHPos, _OSD_HPOSITION_RANGE, 0, ucKeyMessage, NullFunction);
			COsdFxSetPosition(WIDTH(_OSD_MAIN_DH_END), HEIGHT(_OSD_MAIN_DV_END), stOsdUserData.OsdHPos, stOsdUserData.OsdVPos, 0x01);

			COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stOsdUserData.OsdHPos, _OSD_HPOSITION_RANGE, 0,_CP_WHITE, _CP_WHITE, _SHOW_PERCENT);

			ucOsdEventMsg = _SAVE_EE_OSDUSERDATA_MSG;
			break;
		case _OSD_VPOS:
			//When double size enabled, disable position adjustment.
			if(((stOsdUserData.OsdSettingFlag & 0x08) >> 3)+1 == _MISC_ZOOM_X2)
				return;
			
			COsdByteValueAdj(&stOsdUserData.OsdVPos, _OSD_VPOSITION_RANGE, 0, ucKeyMessage, NullFunction);
			COsdFxSetPosition(WIDTH(_OSD_MAIN_DH_END), HEIGHT(_OSD_MAIN_DV_END), stOsdUserData.OsdHPos, stOsdUserData.OsdVPos, 0x01);

			COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stOsdUserData.OsdVPos, _OSD_VPOSITION_RANGE, 0,_CP_WHITE, _CP_WHITE, _SHOW_PERCENT);

			ucOsdEventMsg = _SAVE_EE_OSDUSERDATA_MSG;
			break;
		case _OSD_TIMER:
			COsdByteValueAdj(&stOsdUserData.OsdTimeout, _OSD_TIMER_MAX, _OSD_TIMER_MIN, ucKeyMessage, NullFunction);
			
			COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stOsdUserData.OsdTimeout, _OSD_TIMER_MAX-_OSD_TIMER_MIN, _OSD_TIMER_MIN,_CP_WHITE, _CP_WHITE, _SHOW_RAW);

			ucOsdEventMsg = _SAVE_EE_OSDUSERDATA_MSG;
			break;
		case _OSD_TRANS:
			if(_VALUE_UP_MESSAGE == ucKeyMessage)
			{
				ucOsd_Item_Index1 = (ucOsd_Item_Index1+1 > _OSD_TRANS_NUM) ? _ITEM_1 : ucOsd_Item_Index1+1;
			}
			else if(_VALUE_DOWN_MESSAGE == ucKeyMessage)
			{
				ucOsd_Item_Index1 = (ucOsd_Item_Index1-1 < _ITEM_1) ? _OSD_TRANS_NUM : ucOsd_Item_Index1-1;
			}
			COsdFxChange1bitColor(ROW(12), COL(0), WIDTH(28), HEIGHT(1), FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));
			COsdFxChange1bitColor(ROW(12), COL(ucOsd_Item_Index1*3), WIDTH(1), HEIGHT(1), FGCOLOR(_CP_RED), BGCOLOR(_CP_BLACK));

			stOsdUserData.OsdSettingFlag &= 0xf8;
			stOsdUserData.OsdSettingFlag |= ucOsd_Item_Index1 - 1;
			COsdFxAlphaBlendingLevel(stOsdUserData.OsdSettingFlag & 0x07);

			ucOsdEventMsg = _SAVE_EE_OSDUSERDATA_MSG;
			break;
		default:
			break;
	}
}

void COsdOsdpageExitMessage(void)
{
	COsdMainPageExit();
}

void COsdOsdPageSwitchMessage(void)
{

}

void COsdOsdPageIRMessage(void)
{

}

//--------------------------------------------
// Misc page process
//--------------------------------------------
void COsdMiscPageSelectMessage(void)
{
	if(ucOsd_Item_Index0 == _ITEM_NONE)
	{   
	   if(GET_INPUTSOURCE_TYPE()==_SOURCE_VGA)
		//SETOSDITEM0(_ITEM_2);//xyw
		SETOSDITEM0(_ITEM_1);//xyw
	    else
		SETOSDITEM0(_ITEM_1);//xyw	
      
		COsdDispItemSelect();
	  
	}
	else
	{
		switch(ucOsd_Item_Index0)
		{
			case _MISC_EXIT:
				COsdClearItemSelect();
				

				SETOSDITEM0(_ITEM_NONE);
				break;
			//x.hu, update for audio select
			#if (_MISC_VOLUME_USED)
			case _MISC_VOLUME: 
				//x.hu, add for prevent from operating while no signal mode
				if (ucCurrState != _ACTIVE_STATE)
				{
					return;
				}

					if(ucOsd_Item_Index1 == _ITEM_NONE)
					{
						//if enter contrast adjust, 
						SETOSDITEM1(1);
						bValueAdj = _TRUE;
						//show window
						COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
						//show bar
						COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stOsdUserData.Volume, _VOLUME_MAX-_VOLUME_MIN, _VOLUME_MIN,_CP_WHITE, _CP_WHITE, _SHOW_PERCENT);
					}
					else
					{
						bValueAdj = _FALSE;
						CLR_KEYREPEATENABLE();
						
						COsdFxCloseWindow(WINNO(4));
						COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1));	//Clear Bar

						SETOSDITEM1(0);
					}
				break;
			#endif
			#if (_MISC_RECALL_USED)
			case _MISC_RECALL:
				//show 'waiting' information
				COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
				//COsdFxCodeWrite((BYTE code *)tOSD_WAIT_TABLE[0]);
				COsdFxCodeWrite(tOSD_BUSY_STR);

				COsdReset();

				//clear information
				COsdFxCloseWindow(WINNO(4));
				COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1));
				break;
			#endif
			#if (_MISC_SOURCE_USED)
			case _MISC_SOURCE:
				COsdFxChange1bitColor(ROW(5), COL(1), WIDTH(10), HEIGHT(1), FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));//xyw
				//x.hu, update for source switch
				if (GET_INPUTPORT_TYPE(stSystemData.InputSource) == _DSUB_A0_PORT) {
					SETOSDSTATE(_VGA_MENU_SOURCE);
				}
				else if (GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_AV_PORT || \
						 GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_AV2_PORT) {
					SETOSDSTATE(_AV_MENU_SOURCE);
				}
				SETOSDITEM0(stSystemData.InputSource+1);	// point to source item
				SETOSDITEM1(0);

				COsdFxCodeWrite(tOSD_SOURCE_PAGE);
				COsdDispItemSelect();

				break;
			#endif
			#if (_MISC_TIMER_ENABLE == _TRUE)
			case _MISC_TIMER:
				//x.hu, add for prevent from operating while no signal mode
				//if (ucCurrState != _ACTIVE_STATE)
				//{
				//	return;
				//}

				switch(GET_INPUTSOURCE_TYPE())
				{
					case _SOURCE_VGA:
						SETOSDSTATE(_VGA_MENU_USER_TIMER);
						break;

					#if(_VIDEO_SUPPORT == _ON)
					case _SOURCE_VIDEO8:
						SETOSDSTATE(_AV_MENU_USER_TIMER);
						break;
					#endif
					
					default:
						break;
				}
				
				SETOSDITEM0(_ITEM_1);

				COsdFxCodeWrite((BYTE code *)tSYSTEM_TIMER_TABLE[stOsdUserData.Language]);
				COsdDispItemSelect();

				//show time
				COsdDispSystemTimer(ROW(_TIMER_POWERUP+4), COL(21), stUserTimerData.Hour[_TIMER_POWERUP-1]);		//hour
				COsdDispSystemTimer(ROW(_TIMER_POWERUP+4), COL(24), stUserTimerData.Minute[_TIMER_POWERUP-1]);		//minute

				COsdDispSystemTimer(ROW(_TIMER_POWERDOWN+4), COL(21), stUserTimerData.Hour[_TIMER_POWERDOWN-1]);		//hour
				COsdDispSystemTimer(ROW(_TIMER_POWERDOWN+4), COL(24), stUserTimerData.Minute[_TIMER_POWERDOWN-1]);		//minute

				COsdDispSystemTimer(ROW(_TIMER_REMIND+4), COL(21), stUserTimerData.Hour[_TIMER_REMIND-1]);		//hour
				COsdDispSystemTimer(ROW(_TIMER_REMIND+4), COL(24), stUserTimerData.Minute[_TIMER_REMIND-1]);		//minute
				break;
			#endif
			#if (_MISC_ZOOM_USED)
			case _MISC_ZOOM:
				if(ucOsd_Item_Index1 == _ITEM_NONE)
				{
					bValueAdj = _TRUE;
				
					ucOsd_Item_Index1 = ((stOsdUserData.OsdSettingFlag & 0x08) >> 3) + 1;
					COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
					COsdFxCodeWrite(tOSD_NUM_ROW2);

					COsdFxChange1bitColor(ROW(12), COL((ucOsd_Item_Index1-1)*7+9), WIDTH(2), HEIGHT(1), FGCOLOR(_CP_RED), BGCOLOR(_CP_BLACK));
				}
				else
				{
					bValueAdj = _FALSE;
					CLR_KEYREPEATENABLE();
					
					stOsdUserData.OsdSettingFlag &= 0xf7;
					stOsdUserData.OsdSettingFlag |= (ucOsd_Item_Index1-1) << 3;
					COsdFxSetOsdSizeDouble(ucOsd_Item_Index1);

					COsdFxCloseWindow(WINNO(4));
					COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1));
					COsdFxChange1bitColor(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1), FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));

					SETOSDITEM1(_ITEM_NONE);
				}
				break;
			#endif
			default:
				break;
		}
	}
}

⌨️ 快捷键说明

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