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

📄 osd.c

📁 车载 液晶显示器的主控程序(主要使用芯片为 MYSON MTV512 单片机、RealTek 2323 Scare 芯片、TVP5147(视频解码)。配Sharp 8寸液晶显示器 )。
💻 C
📖 第 1 页 / 共 5 页
字号:
		COsdFxLoadText(ROW(1), COL(0), stOsdUserData.Language, tOSD_VOLUMESHORT_STR);
		
		COsdFxChange1bitColor(ROW(0), COL(0), WIDTH(18), HEIGHT(4), FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));
              COsdDispFullSlider3(ROW(2), COL(1), LENGTH(16), stOsdUserData.Volume, _VOLUME_MAX-_VOLUME_MIN, _VOLUME_MIN,_CP_WHITE, _CP_WHITE, _SHOW_PERCENT);
		
		COsdFxSetPosition(WIDTH(_OSD_AUTO_DH_END), HEIGHT(_OSD_AUTO_DV_END), (_OSD_HPOSITION_RANGE>>1), (_OSD_VPOSITION_RANGE>>1), 0x01);
		COsdFxEnableOsd();

		SETOSDSTATE(_VGA_MENU_SHORTCUT);	//change to color temp page
      	}
	 break;


		
  case _SOURCE_VIDEO8 :
  	if(ucOsdState== _MENU_NONE)
      	{
               COsdFxDisableOsd();
	        COsdDispPrevWork(_OSD_MAP2);
		COsdFxCodeWrite(tOSD_SHORTV_ATB);
		COsdFxLoadText(ROW(1), COL(0), stOsdUserData.Language, tOSD_VOLUMESHORT_STR);
		
		COsdFxChange1bitColor(ROW(0), COL(0), WIDTH(18), HEIGHT(4), FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));
              COsdDispFullSlider3(ROW(2), COL(1), LENGTH(16), stOsdUserData.Volume, _VOLUME_MAX-_VOLUME_MIN, _VOLUME_MIN,_CP_WHITE, _CP_WHITE, _SHOW_PERCENT);
		
		COsdFxSetPosition(WIDTH(_OSD_AUTO_DH_END), HEIGHT(_OSD_AUTO_DV_END), (_OSD_HPOSITION_RANGE>>1), (_OSD_VPOSITION_RANGE>>1), 0x01);
		COsdFxEnableOsd();

		SETOSDSTATE(_AV_MENU_VOLUME);	//change to color temp page
      	}
		
	//SETOSDSTATE(_VGA_MENU_SHORTCUT);	//change to color temp page
	 break;
					
	default:
		break;
}
		
		
  
}

void COsdPage0ItemAdjMessage(void)
{
	if (GET_INPUTPORT_TYPE(stSystemData.InputSource) == _DSUB_A0_PORT || \
		GET_INPUTPORT_TYPE(stSystemData.InputSource) == _DSUB_A1_PORT)
	{

		if(ucOsdState == _MENU_NONE)
		{
			if(_ITEM_UP_MESSAGE == ucKeyMessage)
			{
				COsdDispAutoColorProc();
			}
			else if(_ITEM_DOWN_MESSAGE == ucKeyMessage)
			{
				COsdDispAutoProc();
			}
		}
	}
	
	
}

void COsdPage0ExitMessage(void)
{
	
}

void COsdPage0SwitchMessage(void)
{

}

void COsdPage0IRMessage(void)
{

}


void COsdPageExit(void)
{
	//bValueAdj = _FALSE;
						
	COsdFxDisableOsd();

	//SETOSDSTATE(_MENU_NONE);
						
	//SETOSDITEM0(_ITEM_NONE);
	//SETOSDITEM1(_ITEM_NONE);
	//SETOSDITEM2(_ITEM_NONE);

	CLR_KEYREPEATENABLE();	//disable key repeat
}

void COsdMainPageExit(void)
{
	if(ucOsd_Item_Index0 == 0)
	{
		COsdPageExit();
	}
	else
	{
		if(ucOsd_Item_Index1 == _ITEM_NONE)
		{
			COsdClearItemSelect();

			SETOSDITEM0(_ITEM_NONE);
		}
		else
		{
			bValueAdj = _FALSE;
			
			COsdFxCloseWindow(WINNO(4));
			COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1));	//Clear Bar

			SETOSDITEM1(_ITEM_NONE);
		}

		CLR_KEYREPEATENABLE();	//disable key repeat
	}
	
}

//----------------------------------------
// VGA Color page process
//----------------------------------------
void COsdVGAColorPageSelectMessage(void)
{
	//x.hu, add for prevent from operating while no signal mode
	if (ucCurrState != _ACTIVE_STATE)
	{
		return;
	}

	if(ucOsd_Item_Index0 == _ITEM_NONE)
	{
		ucOsd_Item_Index0 = _ITEM_1;

		//Show pointing arrow
		COsdDispItemSelect();
	}
	else
	{
		switch(ucOsd_Item_Index0)
		{
			case _VGA_COLOR_EXIT:	//Close main page
				//COsdPageExit();
				COsdClearItemSelect();

				SETOSDITEM0(_ITEM_NONE);
				break;
			case _VGA_COLOR_AUTO:
				//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);

				//do auto color function
				CAutoDoWhiteBalance();

				//clear information
				COsdFxCloseWindow(WINNO(4));
				COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1));
				break;
			case _VGA_COLOR_CONTRAST:
				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), stConBriData.Contrast, _CONTRAST_MAX - _CONTRAST_MIN, _CONTRAST_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;
			case _VGA_COLOR_BRIGHT:
				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), stConBriData.Brightness, _BRIGHT_MAX - _BRIGHT_MIN, _BRIGHT_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;
			case _VGA_COLOR_SHARPNESS:
				if(ucOsd_Item_Index1 == _ITEM_NONE)
				{
					SETOSDITEM1((stSystemData.Sharpness & 0x0f)+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_ROW0);
					COsdFxChange1bitColor(ROW(12), COL((ucOsd_Item_Index1-1)*4+5), 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;
			case _VGA_COLOR_TEMP:
				switch(GET_INPUTSOURCE_TYPE())
				{
					case _SOURCE_VGA:
						SETOSDSTATE(_VGA_MENU_COLOR_TEMP);	//change to color temp page
						break;
					
					default:
						break;
				}

				CEepromLoadSystemData();	//get color temp
				
				SETOSDITEM0((stSystemData.ColorTemp & 0x0f)+1);
				SETOSDITEM1(_ITEM_NONE);
				//SETOSDITEM2(_ITEM_NONE);
				//show color temp sub-page
				//COsdFxCodeWrite(tOSD_COLOR_TEMP_ENG);
				COsdFxCodeWrite((BYTE code *)tCOLOR_TEMP_TABLE[stOsdUserData.Language]);
				//COsdFxChange1bitColor(ROW(8), COL(0), WIDTH(8), HEIGHT(1), FGCOLOR(_CP_GRAY), BGCOLOR(_CP_BLACK));
				//show item select
				COsdDispItemSelect();
				break;
			default:		
				break;
		}
	}
}

void COsdVGAColorPageValueAdjMessage(void)
{
	switch(ucOsd_Item_Index0)
	{
		case _VGA_COLOR_CONTRAST:
			COsdByteValueAdj(&stConBriData.Contrast, _CONTRAST_MAX, _CONTRAST_MIN, ucKeyMessage, CAdjustContrast);

			COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stConBriData.Contrast, _CONTRAST_MAX - _CONTRAST_MIN, _CONTRAST_MIN, _CP_WHITE, _CP_WHITE, _SHOW_PERCENT);

			ucOsdEventMsg = _SAVE_EE_COLORPROC0_MSG;		//enable save.
			break;
		case _VGA_COLOR_BRIGHT:
			COsdByteValueAdj(&stConBriData.Brightness, _BRIGHT_MAX, _BRIGHT_MIN, ucKeyMessage, CAdjustBrightness);

			COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stConBriData.Brightness, _BRIGHT_MAX - _BRIGHT_MIN, _BRIGHT_MIN, _CP_WHITE, _CP_WHITE, _SHOW_PERCENT);

			ucOsdEventMsg = _SAVE_EE_COLORPROC0_MSG;		//enable save.
			break;
		case _VGA_COLOR_SHARPNESS:
			if(_VALUE_UP_MESSAGE == ucKeyMessage)
			{
				ucOsd_Item_Index1 = (ucOsd_Item_Index1+1 > _SHARPNESS_NUM) ? _ITEM_1 : ucOsd_Item_Index1+1;
			}
			else if(_VALUE_DOWN_MESSAGE == ucKeyMessage)
			{
				ucOsd_Item_Index1 = (ucOsd_Item_Index1-1 < _ITEM_1) ? _SHARPNESS_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-1)*4+5), WIDTH(1), HEIGHT(1), FGCOLOR(_CP_RED), BGCOLOR(_CP_BLACK));

			stSystemData.Sharpness = ucOsd_Item_Index1-1;
			CAdjustSharpness();

			ucOsdEventMsg = _SAVE_EE_SYSTEMDATA_MSG;
			break;
	}
}

void COsdVGAColorPageItemAdjMessage(void)
{
	if(ucOsd_Item_Index0 == _ITEM_NONE)
	{
		COsdIconItemSelection(&ucOsdState, ucKeyMessage, _VGA_MENU_NUM+1, _VGA_MENU_NUM, _MENU_1, COsdDispIconSelect);
	}
	else 
	{
		COsdIconItemSelection(&ucOsd_Item_Index0, ucKeyMessage, _VGA_COLOR_NUM+1, _VGA_COLOR_NUM, _ITEM_1, COsdDispItemSelect);
	}
}

void COsdVGAColorPageExitMessage(void)
{
	COsdMainPageExit();
}

void COsdVGAColorPageSwitchMessage(void)
{

}

void COsdVGAColorPageIRMessage(void)
{

}

//----------------------------------------
//Image Page Process
//----------------------------------------
void COsdImagePageSelectMessage(void)
{
	//x.hu, add for prevent from operating while no signal mode
	if (ucCurrState != _ACTIVE_STATE)
	{
		return;
	}

	if(ucOsd_Item_Index0 == _ITEM_NONE)
	{
		ucOsd_Item_Index0 = _ITEM_1;

		//Show pointing arrow
		COsdDispItemSelect();
	}
	else
	{
		switch(ucOsd_Item_Index0)
		{
			case _IMAGE_EXIT:
				//COsdPageExit();
				COsdClearItemSelect();

				SETOSDITEM0(_ITEM_NONE);
				break;
			case _IMAGE_AUTO:
				//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);

				//do auto color function
				CAutoDoAutoConfig();

				//clear information
				COsdFxCloseWindow(WINNO(4));
				COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1));
				break;
			case _IMAGE_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), stModeUserData.HPosition, _HPOSITION_BIAS * 2, stModeUserCenterData.CenterHPos - _HPOSITION_BIAS, _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 _IMAGE_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), stModeUserData.VPosition, _VPOSITION_BIAS * 2, stModeUserCenterData.CenterVPos - _VPOSITION_BIAS, _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 _IMAGE_PHASE:
				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), stModeUserData.Phase, 63, 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 _IMAGE_CLOCK:
				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), stModeUserData.Clock, _CLOCK_BIAS * 2, stModeUserCenterData.CenterClock - _CLOCK_BIAS, _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;
			default:
				break;
		}
	}
}

void COsdImagePageItemAdjMessage(void)
{
	if(ucOsd_Item_Index0 == _ITEM_NONE)
	{
		COsdIconItemSelection(&ucOsdState, ucKeyMessage, _VGA_MENU_NUM+1, _VGA_MENU_NUM, _MENU_1, COsdDispIconSelect);
	}
	else
	{
		COsdIconItemSelection(&ucOsd_Item_Index0, ucKeyMessage, _IMAGE_NUM+1, _IMAGE_NUM, _ITEM_1, COsdDispItemSelect);
	}
}

void COsdImagePageValueAdjMessage(void)
{
	switch(ucOsd_Item_Index0)
	{
		case _IMAGE_HPOS:
			COsdWordValueAdj(&stModeUserData.HPosition,  COsdFxGetHPositionRange(_GET_HPOSITIONRANGE_MAX), COsdFxGetHPositionRange(_GET_HPOSITIONRANGE_MIN), ucKeyMessage, CAdjustHPosition);
			COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stModeUserData.HPosition, _HPOSITION_BIAS * 2, stModeUserCenterData.CenterHPos - _HPOSITION_BIAS, _CP_WHITE, _CP_WHITE, _SHOW_PERCENT);

			ucOsdEventMsg = _SAVE_EE_MODEUSERDATA_MSG;

⌨️ 快捷键说明

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