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

📄 osdmenu.c

📁 MST720-DEMO程序
💻 C
📖 第 1 页 / 共 4 页
字号:
	osdOSDClearBlock(0, 9, 25, 1);
	osdOSDPrintString(1, 9, 0, tMenuLastLineSTR, _BLUE, _WHITE);
	osdOSDPageMoveCTRL(0);
	osdOSDMenuMoveCTRL(0);

}

void osdOSDDrawAdjustBar(void)
{
	osdOSDClearBlock(0, 2, 25, 8);
	osdOSDPrintString(1, 9, 0, tBarAdjustLastLineSTR, _BLUE, _WHITE);
	
	switch(g_ucOSDSelectIndex)
	{
		case PMS_CONTRAST:
			osdOSDPrintString(6, 4, Display.ucLanguage, tContrastSTR, _PURPLE, _DARKBLUE);
			if(tOSDSourcSELSequence[Display.ucSourceSEL] == VGA)
				g_ucOSDItemValue = Display.ucPcContrast;
			else
				g_ucOSDItemValue = Display.ucVedioContrast;
			
			g_ucOSDItemValueMax = MAX_CONTRAST;
			g_ucOSDItemValueMin = MIN_CONTRAST;
			break;

		case PMS_BRIGHTNESS:
			osdOSDPrintString(6, 4, Display.ucLanguage, tBrightnessSTR, _PURPLE, _DARKBLUE);
			g_ucOSDItemValue = Display.ucBrightness;
			g_ucOSDItemValueMax = MAX_BRIGHTNESS;
			g_ucOSDItemValueMin = MIN_BRIGHTNESS;
			break;

		case PMS_HUE:
			osdOSDPrintString(6, 4, Display.ucLanguage, tHueSTR, _PURPLE, _DARKBLUE);
			g_ucOSDItemValue = Display.ucHue;
			g_ucOSDItemValueMax = MAX_HUE;
			g_ucOSDItemValueMin = MIN_HUE;
			break;
			
		case PMS_SATURATION:
			osdOSDPrintString(6, 4, Display.ucLanguage, tSaturationSTR, _PURPLE, _DARKBLUE);
			g_ucOSDItemValue = Display.ucSaturation;
			g_ucOSDItemValueMax = MAX_SATURATION;
			g_ucOSDItemValueMin = MIN_SATURATION;
			break;
			
		case PMS_GAMMA:
			osdOSDPrintString(6, 4, Display.ucLanguage, tGammaFunctionSTR, _PURPLE, _DARKBLUE);
			g_ucOSDItemValue = Display.ucGamma;
			g_ucOSDItemValueMax = MAX_GAMMA;
			g_ucOSDItemValueMin = MIN_GAMMA;
			break;
#if USE_ALLMACEOSD
		case MMS_DLTI:
			osdOSDPrintString(6, 4, Display.ucLanguage, tDLTISTR, _PURPLE, _DARKBLUE);
			g_ucOSDItemValue = Display.ucDLTI;
			g_ucOSDItemValueMax = MAX_DLTI;
			g_ucOSDItemValueMin = MIN_DLTI;
			break;

		case MMS_DCTI:
			osdOSDPrintString(6, 4, Display.ucLanguage, tDCTISTR, _PURPLE, _DARKBLUE);
			g_ucOSDItemValue = Display.ucDCTI;
			g_ucOSDItemValueMax = MAX_DCTI;
			g_ucOSDItemValueMin = MIN_DCTI;
			break;

		case MMS_BLACKEXT:
			osdOSDPrintString(6, 4, Display.ucLanguage, tBlackExtensionSTR, _PURPLE, _DARKBLUE);
			g_ucOSDItemValue = Display.ucBlackExtension;
			g_ucOSDItemValueMax = MAX_BLACK_EX;
			g_ucOSDItemValueMin = MIN_BLACK_EX;
			break;

		case MMS_WHITEEXT:
			osdOSDPrintString(6, 4, Display.ucLanguage, tWhiteExtensionSTR, _PURPLE, _DARKBLUE);
			g_ucOSDItemValue = Display.ucWhiteExtension;
			g_ucOSDItemValueMax = MAX_WHITE_EX;
			g_ucOSDItemValueMin = MIN_WHITE_EX;
			break;

		case MMS_FACORCOLOR:
			osdOSDPrintString(6, 4, Display.ucLanguage, tFavorColorSTR, _PURPLE, _DARKBLUE);
			g_ucOSDItemValue = Display.ucFavorColor;
			g_ucOSDItemValueMax = MAX_FAVOR_COLOR;
			g_ucOSDItemValueMin = MIN_FAVOR_COLOR;
			break;

		
		case MMS_SHARPNESS:
			osdOSDPrintString(6, 4, Display.ucLanguage, tSharpnessSTR, _PURPLE, _DARKBLUE);
			g_ucOSDItemValue = Display.ucSharpness;
			g_ucOSDItemValueMax = MAX_SHARPNESS;
			g_ucOSDItemValueMin = MIN_SHARPNESS;
			break;
#endif	//USE_ALLMACEOSD
		case OMS_DURATION:
			osdOSDPrintString(6, 4, Display.ucLanguage, tOSDtimeoutSTR, _PURPLE, _DARKBLUE);
			g_ucOSDItemValue = Display.ucOSDTimer;
			g_ucOSDItemValueMax = MAX_OSDTIMER;
			g_ucOSDItemValueMin = MIN_OSDTIMER;
			break;

		case OMS_TRANSPARENCY:
			osdOSDPrintString(6, 4, Display.ucLanguage, tTransparencySTR, _PURPLE, _DARKBLUE);
			g_ucOSDItemValue = Display.ucTransparency;
			g_ucOSDItemValueMax = MAX_TRANSPARANCY;
			g_ucOSDItemValueMin = MIN_TRANSPARANCY;
			break;

		default:
			break;
			
	}
	osdOSDPrintAdjustBar(5, 6, g_ucOSDItemValueMax, g_ucOSDItemValue, _GREEN, _DARKBLUE);
	osdOSDPrintValue(17, 6, (SINT)g_ucOSDItemValue, _GREEN, _DARKBLUE);

}

void osdOSDMarkFactoryAdjustValue(BIT MarkEnable)
{
	if(MarkEnable)
	{
		osdOSDSetBlockColor(15, (g_ucFactorySelectIndex&0x0F)+2, 3, 1, _WHITE, _DARKBLUE);
		osdOSDPrintString(1, 9, 0, tBarAdjustLastLineSTR, _BLUE, _WHITE);
	}
	else
	{
		osdOSDSetBlockColor(15, (g_ucFactorySelectIndex&0x0F)+2, 3, 1, _PURPLE, _DARKBLUE);
		osdOSDPrintString(1, 9, 0, tLableAdjustLastLineSTR, _BLUE, _WHITE);
	}
}


void osdOSDSetFactoryAdjustValue(void)
{
	
	switch(g_ucFactorySelectIndex)
	{
		case FMVGOS_RGAIN:
			g_ucOSDItemValue = Display.ucVgaRedGain;
			g_ucOSDItemValueMax = MAX_GAIN;
			g_ucOSDItemValueMin = MIN_GAIN;
			break;
			
		case FMVGOS_ROFFSET:
			g_ucOSDItemValue = Display.ucVgaRedOffset;
			g_ucOSDItemValueMax = MAX_OFFSET;
			g_ucOSDItemValueMin = MIN_OFFSET;
			break;
			
		case FMVGOS_GGAIN:
			g_ucOSDItemValue = Display.ucVgaGreenGain;
			g_ucOSDItemValueMax = MAX_GAIN;
			g_ucOSDItemValueMin = MIN_GAIN;
			break;
			
		case FMVGOS_GOFFSET:
			g_ucOSDItemValue = Display.ucVgaGreenOffset;
			g_ucOSDItemValueMax = MAX_OFFSET;
			g_ucOSDItemValueMin = MIN_OFFSET;
			break;
			
		case FMVGOS_BGSIN:
			g_ucOSDItemValue = Display.ucVgaBlueGain;
			g_ucOSDItemValueMax = MAX_GAIN;
			g_ucOSDItemValueMin = MIN_GAIN;
			break;
			
		case FMVGOS_BOFFSET:
			g_ucOSDItemValue = Display.ucVgaBlueOffset;
			g_ucOSDItemValueMax = MAX_OFFSET;
			g_ucOSDItemValueMin = MIN_OFFSET;
			break;
			

		case FMYGOS_PrGAIN:
			g_ucOSDItemValue = Display.ucYPbPrPrGain;
			g_ucOSDItemValueMax = MAX_GAIN;
			g_ucOSDItemValueMin = MIN_GAIN;
			break;
			
		case FMYGOS_PrOFFSET:
			g_ucOSDItemValue = Display.ucYPbPrPrOffset;
			g_ucOSDItemValueMax = MAX_OFFSET;
			g_ucOSDItemValueMin = MIN_OFFSET;
			break;
			
		case FMYGOS_YGAIN:
			g_ucOSDItemValue = Display.ucYPbPrYGain;
			g_ucOSDItemValueMax = MAX_GAIN;
			g_ucOSDItemValueMin = MIN_GAIN;
			break;
			
		case FMYGOS_YOFFSET:
			g_ucOSDItemValue = Display.ucYPbPrYOffset;
			g_ucOSDItemValueMax = MAX_OFFSET;
			g_ucOSDItemValueMin = MIN_OFFSET;
			break;
			
		case FMYGOS_PbGSIN:
			g_ucOSDItemValue = Display.ucYPbPrPbGain;
			g_ucOSDItemValueMax = MAX_GAIN;
			g_ucOSDItemValueMin = MIN_GAIN;
			break;
			
		case FMYGOS_PbOFFSET:
			g_ucOSDItemValue = Display.ucYPbPrPbOffset;
			g_ucOSDItemValueMax = MAX_OFFSET;
			g_ucOSDItemValueMin = MIN_OFFSET;
			break;
		
			
		case FMVS_VCOMDC:
			g_ucOSDItemValue = Display.ucVCOMdc;
			g_ucOSDItemValueMax = MAX_VCOM_DC;
			g_ucOSDItemValueMin = MIN_VCOM_DC;
			break;
			
		case FMVS_VCOMAC:
			g_ucOSDItemValue = Display.ucVCOMac;
			g_ucOSDItemValueMax = MAX_VCOM_AC;
			g_ucOSDItemValueMin = MIN_VCOM_AC;
			break;
#if USE_SSC_OSD
		case FMSS_STEP:
			g_ucOSDItemValue = Display.ucSSCStep;
			g_ucOSDItemValueMax = MAX_SSC_STEP;
			g_ucOSDItemValueMin = MIN_SSC_STEP;
			break;

		case FMSS_SPAN:
			g_ucOSDItemValue = Display.ucSSCSpan;
			g_ucOSDItemValueMax = MAX_SSC_SPAN;
			g_ucOSDItemValueMin = MIN_SSC_SPAN;
			break;

#endif			

	}
	osdOSDMarkFactoryAdjustValue(1);
}

void osdOSDDrawLanguageMenu(void)
{
	BYTE i;
	
	osdOSDPrintString(4, 2, Display.ucLanguage, tLanguageSTR, _PURPLE, _DARKBLUE);

	for (i = 0; i < (OSD_LANGUAGE_NUM+1); i++)
	{
		if(i<=4)
			osdOSDPrintString(4, 3+i, tOSDLanguageSequence[i], tLanguageListSTR, _GREEN, _DARKBLUE);
		else
			osdOSDPrintString(16, i-2, tOSDLanguageSequence[i], tLanguageListSTR, _GREEN, _DARKBLUE);

	}
	
	if(Display.ucLanguage < 5)
		osdOSDPrintIcon(3, 3+Display.ucLanguage, _CHECK, _CYAN, _DARKBLUE);
	else
		osdOSDPrintIcon(15, Display.ucLanguage-2, _CHECK, _CYAN, _DARKBLUE);
}

#if SCALING_OSD_EN
void osdOSDDrawScalingMenu(void)
{
	BYTE i,index;
	
	osdOSDPrintString(4, 2, Display.ucLanguage, tScalingSTR, _PURPLE, _DARKBLUE);

	for ( i = 0; i <= Scaling_TypeNumbers; i++)
	{
		index = tOSDScalingSequence[i];
		osdOSDPrintString(4, 3+i, Display.ucLanguage, tpScalingList[index], _GREEN, _DARKBLUE);
	}
	osdOSDPrintIcon(3, (Display.ucScalingMode+3), _CHECK, _CYAN, _DARKBLUE);
}
#endif	//SCALING_OSD_EN

void osdOSDDrawInformationMenu(void)
{
	DWORD ulFreq;
	WORD uwTemp;
	BYTE ucBuff[6];
	
	osdOSDPrintString(7, 2, Display.ucLanguage, tInformationSTR, _PURPLE, _DARKBLUE);
	osdOSDPrintString(4, 4, 0, tInputSourceSTR, _WHITE, _DARKBLUE);
	osdOSDPrintString(12, 4, Display.ucLanguage, tpInputSourceList[tOSDSourcSELSequence[Display.ucSourceSEL]],  _WHITE, _DARKBLUE);
	osdOSDPrintString(4, 5, 0, tFormatSTR, _WHITE, _DARKBLUE);
	osdOSDPrintString(4, 6, 0, tHFrequencySTR, _WHITE, _DARKBLUE);
	osdOSDPrintString(4, 7, 0, tVFrequencySTR, _WHITE, _DARKBLUE);
	
	if ((g_ucSyncStatus & SYNC_LOSS_MASK) == 0)
	{
	#if ((MARIA_TYPE_SEL == MARIA_2) && ENABLE_NEW_SYNC)
		if (tOSDSourcSELSequence[Display.ucSourceSEL] == VGA)
		{
			osdOSDPrintString(12, 5, 0, tVGAResolutionSTR, _WHITE, _DARKBLUE);
		}
		else if(tOSDSourcSELSequence[Display.ucSourceSEL] <= SVIDEO2)
		{
			if(((g_ucVDStatus & 0x07) != 3) && ((g_ucVDStatus & 0x07) <= 5))
			{
				osdOSDPrintString(12, 5, 0, tpVDInputModeList[(g_ucVDStatus & 0x07)], _WHITE, _DARKBLUE);
			}
			else if((g_ucVDStatus & 0x07) >= 3)
			{
				mstWriteByte(GEN_00_REGBK, REGBANKVCF);	// switch to bank 3 VCF
				ucBuff[0] = mstReadByte(BK3_D0);
				ucBuff[1] = mstReadByte(BK3_D6);
				mstWriteByte(GEN_00_REGBK, REGBANKSCALER);	// switch to bank 0 Scaler
				if(((ucBuff[0] & 0xC0) == 0xC0) && ((ucBuff[1] & 0x03) == 0x02))
					osdOSDPrintString(12, 5, 0, tpVDInputModeList[6], _WHITE, _DARKBLUE);	// show SCEMA
				else
					osdOSDPrintString(12, 5, 0, tpVDInputModeList[3], _WHITE, _DARKBLUE);	// show PAL
			}
			else
			{
				osdOSDPrintString(12, 5, 0, tpVDInputModeList[7], _WHITE, _DARKBLUE);
			}
		}
		else
		{
			if((g_ucSyncStatus & PAL_MODE_B) != 0)
				osdOSDPrintString(12, 5, 0, tPALSTR, _WHITE, _DARKBLUE);
			else
				osdOSDPrintString(12, 5, 0, tNTSCSTR, _WHITE, _DARKBLUE);
		}	
	#else
		if (tOSDSourcSELSequence[Display.ucSourceSEL] == VGA)
		{
			osdOSDPrintString(12, 5, 0, tVGAResolutionSTR, _WHITE, _DARKBLUE);
		}
		else
		{
			if((g_ucSyncStatus & PAL_MODE_B) != 0)
				osdOSDPrintString(12, 5, 0, tPALSTR, _WHITE, _DARKBLUE);
			else
				osdOSDPrintString(12, 5, 0, tNTSCSTR, _WHITE, _DARKBLUE);
		}
	#endif
		g_uwHcount = mstReadWord(BK0_EB_HSPRD_H) & 0x1FFF;	// Get H Period count	//0722 kevin

		ulFreq = FRFERENCE_CLK / g_uwHcount;
		uwTemp = ulFreq / 1000;
		ucBuff[5] = uwTemp % 10;		ucBuff[1] = ucBuff[5] + _0;
		ucBuff[5] = (uwTemp / 10) % 10;		ucBuff[0] = ucBuff[5] + _0;

		ucBuff[2] = _DOT;
		ucBuff[5] = (ulFreq / 100) % 10;		ucBuff[3] = ucBuff[5] + _0;
		ucBuff[4] = 0xff;
		osdOSDPrintString(8, 6, 0, ucBuff, _WHITE, _DARKBLUE);

		g_uwVcount = mstReadWord(BK0_ED_VTOTAL_H) & 0x7FF;	// Get V period count

		if ((g_ucSyncStatus & INTERLANCE_MODE_B) !=0)
			uwTemp = ulFreq * 20 / g_uwVcount;
		else
			uwTemp = ulFreq  *10 / g_uwVcount;
		ucBuff[5] = (uwTemp / 10) % 10;		ucBuff[1] = ucBuff[5] + _0;
		ucBuff[5] = (uwTemp / 100) % 10;	ucBuff[0] = ucBuff[5] + _0;
		
		ucBuff[2] = _DOT;
		ucBuff[5] = uwTemp % 10;		ucBuff[3] = ucBuff[5] + _0;
		ucBuff[4] = 0xff;
		osdOSDPrintString(8, 7, 0, ucBuff, _WHITE, _DARKBLUE);
		
	}
	
	
}


void osdOSDLanguageMoveCTRL(SCHAR Delta)
{

	if (g_ucOSDItemValue + Delta >= OSD_LANGUAGE_NUM+1)
		g_ucOSDItemValue = ENGLISH;
	else if ((g_ucOSDItemValue + Delta) < ENGLISH)
		g_ucOSDItemValue = OSD_LANGUAGE_NUM;
	else
		g_ucOSDItemValue+= Delta;

	osdOSDClearBlock(1, 3 , 2, 5);
	osdOSDClearBlock(13, 3 , 2, 5);

	if (g_ucOSDItemValue < 5)
		osdOSDPrintString(1, g_ucOSDItemValue+3, 0, tPointMarkSTR, _WHITE, _DARKBLUE);
	else
		osdOSDPrintString(13, g_ucOSDItemValue-2, 0, tPointMarkSTR, _WHITE, _DARKBLUE);

}

#if SCALING_OSD_EN
void osdOSDScalingMoveCTRL(SCHAR Delta)
{

	if (g_ucOSDItemValue + Delta >= Scaling_TypeNumbers+1)
		g_ucOSDItemValue = FULL;
	else if ((g_ucOSDItemValue + Delta) < FULL)
		g_ucOSDItemValue = Scaling_TypeNumbers;
	else
		g_ucOSDItemValue+= Delta;

	osdOSDClearBlock(1, 3 , 2, 5);
	osdOSDPrintString(1, g_ucOSDItemValue+3, 0, tPointMarkSTR, _WHITE, _DARKBLUE);

}
#endif	//SCALING_OSD_EN

void osdOSDAdjustCTRL(SCHAR Delta)
{
	switch(g_ucOSDSelectIndex)
	{
		case PMS_CONTRAST:
			osdOSDBarAdjustCTRL(Delta);
			mstSetContrast(g_ucOSDItemValue);
			break;
		case PMS_BRIGHTNESS:
			osdOSDBarAdjustCTRL(Delta);
			mstSetBrightness(g_ucOSDItemValue);
			break;
		case PMS_HUE:
			osdOSDBarAdjustCTRL(Delta);
			mstSetHue(g_ucOSDItemValue);
			break;
		case PMS_SATURATION:
			osdOSDBarAdjustCTRL(Delta);
			mstSetSaturation(g_ucOSDItemValue);
			break;
		case PMS_GAMMA:
			osdOSDBarAdjustCTRL(Delta);
			mstSetGamma(g_ucOSDItemValue);
			break;
#if USE_ALLMACEOSD
		case MMS_DLTI:
			osdOSDBarAdjustCTRL(Delta);
			mstSetDLTI(g_ucOSDItemValue);
			break;
		case MMS_DCTI:
			osdOSDBarAdjustCTRL(Delta);
			mstSetDCTI(g_ucOSDItemValue);
			break;
		case MMS_BLACKEXT:
			osdOSDBarAdjustCTRL(Delta);
			mstSetBlackExtension(g_ucOSDItemValue);
			break;
		case MMS_WHITEEXT:
			osdOSDBarAdjustCTRL(Delta);
			mstSetWhiteExtension(g_ucOSDItemValue);
			break;
		case MMS_FACORCOLOR:
			osdOSDBarAdjustCTRL(Delta);
			mstSetFavorColor(g_ucOSDItemValue);
			break;
		case MMS_SHARPNESS:
			osdOSDBarAdjustCTRL(Delta);
			mstSetSharpness(g_ucOSDItemValue);
			break;
#endif	//USE_ALLMACEOSD

⌨️ 快捷键说明

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