📄 osdmenu.c
字号:
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 + -