⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 benq_osddisp.c

📁 realtek LCD monitor, TV开发源代码
💻 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 + -