📄 osddraw.c
字号:
case 5: twdWr_Burst_D('5'-0x2f); break;
case 4: twdWr_Burst_D('4'-0x2f); break;
case 3: twdWr_Burst_D('3'-0x2f); break;
case 2: twdWr_Burst_D('2'-0x2f); break;
case 1: twdWr_Burst_D('1'-0x2f); break;
case 0: twdWr_Burst_D('0'-0x2f); break;
default: break;
}
}
//Ruby add 2004-06-08
extern uCHAR idata m_cScaleratio;
void OSDShowRatio(void)
{
uCHAR i;
for(i=0;i<8;i++)
{
OSDCleanLine(0,i,0,30);
OSDSetLineAttribute(i,0x80);
}
OSDPosition(RIGHT_TOP);
switch(m_cScaleratio)
{
case ScaleFULL:
OSDShowLine(iScaleFULL,16,1,COL_GAUGE,OSD_LENGTH);
break;
case Scale16_9:
OSDShowLine(iScale16_9,16,1,COL_GAUGE,OSD_LENGTH);
break;
case Scale4_3:
OSDShowLine(iScale4_3,16,1,COL_GAUGE,OSD_LENGTH);
break;
}
OSDEnable();
}
void OSDShowMode(void)
{
OSDPosition(RIGHT_TOP);
switch(m_cMode)
{
case M_STANDARD:
if(m_cLang==L_ENGLISH)
OSDShowLine(iStandard,16,1,COL_GAUGE,OSD_LENGTH);
else if(m_cLang==L_CHINESE)
OSDShowLine(icStandard,16,1,COL_GAUGE,OSD_LENGTH);
break;
case M_SOFT:
if(m_cLang==L_ENGLISH)
OSDShowLine(iSoft,16,1,COL_GAUGE,OSD_LENGTH);
else if(m_cLang==L_CHINESE)
OSDShowLine(icSoft,16,1,COL_GAUGE,OSD_LENGTH);
break;
case M_VIVID:
if(m_cLang==L_ENGLISH)
OSDShowLine(iVivid,16,1,COL_GAUGE,OSD_LENGTH);
else if(m_cLang==L_CHINESE)
OSDShowLine(icVivid,16,1,COL_GAUGE,OSD_LENGTH);
break;
case M_BRIGHT:
if(m_cLang==L_ENGLISH)
OSDShowLine(iBright,16,1,COL_GAUGE,OSD_LENGTH);
else if(m_cLang==L_CHINESE)
OSDShowLine(icBright,16,1,COL_GAUGE,OSD_LENGTH);
break;
case M_PP:
if(m_cLang==L_ENGLISH)
OSDShowLine(iPP,16,1,COL_GAUGE,OSD_LENGTH);
else if(m_cLang==L_CHINESE)
OSDShowLine(icPP,16,1,COL_GAUGE,OSD_LENGTH);
}
}
void OSDShowSource(void)
{
uCHAR i;
m_cOSDMenu=idNULLMENU; //add by cwyong
m_cOSDFunc=0; //add by cwyong
OSDEnable(); //add by cwyong
for(i=0;i<8;i++)
{
OSDCleanLine(0,i,0,30);
OSDSetLineAttribute(i,0x80);
}
OSDPosition(RIGHT_TOP);
switch(m_cSource)
{
#ifdef T102
#ifdef TV
case isrcTV:
OSDShowLine(iCVBS_TV,16,1,COL_GAUGE,OSD_LENGTH);
break;
#else
case isrcCVIDEO1:
OSDShowLine(iCVBS_1,16,1,COL_GAUGE,OSD_LENGTH);
break;
#endif
case isrcCVIDEO2:
OSDShowLine(iCVBS_2,16,1,COL_GAUGE,OSD_LENGTH);
break;
// case isrcCVIDEO3:
// OSDShowLine(iCVBS_3,16,1,COL_GAUGE,OSD_LENGTH);
// break;
#ifdef NEW_BOARD
case isrcSVIDE1:
OSDShowLine(iSVideo_1,16,1,COL_GAUGE,OSD_LENGTH);
break;
#else
case isrcCVIDEO4:
OSDShowLine(iCVBS_4,16,1,COL_GAUGE,OSD_LENGTH);
break;
#endif
case isrcSVIDEO:
OSDShowLine(iSVideo,16,1,COL_GAUGE,OSD_LENGTH);
break;
#ifdef component
case isrcCOMPONENT:
OSDShowLine(iCOMPONENT,16,1,COL_GAUGE,26);
break;
#endif
#endif
#ifdef T515
case isrc_T515_CVIDEO1:
OSDShowLine(iCVBS_5,16,1,COL_GAUGE,OSD_LENGTH);
twdDelay(2500); //add by zjl
I2CWriteByte(TW101, PATTERN_CTRL, 0x00); //add by zjl
I2CWriteByte(TW101, 0xC2, 0x00); //add by zjl
I2CWriteByte(TW101,0x9D,0x10);
I2CWriteByte(TW101,0x9E,0xff);
I2CWriteByte(TW101,0x9f,0x40);
I2CWriteByte(TW101,0xC7,0x32);
break;
case isrc_T515_CVIDEO2:
OSDShowLine(iCVBS_6,16,1,COL_GAUGE,OSD_LENGTH);
twdDelay(2500); //add by zjl
I2CWriteByte(TW101, PATTERN_CTRL, 0x00); //add by zjl
I2CWriteByte(TW101, 0xC2, 0x00); //add by zjl
break;
case isrc_T515_SVIDEO:
//OSDShowLine(iSVideo_2,16,1,COL_GAUGE,OSD_LENGTH);
OSDShowLine(iSVideo_2,16,1,COL_GAUGE,26);
break;
#endif
//add source OSD here!!
}
OSDEnable();
}
extern uCHAR idata m_cStandard;
void OSDShowNTSC_PAL(void)
{
if(m_cLang==L_ENGLISH)
{
if(m_cStandard==S_PAL)OSDShowLine(iPAL,16,1,COL_GAUGE,OSD_LENGTH);
else if(m_cStandard==S_NTSC) OSDShowLine(iNTSC,16,1,COL_GAUGE,OSD_LENGTH);
}
// else if(m_cStandard==S_SECAM) OSDShowLine(iSECAM,16,1,COL_GAUGE,OSD_LENGTH);
OSDEnable();
}
void OSDClearCursor(uCHAR cStart, uCHAR cEnd)
{
pOSDLangPtr=&MultiLangOSD[OSD_cOSDLang];
pOSDMenuPtr=pOSDLangPtr->osdMenuPtr;
OSDShowLine(pOSDMenuPtr[m_cOSDMenu-1][m_cOSDFunc-1].txtStr,TXT_STAT,m_cOSDFunc,COL_NORMAL,OSD_LENGTH);
return;
}
void OSDClearChineseCursor(uCHAR cStart,uCHAR cEnd)
{
pOSDChineseLangPtr=&MultiChineseLangOSD[0];
pOSDChineseMenuPtr=pOSDChineseLangPtr->osdChineseMenuPtr;
OSDShowLine(pOSDChineseMenuPtr[m_cOSDMenu-1][m_cOSDFunc-1].txtStr,TXT_STAT,m_cOSDFunc,COL_NORMAL,OSD_LENGTH);
return;
}
void OSDMoveCursor(uCHAR cStart, uCHAR cEnd)
{
pOSDLangPtr=&MultiLangOSD[OSD_cOSDLang];
pOSDMenuPtr=pOSDLangPtr->osdMenuPtr;
OSDShowLine(pOSDMenuPtr[m_cOSDMenu-1][m_cOSDFunc-1].txtStr,TXT_STAT,m_cOSDFunc,YELLOW_DBLUE,OSD_LENGTH);
return;
}
void OSDMoveChineseCursor(uCHAR cStart, uCHAR cEnd)
{
pOSDChineseLangPtr=&MultiChineseLangOSD[0];
pOSDChineseMenuPtr=pOSDChineseLangPtr->osdChineseMenuPtr;
OSDShowLine(pOSDChineseMenuPtr[m_cOSDMenu-1][m_cOSDFunc-1].txtStr,TXT_STAT,m_cOSDFunc,YELLOW_DBLUE,OSD_LENGTH);
return;
}
void OSDPosition(uCHAR cPos)
{
#ifdef KVGA
if(cPos==RIGHT_TOP)
{
OSDCfgWr(CHAR_DLY_0,0x00); //V[10:8] bit 6-4; H[10:8] bit2-0 23 12
OSDCfgWr(CHAR_DLY_1,0xa0); //H[7:0] 80 80
OSDCfgWr(CHAR_DLY_2,0x00); //v[7:0] 64 30
}
if(cPos==CENTER)
{
OSDCfgWr(CHAR_DLY_0,0x00); //V[10:8] bit 6-4; H[10:8] bit2-0
OSDCfgWr(CHAR_DLY_1,0x40); //H[7:0]
OSDCfgWr(CHAR_DLY_2,0x30); //v[7:0]
}
else if(cPos==LEFT_BOTTOM)//not define yet!
{
OSDCfgWr(CHAR_DLY_0,0x12); //V[10:8] bit 6-4; H[10:8] bit2-0
OSDCfgWr(CHAR_DLY_1,0x00); //H[7:0]
OSDCfgWr(CHAR_DLY_2,0x60); //v[7:0] //00
}
#endif
#ifdef WVGA
if(cPos==RIGHT_TOP)
{
OSDCfgWr(CHAR_DLY_0,0x03); //V[10:8] bit 6-4; H[10:8] bit2-0 23 12
OSDCfgWr(CHAR_DLY_1,0x60); //H[7:0] 80 80
OSDCfgWr(CHAR_DLY_2,0x00); //v[7:0] 64 30
}
if(cPos==CENTER)
{
OSDCfgWr(CHAR_DLY_0,0x02); //V[10:8] bit 6-4; H[10:8] bit2-0 23 12
OSDCfgWr(CHAR_DLY_1,0x00); //H[7:0] 80 80
OSDCfgWr(CHAR_DLY_2,0x88); //v[7:0] 64 30
}
else if(cPos==LEFT_BOTTOM)
{
OSDCfgWr(CHAR_DLY_0,0x12); //V[10:8] bit 6-4; H[10:8] bit2-0
OSDCfgWr(CHAR_DLY_1,0x00); //H[7:0]
OSDCfgWr(CHAR_DLY_2,0x60); //v[7:0] //00
}
#endif
#ifdef WXGA
if(cPos==RIGHT_TOP)
{
OSDCfgWr(CHAR_DLY_0,0x07); //V[10:8] bit 6-4; H[10:8] bit2-0 23 12
OSDCfgWr(CHAR_DLY_1,0x00); //H[7:0] 80 80
OSDCfgWr(CHAR_DLY_2,0x00); //v[7:0] 64 30
}
if(cPos==CENTER)
{
OSDCfgWr(CHAR_DLY_0,0x14); //V[10:8] bit 6-4; H[10:8] bit2-0 23 12
OSDCfgWr(CHAR_DLY_1,0x00); //H[7:0] 80 80
OSDCfgWr(CHAR_DLY_2,0x88); //v[7:0] 64 30
}
else if(cPos==LEFT_BOTTOM)
{
OSDCfgWr(CHAR_DLY_0,0x24); //V[10:8] bit 6-4; H[10:8] bit2-0
OSDCfgWr(CHAR_DLY_1,0x00); //H[7:0]
OSDCfgWr(CHAR_DLY_2,0x60); //v[7:0] //00
}
#endif
#if 0
if(cPos==CENTER)
{
OSDCfgWr(CHAR_DLY_0,0x12); //V[10:8] bit 6-4; H[10:8] bit2-0
OSDCfgWr(CHAR_DLY_1,0xEE); //H[7:0]
OSDCfgWr(CHAR_DLY_2,0x64); //v[7:0]
}
else if(cPos==LEFT_BOTTOM)
{
OSDCfgWr(CHAR_DLY_0,0x20); //V[10:8] bit 6-4; H[10:8] bit2-0
OSDCfgWr(CHAR_DLY_1,0x10); //H[7:0]
OSDCfgWr(CHAR_DLY_2,0x00); //v[7:0]
}
#endif
#ifdef AU_35
if(cPos==RIGHT_TOP)
{
OSDCfgWr(CHAR_DLY_0,0x00); //V[10:8] bit 6-4; H[10:8] bit2-0 23 12
OSDCfgWr(CHAR_DLY_1,0x00); //H[7:0] 80 80
OSDCfgWr(CHAR_DLY_2,0x00); //v[7:0] 64 30
}
if(cPos==CENTER)
{
OSDCfgWr(CHAR_DLY_0,0x00); //V[10:8] bit 6-4; H[10:8] bit2-0
OSDCfgWr(CHAR_DLY_1,0x00); //H[7:0]
OSDCfgWr(CHAR_DLY_2,0x00); //v[7:0]
}
else if(cPos==LEFT_BOTTOM)//not define yet!
{
OSDCfgWr(CHAR_DLY_0,0x12); //V[10:8] bit 6-4; H[10:8] bit2-0
OSDCfgWr(CHAR_DLY_1,0x00); //H[7:0]
OSDCfgWr(CHAR_DLY_2,0x60); //v[7:0] //00
}
#endif
}
#ifdef TV
extern bit m_bTV_Num_Bits;
void OSDShowTV_Num(uCHAR cTemp)
{
uCHAR cTemp1;
OSDExit();
OSDPosition(RIGHT_TOP);
cTemp1=I2CReadByte(EEPVIDEOBLOCK, idVIDEO_FLAG_INDEX)&0x06;
OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)1<<5)+19);
twdWr_Burst_A(OSD_RAM_DL);
switch((cTemp|cTemp1))
{
case 0: OSDNumConvert(m_cTV_Num);
twdWr_Burst_D(COL_NORMAL);
break;
case 2: if(m_bTV_Num_Bits)
{
OSDNumConvert(m_cTV_Num/10);
twdWr_Burst_D(COL_NORMAL);
OSDNumConvert(m_cTV_Num%10);
twdWr_Burst_D(COL_NORMAL);
}
else
{
OSDNumConvert(m_cTV_Num);
twdWr_Burst_D(COL_NORMAL);
twdWr_Burst_D(0x1B);
twdWr_Burst_D(COL_NORMAL);
}
break;
case 4: OSDNumConvert(1);
twdWr_Burst_D(COL_NORMAL);
if(m_bTV_Num_Bits)
{
OSDNumConvert((m_cTV_Num%100)/10);
twdWr_Burst_D(COL_NORMAL);
OSDNumConvert(m_cTV_Num%10);
twdWr_Burst_D(COL_NORMAL);
}
else
{
OSDNumConvert(m_cTV_Num%10);
twdWr_Burst_D(COL_NORMAL);
twdWr_Burst_D(0x1B);
twdWr_Burst_D(COL_NORMAL);
}
break;
case 6:if(cTemp1==4)
{
OSDNumConvert(1);
twdWr_Burst_D(COL_NORMAL);
twdWr_Burst_D(0x1B);
twdWr_Burst_D(COL_NORMAL);
twdWr_Burst_D(0x1B);
twdWr_Burst_D(COL_NORMAL);
}
else if(cTemp1==2)
{
twdWr_Burst_D(0x1B);
twdWr_Burst_D(COL_NORMAL);
twdWr_Burst_D(0x1B);
twdWr_Burst_D(COL_NORMAL);
}
else
{
twdWr_Burst_D(0x1B);
twdWr_Burst_D(COL_NORMAL);
}
}
}
void OSDShowRESET(bit bTemp)
{
if(bTemp)
{
OSDShowLine(iBlankLine,0,6,COL_TITLE,OSD_LENGTH);
OSDShowLine(iRecall_E,3,6,COL_TITLE,OSD_LENGTH);
OSDShowLine(iOK,19,6,COL_TITLE,OSD_LENGTH);
}
else
{
OSDShowLine(iBlankLine,0,6,COL_TITLE,OSD_LENGTH);
OSDShowLine(iRecalling_E,3,6,COL_TITLE,OSD_LENGTH);
}
}
/*
void OSDShowTVSource(sCHAR sStep)
{
uCHAR cTemp;
cTemp=I2CReadByte(EEPVIDEOBLOCK, idVIDEO_FLAG_INDEX);
if(sStep)
{
if(cTemp&0x01)
{
cTemp&=0xFE;
}
else
{
cTemp|=0x01;
}
I2CWriteByte(EEPVIDEOBLOCK, idVIDEO_FLAG_INDEX,cTemp);
}
if(cTemp&0x01)
{
m_bAir_Cable=1;
OSDShowLine(iCable,17,3,COL_TITLE,OSD_LENGTH);
}
else
{
m_bAir_Cable=0;
OSDShowLine(iAir,17,3,COL_TITLE,OSD_LENGTH);
}
// ir_data=0;
}*/
void OSDShowTVData(void)
{
uCHAR gauge_y =cTotal+2;
switch(m_cOSDFunc){
case idCHANNEL_TV:
OSDDrawNum(I2CReadByte(EEPVIDEOBLOCK, idTVCHANNEL_INDEX), 0, 19, m_cOSDFunc, COL_NORMAL, DRAW_BLANK|0x03);
break;
#ifdef PAL
case idBAND_TV:
break;
case iSOUNDSYSTEM_TV:
break;
#endif
#ifdef NTSC
case idSKIP_TV:
if(m_bTV_Skip)
OSDShowLine(iAdd_E,17,m_cOSDFunc,COL_TITLE,OSD_LENGTH);
else
OSDShowLine(iErase_E,17,m_cOSDFunc,COL_TITLE,OSD_LENGTH);
break;
case idSOURCE_TV:
if(m_bAir_Cable)
OSDShowLine(iCable,17,m_cOSDFunc,COL_TITLE,OSD_LENGTH);
else
OSDShowLine(iAir,17,m_cOSDFunc,COL_TITLE,OSD_LENGTH);
break;
#endif
case idFINETUNE_TV:
break;
case idAUTOMEMORY_TV:
break;
case idRECALL_TV:
OSDShowLine(iBlankLine,0,m_cOSDFunc,COL_TITLE,OSD_LENGTH);
OSDShowLine(iRecall_E,3,m_cOSDFunc,COL_TITLE,OSD_LENGTH);
break;
default: break;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -