📄 t102osd.c
字号:
//#include "T118\\OSDDRAW.C"
#include "T118\\T102OSD.h"
#include "T118\\TW101REG.H"
#include "T118\\OSDDRAW.c"
#include "setup_VA.h"
#include "memmap_i2c.h"
#ifdef NEW_OSD
#include "font1216.c"
#else
#include "T118\\T102_Font12W18H.c" // 12W18H
//#include "T102_Font8W16H.c" // 8W16H // It's better for Au 3.5".
//#include "T102_Font6W16H.c" // 6W16H // It's too small for Au 3.5".
#endif
void OSDInit(void)
{
unsigned int i;
// printf_w("\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&7 %x\n",k);
BYTE temp_data1;
OSDCfgWr(OSD_CTRL,0x18); //disable osd and width*1
OSDSetRamAddr(FONT_DATA_START_ADDRESS);
OSDCfgWr(CHAR_FONT_SIZE,FONT_SIZE);
OSDCfgWr(CHAR_RAM_BASE_A,CHAR_MAIN_MENU_START); //To setup character index start address.
OSDCfgWr(CHAR_RAM_END_A,CHAR_RAM_END); //This is to set index end address.
OSDCfgWr(BLINK_CTRL,0x09);
OSDCfgWr(ALPHA_BLD_CTRL,0x84);
OSDLoadColor();
OSDSetRamAddr(FONT_DATA_START_ADDRESS);
delay_1ms(5);
No_INC_I2C_Addr_Flag = 1;
WriteToI2c(TW101,OSD_RAM_DL, AllFonts_NEW , sizeof(AllFonts_NEW));
No_INC_I2C_Addr_Flag = 0;
for(i=0;i<OSD_LINE_NUM;i++){
OSDCleanLine(0,i,0,31);
OSDSetLineAttribute(i,0x80);
}
}
void OSDShowLine(BYTE *string,BYTE x,BYTE y,BYTE cColor,BYTE cLength)
{
OSDCfgWr(0x00,0x80);
BYTE c,k = 0;
BYTE temp_date2[512];
if((x < 30) && ( y < OSD_LINE_NUM))
{
OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y << 5)+x);
// twdWr_Burst_A(OSD_RAM_DL); // Write OSD index
while((*string) != EOL && (x < cLength)){
c=*string++;
if(c>0x40) // Character
{
temp_date2[k] = c-IndexCharacterOffset;
k = k+1;
//twdWr_Burst_D(c-IndexCharacterOffset);
}
else if(c>=0x30) // number
{
temp_date2[k] = c-IndexNumOffset;
k = k+1;
//twdWr_Burst_D(c-IndexNumOffset);
}
else
{
temp_date2[k] = c;
k = k+1;
//twdWr_Burst_D(c);
}
temp_date2[k] = cColor;
k = k+1;
//twdWr_Burst_D(cColor );
x++;
}
No_INC_I2C_Addr_Flag = 1;
WriteToI2c(TW101,OSD_RAM_DL, temp_date2 , k);
No_INC_I2C_Addr_Flag = 0;
}
//twdWr_Burst_P();
}
void OSDNumConvert(BYTE cNum)
{
printf_w("*******************************cNum %d ",cNum);
BYTE temp_date[4];
BYTE i;
if(cNum<10)
{
switch(cNum){
case 9: temp_string[0]='9' ; break;
case 8: temp_string[0]='8' ; break;
case 7: temp_string[0]='7' ; break;
case 6: temp_string[0]='6' ; break;
case 5: temp_string[0]='5' ; break;
case 4: temp_string[0]='4' ; break;
case 3: temp_string[0]='3' ; break;
case 2: temp_string[0]='2' ; break;
case 1: temp_string[0]='1' ; break;
case 0: temp_string[0]='0' ; break;
default: break;
}
temp_string[1] = BLANK;
temp_string[2] = BLANK;
temp_string[3] = EOL;
}
else if(cNum<100)
{
temp_date[0] = cNum/10;
temp_date[1] = cNum%10;
for(i=0;i<2;i++)
{
switch(temp_date[i]){
case 9: temp_string[i]='9' ; break;
case 8: temp_string[i]='8' ; break;
case 7: temp_string[i]='7' ; break;
case 6: temp_string[i]='6' ; break;
case 5: temp_string[i]='5' ; break;
case 4: temp_string[i]='4' ; break;
case 3: temp_string[i]='3' ; break;
case 2: temp_string[i]='2' ; break;
case 1: temp_string[i]='1' ; break;
case 0: temp_string[i]='0' ; break;
default: break;
}
}
temp_string[2] = BLANK;
temp_string[3] = EOL;
}
else if(cNum==100)
{
temp_string[0] = '1';
temp_string[1]= '0';
temp_string[2] = '0';
temp_string[3] = EOL;
}
}
#if 0
OSD_BRIGHT_INDEX = 0,
OSD_CONTRAST_INDEX,
OSD_COLOR_INDEX,
OSD_SHAPPNESS_INDEX,
OSD_SCREEN_MODE_INDEX,
OSD_OVERTURN_INDEX,
OSD_DEFAULT_INDEX,
#endif
void AdjVideoBright(void)
{
BYTE temp_bright = 0x80-50+osd_bright;
WriteToI2c(TW101,0x69, &temp_bright , 1);
}
void AdjVideoContrast(void)
{
BYTE temp_contrast = 0x80-50+osd_contrast;
WriteToI2c(TW101,0x68, &temp_contrast , 1);
}
void AdjVideocolor(void)
{
BYTE temp_color = 0x80-50+osd_color;
WriteToI2c(TW101,0x6C, &temp_color , 1);
}
void AdjVideoSharp(void)
{
BYTE temp_sharp;
if(osd_shappness<8)
{
temp_sharp = (osd_shappness<<1)|0x01;
}
else if(osd_shappness == 8)
{
temp_sharp = (0x07<<1)|0x01;
}
WriteToI2c(0x54,0x80, &temp_sharp , 1);
}
void AdjVideoSet_screen(void)
{
T118_tv_type_setting();
}
void AdjVideoSet_over(void)
{
T118_tv_overturn_setting();
}
void AdjVideoSet_default(void)
{
T118_osd_default_setting();
osd_bright = 50;
osd_contrast = 50;
osd_shappness = 0;
osd_color = 50;
osd_screen_mode = 0;
osd_overturn = 0;
}
void OSDItemAdjVideo(void)
{
switch(osd_menu_status){
case OSD_BRIGHT_INDEX:
AdjVideoBright();
break;
case OSD_CONTRAST_INDEX:
AdjVideoContrast();
break;
case OSD_COLOR_INDEX:
AdjVideocolor();
break;
case OSD_SHAPPNESS_INDEX:
AdjVideoSharp();
break;
case OSD_SCREEN_MODE_INDEX:
AdjVideoSet_screen();
break;
case OSD_OVERTURN_INDEX:
AdjVideoSet_over();
break;
case OSD_DEFAULT_INDEX:
AdjVideoSet_default();
T118_tv_overturn_setting();
T118_tv_type_setting();
OSDOpenMenu();
OSDShowVideoData();
break;
default :break;
}
}
void OSD_menu_fun(void)
{
if(osd_time_count)
osd_menu_status++;
if(osd_menu_status > OSD_DEFAULT_INDEX)
osd_menu_status = 0;
if(osd_time_count==0)
{
OSDOpenMenu();
}
OSDShowVideoData();
osd_time_count = 10;
}
#if 0
EXTERN BYTE No_INC_I2C_Addr_Flag;
EXTERN BYTE temp_string[4];
EXTERN BYTE osd_time_count;
EXTERN BYTE osd_menu_status;
EXTERN BYTE osd_bright;
EXTERN BYTE osd_contrast;
EXTERN BYTE osd_shappness;
EXTERN BYTE osd_color;
EXTERN BYTE osd_screen_mode;
EXTERN BYTE osd_overturn;
{
BYTE temp_date2 = 50;
WriteToI2c(0xa0, OSD_BRIGHT_ADDR,&temp_date2, 1);
WriteToI2c(0xa0, OSD_CONTRAST_ADDR,&temp_date2, 1);
WriteToI2c(0xa0, OSD_COLOR_ADDR,&temp_date2 ,1);
temp_date2 = 0;
WriteToI2c(0xa0, OSD_SHAPPNESS_ADDR,&temp_date2, 1);
WriteToI2c(0xa0, OSD_SCREEN_MODE_ADDR,&temp_date2, 1);
WriteToI2c(0xa0, OSD_OVERTURN_ADDR,&temp_date2, 1);
}
#endif
void OSDItemAdj(BYTE cAdj)
{
if(cAdj==INCREASE)
{
switch(osd_menu_status){
case OSD_BRIGHT_INDEX:
if(osd_bright<100)
osd_bright++;
WriteToI2c(0xa0, OSD_BRIGHT_ADDR,&osd_bright, 1);
break;
case OSD_CONTRAST_INDEX:
if(osd_contrast<100)
osd_contrast++;
WriteToI2c(0xa0, OSD_CONTRAST_ADDR,&osd_contrast, 1);
break;
case OSD_COLOR_INDEX:
if(osd_color<100)
osd_color++;
WriteToI2c(0xa0, OSD_COLOR_ADDR,&osd_color ,1);
break;
case OSD_SHAPPNESS_INDEX:
if(osd_shappness<8)
osd_shappness++;
WriteToI2c(0xa0, OSD_SHAPPNESS_ADDR,&osd_shappness, 1);
break;
case OSD_SCREEN_MODE_INDEX:
if(osd_screen_mode)
{
osd_screen_mode = 0;
WriteToI2c(0xa0, OSD_SCREEN_MODE_ADDR,&osd_screen_mode, 1);
}else{
osd_screen_mode = 1;
WriteToI2c(0xa0, OSD_SCREEN_MODE_ADDR,&osd_screen_mode, 1);
}
break;
case OSD_OVERTURN_INDEX:
if(osd_overturn)
{
osd_overturn = 0;
WriteToI2c(0xa0, OSD_OVERTURN_ADDR,&osd_overturn, 1);
}else{
osd_overturn = 1;
WriteToI2c(0xa0, OSD_OVERTURN_ADDR,&osd_overturn, 1);
}
break;
case OSD_DEFAULT_INDEX:
break;
default :break;
}
}
else if(cAdj==DECREASE)
{
switch(osd_menu_status){
case OSD_BRIGHT_INDEX:
if(osd_bright>0)
osd_bright--;
WriteToI2c(0xa0, OSD_BRIGHT_ADDR,&osd_bright, 1);
break;
case OSD_CONTRAST_INDEX:
if(osd_contrast>0)
osd_contrast--;
WriteToI2c(0xa0, OSD_CONTRAST_ADDR,&osd_contrast, 1);
break;
case OSD_COLOR_INDEX:
if(osd_color>0)
osd_color--;
WriteToI2c(0xa0, OSD_COLOR_ADDR,&osd_color ,1);
break;
case OSD_SHAPPNESS_INDEX:
if(osd_shappness>0)
osd_shappness--;
WriteToI2c(0xa0, OSD_SHAPPNESS_ADDR,&osd_shappness, 1);
break;
case OSD_SCREEN_MODE_INDEX:
if(osd_screen_mode)
{
osd_screen_mode = 0;
WriteToI2c(0xa0, OSD_SCREEN_MODE_ADDR,&osd_screen_mode, 1);
}else{
osd_screen_mode = 1;
WriteToI2c(0xa0, OSD_SCREEN_MODE_ADDR,&osd_screen_mode, 1);
}
break;
case OSD_OVERTURN_INDEX:
if(osd_overturn)
{
osd_overturn = 0;
WriteToI2c(0xa0, OSD_OVERTURN_ADDR,&osd_overturn, 1);
}else{
osd_overturn = 1;
WriteToI2c(0xa0, OSD_OVERTURN_ADDR,&osd_overturn, 1);
}
break;
case OSD_DEFAULT_INDEX:
break;
default :break;
}
}
OSDShowVideoData();
OSDItemAdjVideo();
osd_time_count = 10;
}
void low_battery_display(void)
{
OSDClearPage();
OSDPosition(TOP);
OSDEnable();
OSDShowLine(Low_battery,12,5,COL_BATTERY,OSD_LENGTH);
}
void AVIN_DVD_display(BYTE state)
{
OSDClearPage();
//OSDPosition(TOP);
OSDEnable();
if(state)
OSDShowLine(Icon_dvd,0,10,GREY_YELLOW,OSD_LENGTH);
else
OSDShowLine(Icon_avin,0,10,GREY_YELLOW,OSD_LENGTH);
osd_time_count = 10;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -