📄 osd.c
字号:
void VideoMiscMenu(void)
{
OpenWindow(MainPageWinNo,MainPageXStart,MainPageYStart,MainPageXEnd,MainPageYEnd,MainPageColor);
//OpenWindow(BackGroundWinNo,BackGroundXStart,BackGroundYStart,BackGroundXEnd,BackGroundYEnd,BackGroundColor);
//gotoxy(MainPageXStart,MainPageYStart);
//PrintString(VsignalPosition_Item,MainPageItemLength,MainPageCharColor);
//gotoxy(MainPageXStart,MainPageYStart+1);
//PrintString(HsignalPosition_Item,MainPageItemLength,MainPageCharColor);
//gotoxy(MainPageXStart,MainPageYStart+2);
//PrintString(PWM_Item,MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart);
PrintString(CommonPulse_Item,MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+1);
PrintString(YGain_Item,MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+2);
PrintString(BlackLevel_Item,MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+3);
PrintString(YaperGain_Item,MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+4);
PrintString(RsubBri_Item,MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+5);
PrintString(BsubBri_Item,MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+6);
PrintString(WhitePeakLevel_Item,MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+7);
PrintString(Gamma1_Item,MainPageItemLength,MainPageCharColor);
// gotoxy(MainPageXStart,MainPageYStart+8);
// PrintString(Gamma2_Item,MainPageItemLength,MainPageCharColor);
// gotoxy(MainPageXStart,MainPageYStart+9);
// PrintString(Exit_Item,MainPageItemLength,Red);
}
#endif //For the above #if 0
//void ShowBar(BYTE start_x, BYTE start_y, BYTE end_x, BYTE end_y, BYTE color)
void ShowBar(BYTE row)
{
OpenWindow(1,0,row+1,17,row+1,Magenta);
if (row >0)
{
byMTV_OSDRA=row |Address;
byMTV_OSDCA=0;
byMTV_OSDDT0= 0x00;
}
byMTV_OSDRA=row+1;
byMTV_OSDCA=0;
byMTV_OSDDT0= PTRICON;
byMTV_OSDRA=(row+1)|Attribute;
byMTV_OSDCA=0;
byMTV_OSDDT0= Yellow;
}
void ShowBarDown(BYTE row,BYTE itembar)
{
OpenWindow(1,0,row+1,17,row+1,Yellow);
if (row == itembar-1)
{
byMTV_OSDRA=(1) |Address;
byMTV_OSDCA=0;
byMTV_OSDDT0= 0x00;
}
else
{
byMTV_OSDRA=(row+2) |Address;
byMTV_OSDCA=0;
byMTV_OSDDT0= 0x00;
}
byMTV_OSDRA=row+1;
byMTV_OSDCA=0;
byMTV_OSDDT0= PTRICON;
byMTV_OSDRA=(row+1)|Attribute;
byMTV_OSDCA=0;
byMTV_OSDDT0= 0x06;
}
void Disp_Nothing(void)
{
}
void OSDProc(void)
{
(*MenuProcess)();
}
void VideoReturnMain(void)
{
bMenuFlag = 0;
bSubMenuFlag=0;
bClrFlag=0;
ItemIndex = VideoITEMPOS;
// bGammaFlag=0;
MenuFlagState = 0;
MenuProcess = Disp_VideoMenu;
}
void ReturnMain(void)
{
bMenuFlag = 0;
bSubMenuFlag=0;
bClrFlag=0;
ItemIndex = GAMMAITEMPOS;
bGammaFlag=0;
MenuFlagState = 0;
MenuProcess = Disp_VideoMenu;
}
void Disp_Entry(void)
{
if(BKLT_En==0)
return;
if(bMenuFlag == 0)
{
DisableOSD();
bMenuFlag = 1;
OsdTimer = 10000;
return;
}
if(OsdTimer == 0)
{
if(!bNoSync)
{
bMenuFlag = 0;
bSubMenuFlag = 0;
bGammaFlag=0;
MenuFlagState = 0;
bSubMenuFlag=0;
}
}
if(KeyNo == MENUKEY||IR_Key == IR_Menu_Key)
{
DisableOSD();
bMenuFlag = 0;
bSubMenuFlag=0;
bClrFlag=0;
bGammaFlag=0;
MenuFlagState = 0;
ItemIndex = 0;
OsdTimer = OSD_OFFTIME;
MenuProcess = Disp_VideoMenu;
}
else if (KeyNo==POWERKEY ||IR_Key == IR_Power_Key)
{
DisableOSD();
bMenuFlag = 0;
bSubMenuFlag=0;
bClrFlag=0;
Res_BKLT;
bGammaFlag=0;
MenuFlagState = 0;
ItemIndex = 0;
OsdTimer = OSD_OFFTIME;
ShowSubMenu(0);
MenuProcess = Disp_PowerMenu;
EnableOSD();
}
else if (IR_Key == IR_Dimmer_Key)// 060830 for TV (For remote control and auto search channel)
{
TV_Channel_Search();
}
else if (KeyNo == UPKEY)// 060830 for TV channel up
{
#ifdef _TV_
TV_Channel_Up();
#endif
}
else if (KeyNo == DOWNKEY)// 060830 for TV channel down
{
#ifdef _TV_
TV_Channel_Down();
#endif
}
}
void SaveProgressData(BYTE progress_no)
{
switch(progress_no)
{
case BRIGHT_BRIGHTNESS:
case BRIGHT_CONTRAST:
case BRIGHT_SUBCONTRAST:
EEPROM_Write(sBrightAddrSt, &sBright.Brightness, sBrightDataSize);
break;
case COLOR_SATURATION:
case COLOR_HUE:
EEPROM_Write(sColor1AddrSt, &sColor.Saturation, sColorDataSize);
break;
case GammaVg1:
case GammaVg2:
case Vcomamp:
case Vcomdc:
case Drivered:
case Drivegreen:
case Driveblue:
case WHITELIMITE:
case BLACKLIMITE:
EEPROM_Write(sGammaAddrSt, &sGamma.Vg1, sGammaDataSize);
break;
case InputSource:
EEPROM_Write(sVideoInputSourceAddSt, &sImage.InputMode, sImageDataSize);
break;
case OSDHPosi:
case OSDVPosi:
EEPROM_Write(sOSDAddrSt, &sOSD.H_Pos, sOSDDataSize);
break;
case Video_VPosi:
case Video_HPosi:
EEPROM_Write(sVideoPosiAddSt, &sVideoPos.H_Pos, sVideoPosiDataSize);
break;
case ROTATION:
break;
case TVCH: // 060830 for TV EEPROM address(save channel and search channel)
EEPROM_Write(sTVChannelAddSt, &TVChannel, sTVChannelDataSize);
break;
case SaveTVSearch:
EEPROM_Write(sTVSearchAddSt, &TVSearchCH, sTVSearchDataSize);
break;
}
}
void GetProgressData(BYTE progress_no)
{
switch(progress_no)
{
case BRIGHT_BRIGHTNESS:
ItemValue.value = sBright.Brightness;
if(FactoryFg)
ItemValue.min = 0x00;//MinBright;
else
ItemValue.min = 0x40;//MinBright;
ItemValue.max = 0xFF;//MaxBright;
break;
case BRIGHT_SUBCONTRAST:
ItemValue.value = sBright.SubContrast;
ItemValue.min = 0x00;//MinBright;
ItemValue.max = 0x0F;//MaxBright;
break;
case InputSource:
ItemValue.value = sImage.InputMode;
ItemValue.min = 0x00;//MinBright;
ItemValue.max = 0x03;//MaxBright;
break;
case SHARPNESS:
ItemValue.value = sColor.Sharpness;
ItemValue.min = 0x00;//MinBright;
ItemValue.max = 0x3F;//MaxBright;
break;
case ROTATION:
break;
case BRIGHT_CONTRAST:
ItemValue.value = sBright.Contrast;
ItemValue.min = 0x00;//MinCont;
ItemValue.max =0x7F;// MaxCont;
break;
case COLOR_SATURATION:
ItemValue.value = sColor.Saturation;
ItemValue.min = 0x00;//MinSat;
ItemValue.max =0x7F;// MaxSat;
break;
case COLOR_HUE:
ItemValue.value = sColor.Hue;
ItemValue.min = 0x00;//MinHue;
ItemValue.max= 0x7F;//MaxHue;
break;
case GammaVg1:
ItemValue.value = sGamma.Vg1;
ItemValue.min = 0x00;//0x00;
ItemValue.max =0xff;// 0xff;
break;
case GammaVg2:
ItemValue.value = sGamma.Vg2;
ItemValue.min = 0x00;//0x00;
ItemValue.max =0xff;// 0xff;
break;
case Vcomamp:
ItemValue.value = sGamma.CAMP;
ItemValue.min = 0x00;//0x00;
ItemValue.max =0xff;// 0xff;
break;
case Vcomdc:
ItemValue.value = sGamma.CDC;
ItemValue.min = 0x00;//0x00;
ItemValue.max =0xff;// 0xff;
break;
case Drivered:
ItemValue.value = sGamma.DR;
ItemValue.min = 0x00;//0x00;
ItemValue.max =0x3F;// 0xff;
break;
case Drivegreen:
ItemValue.value = sGamma.DG;
ItemValue.min = 0x00;//0x00;
ItemValue.max =0x3F;// 0xff;
break;
case Driveblue:
ItemValue.value = sGamma.DB;
ItemValue.min = 0x00;//0x00;
ItemValue.max =0x3F;// 0xff;
break;
case OSDHPosi:
ItemValue.value = sOSD.H_Pos;
ItemValue.min = 0x07;//0x00;
ItemValue.max =0x24;// 0xff;
break;
case OSDVPosi:
ItemValue.value = sOSD.V_Pos;
ItemValue.min = 0x05;//0x00;
ItemValue.max =0x17;// 0xff;
break;
case WHITELIMITE:
ItemValue.value = sGamma.WhiteLimit;
ItemValue.min = 0x00;//0x00;
ItemValue.max =0x15;// 0xff;
break;
case BLACKLIMITE:
ItemValue.value = sGamma.BlackLimit;
ItemValue.min = 0x00;//0x00;
ItemValue.max =0x15;// 0xff;
break;
case Video_HPosi:
ItemValue.value = sVideoPos.H_Pos;
ItemValue.min = 0x45;//0x00;
ItemValue.max =0x7F;// 0xff;
break;
case Video_VPosi:
ItemValue.value = sVideoPos.V_Pos;
ItemValue.min = 0x04;//0x00;
ItemValue.max =0x64;// 0xff;
break;
}
}
void SetProgressData(BYTE progress_no)
{
switch(progress_no)
{
case BRIGHT_BRIGHTNESS:
Set_VideoBrightness();
break;
case SHARPNESS:
Set_VideoSharpness();
#if 0
#ifdef _MTV332_
Set_SharpPWM = 0xff;
#endif
#endif
break;
case ROTATION:
break;
case BRIGHT_CONTRAST:
Set_VideoContrast();
break;
case BRIGHT_SUBCONTRAST:
Set_VideoSubContrast();
break;
case COLOR_SATURATION:
Set_VideoSaturation();
break;
case COLOR_HUE:
Set_VideoHue();
break;
case GammaVg1:
#ifdef _MTV332_
// sGamma.Vg1= ItemValue.value;
Set_GammaVg1();
#if 0
GammaPWM_VG1L =sGamma.Vg1;
#endif
#endif
break;
case GammaVg2:
#ifdef _MTV332_
// sGamma.Vg2= ItemValue.value;
Set_GammaVg2();
#if 0
GammaPWM_VG2L =sGamma.Vg2;
#endif
#endif
break;
case Vcomamp:
Set_VCOMAMP();
break;
case Vcomdc:
Set_VCOMDC();
break;
case Drivered:
Set_DriveR();
break;
case Drivegreen:
Set_DriveG();
break;
case Driveblue:
Set_DriveB();
break;
case InputSource:
ShowInputSource(ItemValue.value);
break;
case OSDHPosi:
Set_OSD_H();
break;
case OSDVPosi:
Set_OSD_V();
break;
case WHITELIMITE:
Set_WhiteLimiter();
break;
case BLACKLIMITE:
Set_BlackLimiter();
break;
case Video_VPosi:
Set_Video_VPos();
break;
case Video_HPosi:
Set_Video_HPos();
break;
}
}
//void ShowEmptyBar1(BYTE start_x,BYTE start_y,BYTE value)
void ShowEmptyBar1(BYTE start_x,BYTE start_y)
{
BYTE i;
// gotoxy(start_x,start_y);
// gotoxy(0,9);
// PrintByteString(progbar,30,MainPageCharColor);
byMTV_OSDRA=start_y |Address;
byMTV_OSDCA=start_x;
for (i=BarSt;i< BarLen;i++)
byMTV_OSDDT0= _COBAR_EMPTY;
//Painting for line color
byMTV_OSDRA=start_y |Attribute;
byMTV_OSDCA=start_x; //painting the column j
for (i=BarSt;i< BarLen;i++)
byMTV_OSDDT0=0x02; //green color
}
void ShowBar1(BYTE start_x,BYTE start_y,BYTE value)
{
BYTE j=24; //define in final position
if( value <= 100)
j= value / 4; //Get Major posittion
else
j=24; //More then 100 , must limit at 100
if (j >24)
j=24;
//Painting for Block char
byMTV_OSDRA=start_y |Address;
byMTV_OSDCA=start_x+ j;//start_x+ (j*2);
byMTV_OSDDT0= _COBAR_BLOCK;
//Painting for Block color
byMTV_OSDRA=start_y |Attribute;
byMTV_OSDCA=start_x+j; //painting the column j
switch (value %4)
{
case 0:
byMTV_OSDDT0= 0x12; break; //Blue color
case 1:
byMTV_OSDDT0= 0x52; break; //Green Color
case 2:
byMTV_OSDDT0= 0x42; break; //Red color
case 3:
byMTV_OSDDT0= 0x62; break; //Blue+Red color
}
}
//code BYTE CharData[]={_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_A,_B,_C,_D,_E,_F};
void ShowProgress(BYTE *prog)
{
BYTE msgbuf[]={0x00,0x00}; //BYTE msgbuf[4]={0x00,0x00,0x00,0x00};
WORD temp;//,temp1;
GetProgressData(prog[3]);
if(prog[3]!=InputSource)
{
//0°63 only 64 level
temp = (ItemValue.value - ItemValue.min)*100
/(ItemValue.max - ItemValue.min);
msgbuf[1] = HexTab[(temp%10)]; //HexTab[(temp1%10)];
msgbuf[0] = HexTab[(temp/10)]; //HexTab[(temp1/10)];
gotoxy(BarSt,ValueY);
switch(prog[3])
{
case BRIGHT_BRIGHTNESS:
PrintByteString(Brightness_Item,sizeof(Brightness_Item),MainPageCharColor);
break;
case COLOR_SATURATION:
PrintByteString(Saturation_Item,sizeof(Saturation_Item),MainPageCharColor);
break;
case COLOR_HUE:
PrintByteString(Hue_Item,sizeof(Hue_Item),MainPageCharColor);
break;
case BRIGHT_CONTRAST:
PrintByteString(Contrast_Item,sizeof(Contrast_Item),MainPageCharColor);
break;
case BRIGHT_SUBCONTRAST:
PrintByteString(SubContrast_Item,sizeof(SubContrast_Item),MainPageCharColor);
break;
case SHARPNESS:
PrintByteString(Sharpness_Item,sizeof(Sharpness_Item),MainPageCharColor);
break;
case ROTATION:
break;
case GammaVg1:
PrintByteString(GammaVg1_Str_Item,sizeof(GammaVg1_Str_Item),MainPageCharColor);
break;
case GammaVg2:
PrintByteString(GammaVg2_Str_Item,sizeof(GammaVg2_Str_Item),MainPageCharColor);
break;
case Vcomamp:
PrintByteString(VCOMAMP_Str_Item,sizeof(VCOMAMP_Str_Item),MainPageCharColor);
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -