📄 osd.c
字号:
#include "global.h"
#include "font.h"
#include "menu.h"
BYTE MenuFlagState;
code BYTE HexTab[16] = {_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _A, _B, _C, _D, _E, _F};
code BYTE SStr1[]= {_A,_V,_1,0x77};
code BYTE SStr2[]= {_A,_V,_2,0x77};
code BYTE NTSCStr[]= {_N,_T,_S,_C};
code BYTE PALStr[]= {_P,_A,_L,__};
//#ifdef MTV230
void ClearMenu()
{
EnableOSDRAMClr();
DoWait(2);
DisableOSDRAMClr();
//EnableOSD();
}
void ClearRow(BYTE row,BYTE startcol,BYTE num)
{
BYTE i;
byMTV_OSDRA=row |Address;
byMTV_OSDCA=startcol;
for (i=0;i< num;i++)
byMTV_OSDDT0= __;
}
void SetBGColor(BYTE StartX,BYTE StartY,BYTE num,BYTE color)
{
BYTE i;
byMTV_OSDRA=StartY|Attribute;
byMTV_OSDCA=StartX;
for(i=0;i< (num*2);i++)
byMTV_OSDDT0= color;//0x12;
}
void ShowSubMenu(BYTE menuvlaue)
{
BYTE i;
gotoxy(19,MainPageYStart+1);
PrintByteString(MOD_Item,4,0x32); //0x62 :BG Yellow, color :green
gotoxy(19,MainPageYStart+2);
PrintByteString(MENU_Item,4,0x32);
gotoxy(19,MainPageYStart+3);
PrintByteString(UP_Item,4,0x32);
gotoxy(19,MainPageYStart+4);
PrintByteString(DOWN_Item,4,0x32);
switch (menuvlaue)
{//0x62 :BG Yellow, color :green
case 0:
byMTV_OSDRA=(MainPageYStart+1) |Attribute; break;
case 1:
byMTV_OSDRA=(MainPageYStart+2) |Attribute; break;
case 2:
byMTV_OSDRA=(MainPageYStart+3) |Attribute; break;
case 3:
byMTV_OSDRA=(MainPageYStart+4) |Attribute; break;
}
byMTV_OSDCA=22;
for(i=0;i< 4;i++)
byMTV_OSDDT0= 0x12;
}
void OpenWindow(BYTE win_no, BYTE start_x, BYTE start_y, BYTE end_x, BYTE end_y, BYTE color)
{
BYTE i;
i = (win_no-1)*3; //window 1,2,3,4
byMTV_WinReg[i] = (start_y<<4)|end_y; //row start and end address
byMTV_WinReg[i+1] = (start_x<<3)|WEN; //column start address
byMTV_WinReg[i+2] = (end_x<<3)|color; // column end address and window color
}
void CloseWindow(BYTE win_no)
{
BYTE i;
i = (win_no-1)*3;
byMTV_WinReg[i+1] &= (~WEN);
}
void ClearAllWindow(void)
{
EnableOSDWinClr();
DoWait(5);
DisableOSDWinClr();
}
void gotoxy(BYTE x,BYTE y)
{
CursorX=x;
CursorY=y;
}
void SetDouble()
{
BYTE i;
for (i=0;i < 14;i++)
{
byMTV_OSDCA=30; //Colunm 30
byMTV_OSDRA= i ;
byMTV_OSDDT0= 0x01;
}
}
void DoubleWidthPrintString(BYTE *databuf,BYTE number,BYTE color)
{
BYTE i;
byMTV_OSDRA=CursorY|Address;
for(i=0;i<number;i++)
{
byMTV_OSDCA=CursorX+i;
// if(databuf[i]>255)
// byM332OSDDT1= (BYTE)(databuf[i]);
// else
byMTV_OSDDT0= (BYTE)(databuf[i]);
Short_Delay(5);
}
// For double width
byMTV_OSDRA=CursorY|Address;
byMTV_OSDCA=30;
byMTV_OSDDT0 = 0x01;
Short_Delay(15);
byMTV_OSDRA=CursorY|Attribute;
for(i=0;i<number;i++)
{
byMTV_OSDCA=CursorX+i;
// if(databuf[i]>255)
// byM332OSDDT1= 0x00|color;
// else
byMTV_OSDDT0= 0x00|color;
}
}
void PrintString(BYTE *databuf,BYTE number,BYTE color)
{
BYTE i;
byMTV_OSDRA=CursorY|Address;
for(i=0;i<number;i++)
{
byMTV_OSDCA=CursorX+i;
// if(databuf[i]>255)
// byM332OSDDT1= (BYTE)(databuf[i]);
// else
byMTV_OSDDT0= (BYTE)(databuf[i]);
Short_Delay(5);
}
byMTV_OSDRA=CursorY|Attribute;
for(i=0;i<number;i++)
{
byMTV_OSDCA=CursorX+i;
// if(databuf[i]>255)
// byM332OSDDT1= 0x00|color;
// else
byMTV_OSDDT0= 0x00|color;
}
}
void PrintByteString(BYTE*databuf,BYTE number,BYTE color)
{
BYTE i;
byMTV_OSDRA=CursorY|Address;
for(i=0;i<number;i++)
{
byMTV_OSDCA=CursorX+i;
byMTV_OSDDT0= (BYTE)(databuf[i]);
}
byMTV_OSDRA=CursorY|Attribute;
for(i=0;i<number;i++)
{
byMTV_OSDCA=CursorX+i;
byMTV_OSDDT0= 0x00|color;
}
}
void PrintChar(WORD chardata,BYTE color)
{
byMTV_OSDRA=CursorY;
byMTV_OSDCA=CursorX;
// if(chardata>255)
// byM332OSDDT1=(BYTE)chardata;
// else
byMTV_OSDDT0=(BYTE)chardata;
byMTV_OSDRA=CursorY|0x40;
byMTV_OSDCA=CursorX;
// if(chardata>255)
// byM332OSDDT1=0x00|color;
// else
byMTV_OSDDT0=0x00|color;
CursorX++;
}
void PrintHex(BYTE value, BYTE color)
{
PrintChar(HexTab[value/16], color);
PrintChar(HexTab[value%16], color);
}
void PrintValue(WORD value, BYTE color)
{
WORD Level;
BYTE i,Count;
Level=value;
//count digial num
for(Count=1;Count<5;Count++)
{
Level=Level/10;
if( Level==0 )
{
break;
}
}
Level=1;
for(i=1;i<Count;i++)
{
Level=Level*10;
}
//clear
for(i=0;i<4;i++)
{
PrintChar(__, MainPageColor);
}
CursorX=CursorX-4;
//print value
for(i=0;i<4;i++)
{
if(Level==0)
{
break;
}
else
{
PrintChar(HexTab[value/Level], color);
value=value%Level;
Level=Level/10;
}
}
}
#if 0
void ClearOSDRegion(BYTE startX, BYTE startY, BYTE color)
{/*
BYTE i;
for(i=0;i<=MainPageYEnd;i++)
{
gotoxy(startX,startY+i);
PrintString(EmptyString,MainPageItemLength,color);
} */
DisableOSD();
OSDConVal=BSEN;
EnableOSDRAMClr();
EnableOSDWinClr();
DoWait(5);
DisableOSDWinClr();
DisableOSDRAMClr();
}
#endif
void InitialOSD(void)
{
DisableOSD();
OSDConVal=BSEN;
EnableOSDRAMClr();
EnableOSDWinClr();
DoWait(50);
DisableOSDWinClr();
DisableOSDRAMClr();
}
void InitialFlag(void)
{
bDEMOFlag = 0;
bMenuFlag = 0;
bSubMenuFlag=0;
bClrFlag=0;
bSwapFlag=0;
bFactoryflag = 0;
bGammaFlag=0;
MenuFlagState = 0;
PowerFlag = 0;
FormatValue=0;
SourceFlag=0; //AV1
NTSCFlag = 1; //NTSC
bNoSync = 1;
bVsyncChange = 1;
bNTSCVideo = 1;
byVideoMode = NoVideoInout;
SyncStep = 0;
OldSyncPulse[0] = 0xFFFF; //Initial the Sync Counter Variable
OldSyncPulse[1] = 0xFFFF;
bRotationFlag = 0;
FactoryFg = 0;
SyncSW = 0;
WIDEBLKPOL = 0;
VSW = 0;
ColorSys = 0;
}
void GammaMenu(void)
{
if(bFactoryflag)
{
gotoxy(1,7);
PrintChar(_F,Red);
}
else
{
gotoxy(1,7);
PrintChar(__,MainPageColor);
}
gotoxy(MainPageXStart,MainPageYStart);
PrintByteString(VG1Str,MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+1);
PrintByteString(VG2Str,MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+2);
PrintByteString(ComAMP,MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+3);
PrintByteString(COMDC,MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+4);
PrintByteString(SDriveRed,MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+5);
PrintByteString(SDriveGreen,MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+6);
PrintByteString(SDriveBlue,MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+7);
PrintByteString(ReturnStr,MainPageItemLength,MainPageCharColor);
}
void VideoMenu(void)
{
EnableOSDRAMClr();
EnableOSDWinClr();
DisableOSD();
if(bFactoryflag)
{
gotoxy(1,7);
PrintChar(_F,Red);
}
else
{
gotoxy(1,7);
PrintChar(__,MainPageColor);
}
//gotoxy(MainPageXStart,MainPageYStart);
//PrintString(Saturation_Item,MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart);
PrintString(VideoColor_Item,sizeof(VideoColor_Item),MainPageCharColor);
//gotoxy(MainPageXStart,MainPageYStart+2);
//PrintString(Hue_Item,MainPageItemLength,MainPageCharColor);
//gotoxy(MainPageXStart,MainPageYStart+3);
//PrintString(Contrast_Item,MainPageItemLength,MainPageCharColor);
//gotoxy(MainPageXStart,MainPageYStart+3);
//PrintString(Sharpness_Item,MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+1);
PrintString(Rotation_Item,sizeof(Rotation_Item),MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+2);
PrintString(Format_Item,sizeof(Format_Item),MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+3);
PrintByteString(Gamma_Item,sizeof(Gamma_Item),MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+4);
PrintByteString(InputSource_Item,sizeof(InputSource_Item),MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+5);
PrintByteString(OSDPosition_Item,sizeof(OSDPosition_Item),MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+6);
PrintString(VideoPosition_Item,sizeof(VideoPosition_Item),MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+7);
PrintString(VideoDafaultStr,sizeof(VideoDafaultStr),MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+8);
PrintString(ExitStr,sizeof(ExitStr),Red);
// gotoxy(MainPageXStart,MainPageYStart+6);
// gotoxy(MainPageXStart,MainPageYStart+7);
// PrintString(Exit_Item[sOSD.LANGUAGE],MainPageItemLength,Red);
// PrintString(OSDSetup_Item[sOSD.LANGUAGE],MainPageItemLength,White);
// PrintString(Contrast_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
// PrintString(OSDHPosition_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
// gotoxy(MainPageXStart,MainPageYStart+5);
// PrintString(OSDVPosition_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
}
#ifdef _MTV332_
void Disp_NTSC_Mode(void)
{
Set_TintPWM = 0xAF;
byMTV_TCONADDR = 0x0b; // 0x00 ~ 0x1d
byMTV_TCONDATA = 0x88;
if(bVsyncChange){
InitialOSD();
gotoxy(20,0);
PrintChar(__,MainPageColor);
PrintString(NTSC_STR,MainPageItemLength,MainPageCharColor);
EnableOSD();
bVsyncChange = 0;
}
}
void Disp_PAL_Mode(void)
{
Set_TintPWM = 0x00;
byMTV_TCONADDR = 0x0b; // 0x00 ~ 0x1d
byMTV_TCONDATA = 0x85;
if(bVsyncChange){
InitialOSD();
gotoxy(20,0);
PrintChar(__,MainPageColor);
PrintString(PAL_STR,MainPageItemLength,MainPageCharColor);
EnableOSD();
bVsyncChange =0;
}
}
#endif
void Disp_NoSync_Input(void)
{
if(bVsyncChange)
{
InitialOSD();
gotoxy(20,0);
PrintChar(__,MainPageColor);
PrintString(NoSyncInput_STR,MainPageItemLength,MainPageCharColor);
EnableOSD();
bVsyncChange = 0;
}
}
void Disp_EmptyString(void)
{
BYTE i;
for( i = 0; i < 15; i++)
{
gotoxy(0,i);
PrintString(EmptyString,30,MainPageColor);
}
}
#ifdef _DebugMsg_
void Disp_DebugMsg(void)
{
gotoxy(26,1);
PrintString(DEBUG_STR,1,Magenta);
EnableOSD();
}
#endif
#if 0
void VideoSetupMenu(void)
{
}
void VideoBrightMenu(void)
{
if(bFactoryflag)
{
gotoxy(1,7);
PrintChar(_F,Red);
}
else
{
gotoxy(1,7);
PrintChar(__,MainPageColor);
}
OpenWindow(MainPageWinNo,MainPageXStart,MainPageYStart,MainPageXEnd,MainPageYEnd,MainPageColor);
//OpenWindow(BackGroundWinNo,BackGroundXStart,BackGroundYStart,BackGroundXEnd,BackGroundYEnd,BackGroundColor);
gotoxy(MainPageXStart,MainPageYStart);
PrintString(Brightness_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+1);
PrintString(Contrast_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+2);
PrintString(Exit_Item[sOSD.LANGUAGE],MainPageItemLength,Red);
}
void VideoColorMenu(void)
{
if(bFactoryflag)
{
gotoxy(1,7);
PrintChar(_F,Red);
}
else
{
gotoxy(1,7);
PrintChar(__,MainPageColor);
}
OpenWindow(MainPageWinNo,MainPageXStart,MainPageYStart,MainPageXEnd,MainPageYEnd,MainPageColor);
//OpenWindow(BackGroundWinNo,BackGroundXStart,BackGroundYStart,BackGroundXEnd,BackGroundYEnd,BackGroundColor);
gotoxy(MainPageXStart,MainPageYStart);
PrintString(Saturation_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+1);
PrintString(Hue_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+2);
PrintString(Exit_Item[sOSD.LANGUAGE],MainPageItemLength,Red);
}
void OSDSetupMenu(void)
{/*
if(bFactoryflag)
{
gotoxy(1,7);
PrintChar(_F,Red);
}
else
{
gotoxy(1,7);
PrintChar(__,MainPageColor);
}*/
// OpenWindow(MainPageWinNo,MainPageXStart,MainPageYStart,MainPageXEnd,MainPageYEnd,MainPageColor);
//OpenWindow(BackGroundWinNo,BackGroundXStart,BackGroundYStart,BackGroundXEnd,BackGroundYEnd,BackGroundColor);
gotoxy(MainPageXStart,MainPageYStart);
PrintString(OSDHPosition_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+1);
PrintString(OSDVPosition_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
// gotoxy(MainPageXStart,MainPageYStart+2);
// PrintString(OSDLanguage_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
gotoxy(MainPageXStart,MainPageYStart+2);
PrintString(Exit_Item[sOSD.LANGUAGE],MainPageItemLength,Red);
}
void OSDLanguageMenu(void)
{
//OpenWindow(MainPageWinNo,MainPageXStart,MainPageYStart,MainPageXEnd,MainPageYEnd,MainPageColor);
gotoxy(MainPageXStart+2,MainPageYStart+2);
PrintString(OSDLanguage_Item[sOSD.LANGUAGE],MainPageItemLength,Yellow);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -