📄 osdctrl.c
字号:
case USER_G:
adjUser_G(val,SHOW);
return;
case USER_B:
adjUser_B(val,SHOW);
return;
#if WITH_AUDIO
case MAIN_EXIT:
adjVolume(val,SHOW);
return;
#endif
//==================================== FACTORY ==========================================
case BLACK_LEVEL:
if (eepData.blacklevel & 0x80)
{
if (val == -1)
{
if ((eepData.blacklevel & 0x7F) < 0x7F)
eepData.blacklevel++;
}
else
{
if ((eepData.blacklevel & 0x7F) != 0)
eepData.blacklevel--;
else
eepData.blacklevel = 0x01;
}
}
else
{
if (val == 1)
{
if (eepData.blacklevel < 0x7F)
eepData.blacklevel++;
}
else
{
if (eepData.blacklevel != 0)
eepData.blacklevel--;
else
eepData.blacklevel = 0x81;
}
}
setBlackLevel();
eepDataOut(EEPDATASTART+(&eepData.blacklevel-&eepData), (unsigned char *)&eepData.blacklevel, 1);
factoryUpdataSHOW();
return;
case GAIN_R:
case GAIN_G:
case GAIN_B:
case OFFSET_R:
case OFFSET_G:
case OFFSET_B:
case C1_R:
case C1_G:
case C1_B:
case C1_BRI:
case C1_CON:
case C2_R:
case C2_G:
case C2_B:
case C2_BRI:
case C2_CON:
factoryAdjData(val);
factoryUpdataSHOW();
return;
case SET_PAGE:
case SET_ADDH:
case SET_ADDL:
case SET_DATAH:
case SET_DATAL:
factoryAdjREGData(val);
factoryUpdataSETREG();
return;
case BURN_IN:
eepData.MascotFlag ^= FLAG_BURNIN;
eepDataOut(EEPDATASTART+(&eepData.MascotFlag-&eepData), (unsigned char *)&eepData.MascotFlag, 1);
factoryUpdataSHOW();
return;
}
}
/****************************************
* Show NoSync information on screen *
*****************************************/
/*void osdCableNotConnected(void)
{
if(eepData.language==5)
load_CableNotConnected_font_data();
menuDraw();
PortDataOut((MainMenuCols+1)*5+7,UPDATE_CODE,CableNotConnected1MenuData[eepData.language],sizeof(CableNotConnected1MenuData[0]) / sizeof(char));
PortDataOut((MainMenuCols+1)*6+7,UPDATE_CODE,CableNotConnected2MenuData[eepData.language],sizeof(CableNotConnected2MenuData[0]/sizeof(char)));
enableOSD();
}
*/
/**********************************************
* Show Out of Range information on screen *
***********************************************/
void osdOutOfScanRange(void)
{
if(eepData.language==5)
load_notsupport_font_data();
menuDraw();
PortDataOut((MainMenuCols+1)*5+6,UPDATE_CODE,input_notMenuData[eepData.language],sizeof(input_notMenuData[0]) / sizeof(char));
PortDataOut((MainMenuCols+1)*6+10,UPDATE_CODE,supportedMenuData[eepData.language],sizeof(supportedMenuData[0]/sizeof(char)));
enableOSD();
}
/**********************************************
* Show Auto Tune information on screen *
***********************************************/
void osdAutoConfig(void)
{
if(eepData.language==5)
load_pleasewait_font_data();
if(cursor == AUTOCONFIG_YES || cursor == RESET_YES)
{
subClear();
PortDataOut((MainMenuCols+1)*6+5,UPDATE_CODE,pleaseWaitData[eepData.language],sizeof(pleaseWaitData[0]/sizeof(char)));
}
else if(cursor == 0x00)
{
if(eepData.language==5)
load_autoconfig_font_data();
menuDraw();
PortDataOut((MainMenuCols+1)*5+7,UPDATE_CODE,AutoConfigData[eepData.language],sizeof(AutoConfigData[0]) / sizeof(char));
PortDataOut((MainMenuCols+1)*6+5,UPDATE_CODE,pleaseWaitData[eepData.language],sizeof(pleaseWaitData[0]/sizeof(char)));
}
enableOSD();
}
/****************************************
* Show NoSync information on screen *
*****************************************/
void osdNoSignal(void)
{
load_nosignal_font_data();
menuDraw();
PortDataOut((MainMenuCols+1)*5+7,UPDATE_CODE,nosignalData[eepData.language],sizeof(nosignalData[0]) / sizeof(char));
enableOSD();
}
/****************************************
* Show NoSync information on screen *
*****************************************/
void osdINTO_ISP(void)
{
menuDraw();
PortDataOut((MainMenuCols+1)*5+10,UPDATE_CODE,IntoISPData,8);
enableOSD();
}
#define LOGOXPOS (MAX_OSD_HPOS - MIN_OSD_HPOS)/2 - 8
#define LOGOYPOS (MAX_OSD_VPOS - MIN_OSD_VPOS)/2 + 18
void setDigitalContrastRGB(void)
{
if (eepData.colorPos == COLOR_6500)
{
eepData.userR = eepData.color6500R;
eepData.userG = eepData.color6500G;
eepData.userB = eepData.color6500B;
}
else if (eepData.colorPos == COLOR_7500)
{
eepData.userR = eepData.color7500R;
eepData.userG = eepData.color7500G;
eepData.userB = eepData.color7500B;
}
else if (eepData.colorPos == COLOR_NATIVE)
{
eepData.userR = 50;
eepData.userG = 50;
eepData.userB = 50;
}
#if RB_SWAP
setDigitalContrast(SELECTR,eepData.userB);
setDigitalContrast(SELECTG,eepData.userG);
setDigitalContrast(SELECTB,eepData.userR);
#else
setDigitalContrast(SELECTR,eepData.userR);
setDigitalContrast(SELECTG,eepData.userG);
setDigitalContrast(SELECTB,eepData.userB);
#endif
}
void setDigitalContrast(unsigned char color,unsigned char value)
{
ival = value * 150;
ival /= 100;
ival += (eepData.contrast + 3);
if (color == SELECTR)
RegByteOut(0x80, ival);
else if (color == SELECTG)
RegByteOut(0x81, ival);
else if (color == SELECTB)
RegByteOut(0x82, ival);
RegByteOut(0x83, 0x44);//sam 20030305 for new MVPL
RegByteOut(0x84, 0x04);//sam 20030305 for new MVPL
}
/*
void setDigitalBrightness(unsigned char color,unsigned char value)
{
int data val;
val = value - DEF_Dbrightness;
val *= 127;
val /= DEF_Dbrightness;
ival = (unsigned int)val;
if (ival >= 0x80) ival = 0x17f - ival ;
if (color == SELECTR)
RegByteOut(0x52, (unsigned char)ival);
else if (color == SELECTG)
RegByteOut(0x53, (unsigned char)ival);
else if (color == SELECTB)
RegByteOut(0x54, (unsigned char)ival);
}
*/
/**********************************************
* set RGB color *
***********************************************/
void setColorRGB(bit flag)
{
if (flag == DEF_DATA) //default value from rom table
{
RegByteOut(TDA_RGAIN, DEF_gain );
RegByteOut(TDA_GGAIN, DEF_gain );
RegByteOut(TDA_BGAIN, DEF_gain );
RegByteOut(TDA_RCLAMP, DEF_clamp);
RegByteOut(TDA_GCLAMP, DEF_clamp);
RegByteOut(TDA_BCLAMP, DEF_clamp);
}
else
{
setColorR();
setColorG();
setColorB();
}
}
void setColorR()
{
#if USE_GAMMA
int gainVal,clampVal;
gainVal = eepData.contrast-DEF_contrast+eepData.gainR;
if (gainVal > MAX_gain) gainVal = MAX_gain;
else if (gainVal < MIN_gain) gainVal = MIN_gain;
RegByteOut(TDA_RGAIN, gainVal);
clampVal = eepData.clampR + ( eepData.gainR - gainVal)*6/5;
if (clampVal > MAX_clamp) clampVal = MAX_clamp;
else if (clampVal < MIN_clamp) clampVal = MIN_clamp;
RegByteOut(TDA_RCLAMP, clampVal);
#if (DEBUGMSG>=3)
printf("setColorR: gain = %02X, clamp = %2x\n", (unsigned int)gainVal,(unsigned int)clampVal);
#endif
#else
RegByteOut(TDA_RGAIN, eepData.gainR);
RegByteOut(TDA_RCLAMP, eepData.clampR);
#endif
}
void setColorG()
{
#if USE_GAMMA
int gainVal,clampVal;
gainVal = eepData.contrast-DEF_contrast+eepData.gainG;
if (gainVal > MAX_gain) gainVal = MAX_gain;
else if (gainVal < MIN_gain) gainVal = MIN_gain;
RegByteOut(TDA_GGAIN, gainVal);
clampVal = eepData.clampG + ( eepData.gainG - gainVal)*6/5;
if (clampVal > MAX_clamp) clampVal = MAX_clamp;
else if (clampVal < MIN_clamp) clampVal = MIN_clamp;
RegByteOut(TDA_GCLAMP, clampVal);
#if (DEBUGMSG>=3)
printf("setColorG: gain = %02X, clamp = %2x\n", (unsigned int)gainVal,(unsigned int)clampVal);
#endif
#else
RegByteOut(TDA_GGAIN, eepData.gainG);
RegByteOut(TDA_GCLAMP, eepData.clampG);
#endif
}
void setColorB()
{
#if USE_GAMMA
int gainVal,clampVal;
gainVal = eepData.contrast-DEF_contrast+eepData.gainB;
if (gainVal > MAX_gain) gainVal = MAX_gain;
else if (gainVal < MIN_gain) gainVal = MIN_gain;
RegByteOut(TDA_BGAIN, gainVal);
clampVal = eepData.clampB + ( eepData.gainB - gainVal)*6/5;
if (clampVal > MAX_clamp) clampVal = MAX_clamp;
else if (clampVal < MIN_clamp) clampVal = MIN_clamp;
RegByteOut(TDA_BCLAMP, clampVal);
#if (DEBUGMSG>=3)
printf("setColorB: gain = %02X, clamp = %2x\n", (unsigned int)gainVal,(unsigned int)clampVal);
#endif
#else
RegByteOut(TDA_BGAIN, eepData.gainB);
RegByteOut(TDA_BCLAMP, eepData.clampB);
#endif
}
#if USE_GAMMA
void setGamma(unsigned char colorsel,unsigned char gamma)
{
unsigned char data i,j;
for (i = 0;i < 16;i++) {
for (j = 0;j < 16;j++) {
ival = ((i<<4)+j)<<6;
ival1 = ival/(64+DEF_gammaRGB-gamma);
if (ival1 > 255) ival1 = 255;
buff[j] = ival1;
}
RegByteOut(0xc3,0x01);
if (colorsel == SELECTR)
PortDataOut(i<<4, PORT_GAMMA_R, buff, 16);
else if (colorsel == SELECTG)
PortDataOut(i<<4, PORT_GAMMA_G, buff, 16);
else if (colorsel == SELECTB)
PortDataOut(i<<4, PORT_GAMMA_B, buff, 16);
}
OSDNoDelay = 1;
}
#endif // USE_GAMMA
void setBlackLevel(void)
{
RegByteOut(0x52, eepData.blacklevel);
RegByteOut(0x53, eepData.blacklevel);
RegByteOut(0x54, eepData.blacklevel);
}
#if WITH_AUDIO
/************************************************
* Volume adjustment *
*************************************************/
void adjVolume(char delta, bit show)
{
int val;
val = eepData.volume + delta;
if (val >= MIN_volume && val <= MAX_volume)
{
eepData.volume = val;
setVolume(eepData.volume);
if (show)
{
if (cursor == HOT_VOLUME )
{
PortDataOut((MainMenuCols+1)*5+12, UPDATE_CODE, volumeData[eepData.language], sizeof(volumeData[0]) / sizeof(char));
}
else
{
PortDataOut((MainMenuCols+1)*5+12, UPDATE_CODE, volumeData[eepData.language], sizeof(volumeData[0]) / sizeof(char));
}
DisplayScrollBar((unsigned int)(MAX_volume-MIN_volume), eepData.volume-MIN_volume);
if (cursor == HOT_BRIGHTNESS)
{
PortDataOut((MainMenuCols+1)*6+7, UPDATE_CODE, buff, 16);
SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0x36, 16);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -