📄 osd.c
字号:
if(OSD_Type == 3)
m = (unsigned short)yy * (OSD_WIDTH-2) + xx;
else
m = (unsigned short)yy * OSD_WIDTH + xx;
i = (unsigned char)m;
MasterSendByte(i);
i = (unsigned char)(m >> 8);
MasterSendByte(i);
MasterSendByte('-');
MasterSendByte(144);
m = value * BarWidth;
k = m / 100;
for(i=0; i<k; i++){
MasterSendByte(149);
}
if(i < BarWidth){
k = (m % 100) / 20;
switch(k){
case 0:
MasterSendByte(145);
break;
case 1:
MasterSendByte(146);
break;
case 2:
MasterSendByte(147);
break;
case 3:
MasterSendByte(148);
break;
case 4:
MasterSendByte(149);
break;
}
i++;
for(i; i<BarWidth; i++){
MasterSendByte(145);
}
}
MasterSendByte(150);
MasterSendByte('+');
/* transmit dumy data for stop bit */
WaitTx();
/* stop bit */
IIC1_CLK = 0xA0|IIC_BaudRate;
// IIC1_CON = 0x00;
WaitStop();
}
void UnselectIcon(void)
{
unsigned char k;
if(OSD_Point1 == 0){
k = OSD_Point2 << 1;
if(MainIconColor[OSD_Point2] == 1){
if(OSD_Point2 == 8){
FillLineAttr(IconPosition[k],IconPosition[k+1],2,RedColor);
}
else if(OSD_Point2 == 9){
FillLineAttr(IconPosition[k],IconPosition[k+1],2,GreenColor);
}
else if(OSD_Point2 == 10){
FillLineAttr(IconPosition[k],IconPosition[k+1],2,BlueColor);
}
else{
FillLineAttr(IconPosition[k],IconPosition[k+1],2,FrameColor);
}
}
else{
FillLineAttr(IconPosition[k],IconPosition[k+1],2,FrameMColor);
}
}
else
{
k = (OSD_Point2-13) << 1; //gan,14 to 13
if(MainIconColor[OSD_Point2+1] == 1){
FillLineAttr(IconPosition[k],IconPosition[k+1],2,FrameColor);
}
else{
FillLineAttr(IconPosition[k],IconPosition[k+1],2,FrameMColor);
}
}
}
void ShowInputSource(void)
{
unsigned char i;
OSD_Type = 6;
Osd3Init();
i = PowerStatus & ~BIT_7;
// if(i == 3){
// if(Read24C16(0xe3) != 0)
// i = 4;
// }
WriteWordIIC_HW(Scaler_Addr,0xcc,ChannelColor);
WriteXY_StrScaler(1,0,0,SourceTab[i]);
WriteXY_StrScaler(1,8,0,SourceTab[4]);
OSD_Control |= BIT_0;
WriteIIC_HW(Scaler_Addr,0x95,OSD_Control);
Timer2 = 300;
}
void VideoMenu(void)
{
if(MuteFlag)
{
MuteFlag = 0;
if(Volume != 0) { AUDIO_On();} //CANCEL AUDIO MUTE
flag3 &= ~BIT_4;
OSD_OFF();
}
switch(OSD_Type){
case 0x00:
SavePointer = 0;
OsdInit();
OSD_Type = 1;
//osd on
OSD_Control |= BIT_0;
WriteIIC_HW(Scaler_Addr,0x95,OSD_Control);
if((flag3 & BIT_2) != 0x00)
printf("OSD ON\r\n");
break;
default:
OSD_OFF();
OsdInit();
OSD_Type = 1;
//osd on
OSD_Control |= BIT_0;
WriteIIC_HW(Scaler_Addr,0x95,OSD_Control);
break;
}
KeyBuffer = 0xff;
}
/*
void VideoSelectItem(void)
{
SaveData();
VideoUnSelectIcon();
if(OSD_Point1 == 0){
if(--OSD_Point2 > 10){
OSD_Point2 = 10;
}
}
ShowVideoSubMenu();
}
*/
void ShowVideoMenu(void)
{
code unsigned char VideoIcon[][5]={
4,3,0,0x00,0x01,
4,8,0,0x18,0x19,
4,13,0,0x24,0x25,
4,18,0,0x26,0x27,
4,22,2,0x28,0x29,
4,22,4,0x0a,0x0b,
4,18,6,0x16,0x17,
4,13,6,0x18,0x19,
4,8,6,0x1a,0x1b,
4,3,6,0x14,0x15, //gan,TV-SEARCH
4,0,4,0x12,0x13,
4,0,2,0x20,0x20,
};
unsigned char i;
for(i=0; i<12; i++)
{
if(VideoIconColor[i] == 1){
WriteWordIIC_HW(Scaler_Addr,0xcc,FrameColor);
}
else
{
WriteWordIIC_HW(Scaler_Addr,0xcc,FrameMColor);
}
WriteStringScaler(1,VideoIcon[i]);
}
}
void VideoUnSelectIcon(void)
{
unsigned char k;
//Icon
if(OSD_Point1 == 0){
k = OSD_Point2 << 1;
}
else{
k = (OSD_Point2-14) << 1;
}
if(VideoIconColor[OSD_Point2] == 1){
FillLineAttr(AVIconPosition[k],AVIconPosition[k+1],2,FrameColor);
}
else{
FillLineAttr(AVIconPosition[k],AVIconPosition[k+1],2,FrameMColor);
}
}
void ShowVideoSubMenu(void)
{
unsigned char k;
//Icon
if(OSD_Point1 == 0){
k = OSD_Point2 << 1;
}
else{
k = (OSD_Point2-14) << 1;
}
if(VideoIconColor[OSD_Point2] == 1){
FillLineAttr(AVIconPosition[k],AVIconPosition[k+1],2,IconColor);
}
else{
FillLineAttr(AVIconPosition[k],AVIconPosition[k+1],2,IconMColor);
}
// Show Titel
k = Language * 25 + OSD_Point2;
WriteXY_CStrScaler(0,2,2,20,VideoTab1[k]);
//Show Value
switch(OSD_Point2){
case 0:
ClearText1();
ShowBrightness();
break;
case 1:
ShowContrast();
break;
case 2:
ShowSaturation();
break;
case 3:
ShowTint();
break;
case 4:
ClearText1();
ShowSharpness();
break;
case 5:
case 9:
case 10:
// WriteXY_CStrScaler(0,1,4,18,0);
ClearText1();
ShowNO_YES(0);
break;
case 6:
ClearText1();
ShowOSD_X();
break;
case 7:
ShowOSD_Y();
break;
case 8:
ClearText1();
ShowOSD_Timer();
break;
}
}
void VideoValueUp(void)
{
if((OSD_Type == 0x00)||(OSD_Type == 0x06)){
if((flag1 & BIT_3) == 0){
DirectVolume();
}
}
else if(OSD_Type == 0x01){ // 1 = main
switch(OSD_Point2){
case 0:
BrightnessUp();
SavePointer = 1;
break;
case 1:
ContrastUp();
SavePointer = 2;
break;
case 2:
SaturationUp();
SavePointer = 14;
break;
case 3:
TintUp();
SavePointer = 15;
break;
case 4:
SharpnessUp();
SavePointer = 16;
break;
// case 5:
// Repeat = 0xff;
// break;
case 5:
ShowNO_YES(1);
Recall();
ShowNO_YES(0);
Repeat = 0xff;
break;
case 6:
OSD_X_Up();
SavePointer = 11;
break;
case 7:
OSD_Y_Up();
SavePointer = 12;
break;
case 8:
OSD_TimerUp();
SavePointer = 13;
break;
case 9:
if(TunerMode)
ass();
break;
case 10:
OSD_OFF();
lrflag = 0;
Repeat = 0xff;
break;
default:
Repeat = 0xff;
break;
}
}
else if(OSD_Type == 3){
if(++Volume > 100){
Volume = 100;
}
else{
SetVolume();
ShowVolume();
SavePointer = 10;
}
}
KeyBuffer = 0xff;
}
void VideoValueDown(void)
{
if((OSD_Type == 0x00)||(OSD_Type == 0x06)){
if((flag1 & BIT_3) == 0){
DirectVolume();
}
}
else if(OSD_Type == 0x01){
switch(OSD_Point2){
case 0:
BrightnessDown();
SavePointer = 1;
break;
case 1:
ContrastDown();
SavePointer = 2;
break;
case 2:
SaturationDown();
SavePointer = 14;
break;
case 3:
TintDown();
SavePointer = 15;
break;
case 4:
SharpnessDown();
SavePointer = 16;
break;
// case 5:
// Repeat = 0xff;
// break;
case 6:
OSD_X_Down();
SavePointer = 11;
break;
case 7:
OSD_Y_Down();
SavePointer = 12;
break;
case 8:
OSD_TimerDown();
SavePointer = 13;
break;
default:
Repeat = 0xff;
break;
}
}
else if(OSD_Type == 3){
if(--Volume > 100){
Volume = 0;
}
else{
SetVolume();
ShowVolume();
SavePointer = 10;
}
}
KeyBuffer = 0xff;
}
void VideoMenu0(void)
{
code unsigned char VolumeStr0[]={ 10," "};
code unsigned char VolumeStr1[]={ 10,"BRIGHTNESS"};
code unsigned char VolumeStr2[]={ 10," CONTRAST "};
code unsigned char VolumeStr3[]={ 10,"SATURATION"};
code unsigned char VolumeStr4[]={ 10," TINT "};
code unsigned char VolumeStr5[]={ 10," SEARCH "};
//code unsigned char VolumeStr6[]={ 10,"SHARPNESS "};
code unsigned char *Tab1[]={ VolumeStr0,VolumeStr1,VolumeStr2,VolumeStr3,VolumeStr4,VolumeStr5};
OSD_Type = 3; //1
Osd4Init();
WriteWordIIC_HW(Scaler_Addr,0xcc,TextColor);
WriteXY_CStrScaler(1,5,1,10,Tab1[SelVideoMenu]);
switch(SelVideoMenu)
{
case 1:
ShowNum(1,15,3,Brightness);
ShowSliderBar(6,2,Brightness);
break;
case 2:
ShowNum(1,15,3,Contrast);
ShowSliderBar(6,2,Contrast);
break;
case 3:
ShowNum(1,15,3,Saturation);
ShowSliderBar(6,2,Saturation);
break;
case 4:
ShowNum(1,15,3,Tint);
ShowSliderBar(6,2,Tint);
break;
case 5:
ShowNum(1,8,3,SearchChannel);
ShowSliderBar(1,2,(unsigned char)((guage-0x572)/130.16));
break;
}
OSD_Control |= BIT_0;
WriteIIC_HW(Scaler_Addr,0x95,OSD_Control);
}
code unsigned char m1[]={11,"0123456789-"};
code unsigned char *ChannelTab[]={ m1 };
unsigned char u1,ChannelNumber,jb;
void WriteXY_Str(unsigned char *p)
{
unsigned char j;
INTIIC1_FLG = 0xff;
IIC1_DATA = Scaler_Addr;
IIC1_CLK = 0x20 | IIC_BaudRate;
IIC1_CON = 0x00;
MasterSendByte(0xe0);
MasterSendByte(0x90);
MasterSendByte(0);
MasterSendByte(0);
if(u1==0)
{ MasterSendByte(p[channel+1]);
for(j=0; j<7; j++)
{ MasterSendByte(32);}
}
else if(u1==1)
{ MasterSendByte(p[11]);
MasterSendByte(p[11]);
for(j=0; j<6; j++)
{ MasterSendByte(32);}
}
else if(u1==2)
{ jb = ChannelNumber;
MasterSendByte(p[ChannelNumber+1]);
MasterSendByte(p[11]); // "/"
for(j=0; j<6; j++)
{ MasterSendByte(32);}
}
else if(u1==3)
{ MasterSendByte(p[jb+1]); //36 , "3"
MasterSendByte(p[ChannelNumber+1]); //36 , "6"
for(j=0; j<6; j++)
{ MasterSendByte(32);}
}
else if(u1==4) //Into TV Mode
{
if(ChannelNumber<10)
{
MasterSendByte(p[ChannelNumber+1]);
for(j=0; j<7; j++)
{ MasterSendByte(32);}
}
else
{
MasterSendByte(p[ChannelNumber/10+1]);
MasterSendByte(p[ChannelNumber%10+1]);
for(j=0; j<6; j++)
{ MasterSendByte(32);}
}
}
else if(u1==5)
{ MasterSendByte(p[channel/10+1]); //36 , "3"
MasterSendByte(p[channel%10+1]); //36 , "6"
for(j=0; j<6; j++)
{ MasterSendByte(32);}
}
WaitTx();
IIC1_CLK = 0xA0|IIC_BaudRate;
WaitStop();
}
void ShowChannel()
{
OSD_Type = 6;
Osd3Init();
WriteWordIIC_HW(Scaler_Addr,0xcc,ChannelColor);
WriteXY_Str(ChannelTab[0]);
OSD_Control |= BIT_0;
WriteIIC_HW(Scaler_Addr,0x95,OSD_Control);
Timer2 = 500;
}
/*
void Showlanuage(unsigned char i)
{
code unsigned char String10[]={ 11,12,8," JAPANESE "};
code unsigned char String20[]={ 5,22,8,"OUI"};
code unsigned char String30[]={ 4,22,8,"JA"};
code unsigned char String40[]={ 4,22,8,"Sd"};
code unsigned char String50[]={ 4,22,8,"Sg"};
code unsigned char String60[]={ 4,22,8,"JA"};
code unsigned char String70[]={ 5,22,8,"SIM"};
code unsigned char String80[]={ 3,22,8,0x97};
code unsigned char *Tab1[]={ String10,String20,String30,String40,String50,String60,String70,String80};
code unsigned char String11[]={ 11,3,8," ENGLISH"};
code unsigned char String21[]={ 5,12,8,"NON"};
code unsigned char String31[]={ 6,12,8,"NEIN"};
code unsigned char String41[]={ 4,12,8,"NO"};
code unsigned char String51[]={ 4,12,8,"NO"};
code unsigned char String61[]={ 5,12,8,"NEE"};
code unsigned char String71[]={ 5,12,8,"N^O"};
code unsigned char String81[]={ 3,12,8,0x98};
code unsigned char *Tab2[]={ String11,String21,String31,String41,String51,String61,String71,String81};
if(i == 0)
WriteWordIIC_HW(Scaler_Addr,0xcc,TextSelColor);
else
WriteWordIIC_HW(Scaler_Addr,0xcc,TextColor);
WriteStringScaler(1,Tab2[Language]);
// WriteStringScaler(0,Tab2[Language]);
if(i != 0)
WriteWordIIC_HW(Scaler_Addr,0xcc,TextSelColor);
else
WriteWordIIC_HW(Scaler_Addr,0xcc,TextColor);
WriteStringScaler(1,Tab1[Language]);
// WriteStringScaler(0,Tab1[Language]);
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -