📄 benq_osddisp.c
字号:
//**********************************************************************************************************
// The Software is proprietary, confidential, and valuable to Realtek Semiconductor
// Corporation ("Realtek"). All rights, including but not limited to copyrights,
// patents, trademarks, trade secrets, mask work rights, and other similar rights and interests,
// are reserved to Realtek. Without prior written consent from Realtek, copying, reproduction,
// modification, distribution, or otherwise is strictly prohibited. The Software shall be
// kept strictly in confidence, and shall not be disclosed to or otherwise accessed by
// any third party. @ <2003> - <2008> The Software is provided "AS IS" without any warranty of any kind,
// express, implied, statutory or otherwise.
//**********************************************************************************************************
//----------------------------------------------------------------------------------------------------
// ID Code : OsdDisp.c No.0000
// Update Note :
//----------------------------------------------------------------------------------------------------
#define __BENQ_OSDDISP__
#include "Common\Header\Include.h"
#if(_OSD_TYPE == _BENQ_OSD)
//--------------------------------------------------
// Description :
// Input Value :
// Output Value :
//--------------------------------------------------
void COsdDispInitial(void)
{
if(stGlobalData4.BurnIn==_BURNIN_ON)
{
SET_FACTORY_MODE(_ON);
}
else if(stGlobalData4.BurnIn==_BURNIN_OFF)
{
SET_FACTORY_MODE(_OFF);
}
if((!GET_AUTOPOWER_STATUS()) || ((GET_AUTOPOWER_STATUS()) && (GET_LASTPOWER_STATUS() == _OFF)))
CLR_POWERSTATUS();
else
SET_POWERSTATUS();
}
//--------------------------------------------------
// Description :
// Input Value :
// Output Value :
//--------------------------------------------------
void DisplayColorProcessBenq(void)
{
if(GET_INPUTSOURCE_TYPE() == _SOURCE_VGA)
CEepromLoadAdcData();
CEepromLoadGlobalData1();
CEepromLoadColorTempData();
CAdjustBrightness();
DisplayBacklightChangeCurveBenq();
CScalerSetDataPortBit(_HW_ACCESS_PORT_60, _HW_WINDOW_CTRL0_0C, ~(_BIT7 | _BIT6 | _BIT3 | _BIT2), (_BIT7 | _BIT6 | _BIT2));
CScalerSetDataPortBit(_HW_ACCESS_PORT_60, _HW_WINDOW_CTRL1_0D, ~(_BIT7 | _BIT6), _BIT6);
CAdjustDemoWindow();
}
#define _CONTRAST80PERCENT (((((WORD)_CONTRAST_MAX-_CONTRAST_MIN)*80)/100)+_CONTRAST_MIN)
#define _CONTRAST_CHANGE_POINT 128 //SLOPE
void DisplayContrastChangeCurveBenq(void)
{
BYTE i, Offset, k=0xFF;
WORD Temp;
if((stSystemData.DcrSetting != _OFF) && (stGlobalData4.PictureMode != _STANDARD_PICTURE) && (stGlobalData4.PictureMode != _SRGB_PICTURE))
Offset=145;
else
Offset=stPictureData.Contrast;
CTimerWaitForEvent(_EVENT_DEN_STOP);
for(i=0;i<3;i++)
{
Temp=((WORD)stColorData.Contrast[i]*Offset)/128;
if(Temp>255)
pData[i]=255;
else
pData[i]=Temp;
}
CScalerSetBit(_CB_ACCESS_PORT_64, ~(_BIT7 | _BIT3 | _BIT2 | _BIT1 | _BIT0), _BIT7 | 0x09);
CScalerWrite(_CB_DATA_PORT_65, 3, pData, _NON_AUTOINC);
CScalerSetByte(_CB_ACCESS_PORT_64, 0x00);
if((stGlobalData4.PictureMode != _SRGB_PICTURE) && (stGlobalData4.PictureMode != _STANDARD_PICTURE) && (GET_SENSEYE_STATUS()))
{
i=stPictureData.Contrast;
CEepromRead(_PICTURE_DATA_ADDRESS,1, &stPictureData.Contrast); // FOR CONTRAST OF _STANDARD_PICTURE ONLY
Offset=stPictureData.Contrast;
stPictureData.Contrast=i;
if(stGlobalData0.ColorTemp==_SENSEYE_COLOR)
{
CEepromSaveColorTempData();
k=stGlobalData0.ColorTemp;
stGlobalData0.ColorTemp=stGlobalData0.StandardModeCT;
CEepromLoadColorTempData();
stGlobalData0.ColorTemp=k;
}
CTimerWaitForEvent(_EVENT_DEN_STOP);
for(i=0;i<3;i++)
{
Temp=((WORD)stColorData.Contrast[i]*Offset)/128;
if(Temp>255)
pData[i]=255;
else
pData[i]=Temp;
}
}
CScalerSetByte(_CB_ACCESS_PORT_64, 0x83);
CScalerWrite(_CB_DATA_PORT_65, 3, pData, _NON_AUTOINC);
CScalerSetByte(_CB_ACCESS_PORT_64, 0x00);
if((stGlobalData4.PictureMode != _SRGB_PICTURE) && (stGlobalData4.PictureMode != _STANDARD_PICTURE) && (GET_SENSEYE_STATUS()))
{
if(k!=0xFF) CEepromLoadColorTempData();
}
if(stGlobalData4.PictureMode == _STANDARD_PICTURE)
{
if((stGlobalData0.ColorTemp==_NORMAL_COLOR) || (stGlobalData0.ColorTemp==_SRGB_COLOR))
CScalerSetByte(_GAMMA_CTRL_67, 0x40);
else
CScalerSetByte(_GAMMA_CTRL_67, 0x00);
}
else
CScalerSetByte(_GAMMA_CTRL_67, 0x40);
}
void DisplayBacklightChangeCurveBenq(void)
{
BYTE RealBright=0;
if(stGlobalData4.PictureMode==_SRGB_PICTURE)
{//0912 sephinroth
if(stPictureData.BackLight>_DEFAULT_SRGB_BACKLIGHT_BENQ)
RealBright=((((DWORD)stPictureData.BackLight-_DEFAULT_SRGB_BACKLIGHT_BENQ)*(_BACKLIGHT_MAX-ucSrgbDefaultBrightReal))/(_BACKLIGHT_MAX-_DEFAULT_SRGB_BACKLIGHT_BENQ))+ucSrgbDefaultBrightReal; //ARKIN 1227
else
RealBright=((((DWORD)stPictureData.BackLight-_BACKLIGHT_MIN)*(ucSrgbDefaultBrightReal-_BACKLIGHT_MIN))/(_DEFAULT_SRGB_BACKLIGHT_BENQ-_BACKLIGHT_MIN)+_BACKLIGHT_MIN);
}
else
{//0912 sephinroth
if(stPictureData.BackLight >= _BACKLIGHT_MIN)
RealBright=((WORD)(stPictureData.BackLight-_BACKLIGHT_MIN)*_BACKLIGHT_MAX)/_BACKLIGHT_MAX+_BACKLIGHT_MIN;
else
RealBright=_BACKLIGHT_MIN;
}
if((stSystemData.DcrSetting == _OFF) || (stGlobalData4.PictureMode==_STANDARD_PICTURE) || (stGlobalData4.PictureMode==_SRGB_PICTURE))
{
#if(_MCU_TYPE == _REALTEK_EMBEDDED)
MCU_PWM0H_DUT_FF4A = RealBright;
#else
MCU_PWM2_DUTY_WIDTH_FF34 = RealBright;
#endif
}
DisplayContrastChangeCurveBenq();
#if(0)
COsdFxShowValueBenq(ROW(16),COL(0),RealBright,4,_NON_PERCENT,255,0);
COsdFxShowValueBenq(16,5,stPictureData.BackLight,4,_NON_PERCENT,0,0);
COsdFxShowValueBenq(16,10,_DEFAULT_SRGB_BACKLIGHT_BENQ,4,_NON_PERCENT,0,0);
COsdFxShowValueBenq(16,15,ucSrgbDefaultBrightReal,4,_NON_PERCENT,0,0);
#endif
}
//----------------------------------------------------------------------------------------------------
// OSD Load Font Functions
//----------------------------------------------------------------------------------------------------
void DisplayLoad2BitGlobalFontBenq(void)
{
CScalerLoadHardwareVLCFont(Font2BitGlobal,_2GlobalStartBenq*2);//,30*2);
}
void DisplayLoad4BitGlobalFontBenq(void)
{
CScalerLoadHardwareVLCFont(Font4BitGlobal,_4GlobalStartBenq*4);//,28*4);
}
void DisplayLoadJapChiTBenq(void)
{
CScalerLoadHardwareVLCFont(Font1BitChiTJap,_1ChiTJapStartBenq);//,54);
}
void DisplayLoadOsdPageFontBenq(void)
{
if(stGlobalData3.LanguageType == _EASTERN_LANGUAGE)
CScalerLoadHardwareVLCFont(Font1BitOsdPage8,_1OsdPage8StartBenq);//,40);//46?
else
CScalerLoadHardwareVLCFont(Font1BitOsdPage14,_1OsdPage14StartBenq);//,21);
}
void DisplayLoad1BitGlobalFontBenq(void)
{
CScalerLoadHardwareVLCFont(Font1BitGlobal,_1GlobalStartBenq);//,28);
}
void DisplayLoad1BitDDCCIFontBenq(void)
{
CScalerLoadHardwareVLCFont(FontDdcci,_1DdcciStartBenq);//,2);
}
void DisplayLoadLanguageFontBenq(void)
{
CScalerLoadHardwareVLCFont(Font1BitEnglish,_1EngliahStartBenq);//,40);
switch(stGlobalData0.Language)
{
case(_CHINESE_T_BENQ):
DisplayLoadJapChiTBenq();
CScalerLoadHardwareVLCFont(Font1BitChiT,_1ChiTStartBenq);//,104);
CScalerLoadHardwareVLCFont(Font1BitSelectChiT,_CHITJAP_BENQ_04);//,2);
break;
case(_CHINESE_S_BENQ):
CScalerLoadHardwareVLCFont(Font1BitChiS,_1ChiSStartBenq);//,156);
break;
case(_JAPAN_BENQ):
DisplayLoadJapChiTBenq();
CScalerLoadHardwareVLCFont(Font1BitJapan,_1JapanStartBenq);//,103);
break;
default:
CScalerLoadHardwareVLCFont(Font1BitEurpo,_1EurpoStartBenq);//,100);
break;
}
}
void DisplayRestoreFontBenq(void)
{
switch(stGlobalData0.Language)
{
case(_CHINESE_T_BENQ):
CScalerLoadHardwareVLCFont(FontChiTRestore,_RestoreFontStartBenq);//,2);
break;
case(_CHINESE_S_BENQ):
CScalerLoadHardwareVLCFont(FontChiSRestore,_RestoreFontStartBenq);//,2);
break;
case(_JAPAN_BENQ):
CScalerLoadHardwareVLCFont(FontJapRestore,_RestoreFontStartBenq);//,2);
break;
default:
break;
}
}
//----------------------------------------------------------------------------------------------------
// OSD Display Functions
//----------------------------------------------------------------------------------------------------
void DisplayShowRealValueBenq(BYTE ROW,BYTE COL,WORD VALUE,BYTE LENGTH)
{
COsdFxShowValueBenq(ROW,COL,VALUE,LENGTH,_NON_PERCENT,0,0);
}
void DisplayChangeWindowColorBenq(BYTE WINNO,BYTE COLOR)
{
pData[0] = 0x41; // Byte1
pData[1] = (BYTE)(WINNO * 4+3);
pData[2] = COLOR;
CScalerWrite(_OSD_ADDR_MSB_90, 3, pData, _AUTOINC);
}
void Display2BitColorOneCharBenq(BYTE Y,BYTE X,BYTE COLOR0001,BYTE COLOR1011)
{
COsdFxChange2bitColorBenq(ROW(Y),COL(X),WIDTH(1),HEIGHT(1),COLOR0001>>4,COLOR0001&0x0F,COLOR1011>>4,COLOR1011&0x0F);
}
void DisplayLineCharBenq(BYTE Y,BYTE X,BYTE LENGTH,BYTE CHARACTER)
{
COsdFxHLineBenq(ROW(Y),COL(X),LENGTH,CHARACTER,_WRITE_BYTE1);
}
void Display2BitColorWidthBenq(BYTE Y,BYTE X,BYTE WIDTH,BYTE COLOR0001,BYTE COLOR1011)
{
COsdFxChange2bitColorBenq(ROW(Y),COL(X),WIDTH(WIDTH),HEIGHT(1),COLOR0001>>4,COLOR0001&0x0F,COLOR1011>>4,COLOR1011&0x0F);
}
void Display1BitColorWidthBenq(BYTE Y,BYTE X,BYTE LENGTH,BYTE COLOR)
{
COsdFxHLineBenq(ROW(Y),COL(X),WIDTH(LENGTH),COLOR,_WRITE_BYTE2);
}
void Display1BitColorOneCharBenq(BYTE Y,BYTE X,BYTE COLOR)
{
COsdFxHLineBenq(ROW(Y),COL(X),WIDTH(1),COLOR,_WRITE_BYTE2);
}
void DisplayMaskStringBenq(BYTE ROW)
{
Display1BitColorWidthBenq(ROW(6+(ROW*2)),COL(0),LENGTH(_OSD_COL_SIZE_BENQ),(_CP_B_220_BENQ<<4));
}
void DisplayAutoAndNonpresetBenq(void)
{
COsdFxDisableOsdBenq();
if((bUndoFirstAuto==_FALSE) && (GET_INPUTSOURCE_TYPE() == _SOURCE_VGA)) //FISRT TIMING ON
{
if(!GET_FACTORY_MODE())
COsdEnter1stAutoBenq();
else
CEepromSaveNewModeData();
}
bUndoFirstAuto=_TRUE;
CTimerReactiveTimerEvent(SEC(3),COsdFxOsdTimerBenq);
ucOsdState=_MenuShowNonPresetModeBenq;//DPMS 陪ボNONPRESET MODE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -