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

📄 osdpub900.c

📁 LCD Monitor 部分源码
💻 C
📖 第 1 页 / 共 3 页
字号:
#define __OSD900_LCD_OSD__

#include "Header\Include.h"
#if(_OSD_TYPE == _OSD900)

//-----------------------------------------------------------
void COsdHandler()
{
    COsdEventMsgProc();
    KeyMsgToOsdMsg();
    COsdEventMsgProc();
    if (ucCurrState == _ACTIVE_STATE)
    {
         COsdProc();
         if(ucKeyMessage != VK_NONE)
             CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
    }
    #if(_BURNIN_EN)
    else if(ucCurrState == _NOSIGNAL_STATE )//|| 
       //ucCurrState == _NOSUPPORT_STATE )
    {
          if(GET_BURNIN_STATE() == BURNIN_ON)
          {
                BurnInRun();
          }
    }
    #endif
    if(ucOsdState == 255)
        NotUseFunc();    //mask
}
//-----------------------------------------------------------
void COsdProc()
{
     switch(stSystemData.InputSource)
     {
         case _SOURCE_VGA:
         case _SOURCE_DVI:
             OSDVGAProc();
             break;
/*
         case _SOURCE_VIDEO8_AV:
         case _SOURCE_VIDEO8_SV:
         case _SOURCE_VIDEO8_YUV:
             OSDAVProc();
             break;
  
         case _SOURCE_VIDEO8_TV:
             OSDTVProc();
             break;
*/
     }
     
     #if(_FACTORY_MENU_EN)
        COsdFacHandler();
     #endif     
}
//-----------------------------------------------------------
void COsdDispFirstTimeLoadFont(void)
{    
    //Andy Before First Time Load Font Disable OSD
    COsdFxDisableOsd();

    SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);

    CScalerLoadFont(Fnt_Global,0x00,92,_COMPRESS_FONT);
    CScalerLoadFont(Fnt_Pen_Ico,0x78*2,2*2,_COMPRESS_FONT);
    CScalerLoadFont(Fnt_Logo,0xa4*2,12*2,_COMPRESS_FONT);
}
//-----------------------------------------------------------
void LoadLanguageFont()
{
     switch(GET_LANGUAGE)
     {
         case LNG_CHI_S:
              #if(LNG_CHI_S_EN)
              CScalerLoadFont(Fnt_STJ, 0x5c,30,_COMPRESS_FONT);
              CScalerLoadFont(Fnt_ST,  0x7a,38,_COMPRESS_FONT);
              CScalerLoadFont(Fnt_CHIS,0xa0,54,_COMPRESS_FONT);
              #endif
              break;
         case LNG_CHI_T:
              #if(LNG_CHI_T_EN)
              CScalerLoadFont(Fnt_STJ, 0x5c,30,_COMPRESS_FONT);
              CScalerLoadFont(Fnt_ST,  0x7a,38,_COMPRESS_FONT);
              CScalerLoadFont(Fnt_TJ,  0xa0,8, _COMPRESS_FONT);
              CScalerLoadFont(Fnt_CHIT,0xa8,46,_COMPRESS_FONT);
              #endif
              break;
         case LNG_JAP:
              #if(LNG_JAP_EN)
              CScalerLoadFont(Fnt_STJ, 0x5c,30, _COMPRESS_FONT);
              CScalerLoadFont(Fnt_TJ,  0x7e,8,  _COMPRESS_FONT);
              CScalerLoadFont(Fnt_Jap, 0x8a,102,_COMPRESS_FONT);
              #endif
              break;
         case LNG_RUS:
              #if(LNG_RUS_EN)
              CScalerLoadFont(Fnt_RUS, 0x5c,33, _COMPRESS_FONT);
              #endif
              break;
         case LNG_KOR:
              #if(LNG_KOR_EN)
              CScalerLoadFont(Fnt_KOR, 0x60,124, _COMPRESS_FONT);
              #endif
              break;
     }
}
//-----------------------------------------------------------
void LoadLanguageFont1()
{
     switch(GET_LANGUAGE)
     {
         case LNG_CHI_S:
              #if(LNG_CHI_S_EN)
              CScalerLoadFont(Fnt_CHI1_ST, 0x5c,14,_COMPRESS_FONT);
              CScalerLoadFont(Fnt_CHI1_S,  0x6a,14,_COMPRESS_FONT);
              #endif
              break;
         case LNG_CHI_T:
              #if(LNG_CHI_T_EN)
              CScalerLoadFont(Fnt_CHI1_ST, 0x5c,14,_COMPRESS_FONT);
              CScalerLoadFont(Fnt_CHI1_T,  0x6a,14,_COMPRESS_FONT);
              #endif
              break;
         case LNG_JAP:
              #if(LNG_JAP_EN)
              CScalerLoadFont(Fnt_JAP1,  0x5c,34,_COMPRESS_FONT);
              #endif
              break;
         case LNG_RUS:
              #if(LNG_RUS_EN)
              CScalerLoadFont(Fnt_RUS, 0x5c,33, _COMPRESS_FONT);
              #endif
              break;
         case LNG_KOR:
              #if(LNG_KOR_EN)
              CScalerLoadFont(Fnt_KOR, 0x60,124, _COMPRESS_FONT);
              #endif
              break;
     }
}
//-----------------------------------------------------------
void COsdDispOsdTimerEvent(void)
{
    COsdFxDisableOsd();
    ucOsdState = _MENU_NONE;
}
//-----------------------------------------------------------
void COsdEventMsgProc(void)
{
    switch(ucOsdEventMsg)
    {
        case _SHOW_NOSIGNAL_MSG:
        case _SHOW_NOCABLE_MSG:
        case _SHOW_NOSUPPORT_MSG:
             #if(_BURNIN_EN)
                 if(GET_BURNIN_STATE() == BURNIN_ON)
                    InitBurnIn();
             #endif
             ShowHint();
             break;
        case _SAVE_EE_MODEUSERDATA_MSG:
             CEepromSaveModeData(stModeInfo.ModeCurr);
             break;
        case _SAVE_EE_SYSTEMDATA_MSG:
             CEepromSaveSystemData();
             break;
        case _SAVE_EE_OSDUSERDATA_MSG:
             CEepromSaveOsdUserData();
             break;
        case _SAVE_EE_ADCDATA_MSG:
             CEepromSaveAdcData();
             break;
        case _SAVE_EE_COLORPROC0_MSG:
             CEepromSaveBriConData();
             break;
        case _SAVE_EE_COLORPROC1_MSG:
             CEepromSaveColorTempData();
             break;
        case _SAVE_EE_VEDIOCOLOR_MSG:
             #if(_VIDEO_SUPPORT)
             CEepromSaveVedioColor();
             #endif
             break;
        case _ENTER_FACTORY_MODE_MSG:
             //stOsdUserData.OsdSettingFlag |= _BIT7;
             EnterFactoryMenu();
             break;
        case _CHANGE_SOURCE_MSG:
             CLR_SOURCE_AUTOCHANGE();
             CEepromSaveSystemData();
             CModeResetMode();
             break;
        case _DO_AUTO_CONFIG:
             if(stSystemData.InputSource != _SOURCE_DVI)
             DoAuto();
        case _DO_SHOW_NOTE:
             ShowNote();
             break;


        // Andy Add OSD Events

        case OE_ENTER_MENU://           0x80            //进入下一级菜单                (VK_MENU_IN)
             ucKeyMessage = VK_MENU_IN;
             COsdProc();
             break;

        // 只有在有菜单时 (ucOsdState != _MENU_NONE) 时才会发出以下消息
        case OE_MENU_OUT://             0x81            //回到上一级菜单                (VK_MENU_OUT)
             ucKeyMessage = VK_MENU_OUT;
             COsdProc();
             break;
        case OE_MENU_ENTER_NEXT_MENU:// 0x82            //进入上级菜单的下一级菜单      (VK_MENU_OUT + VK_PREV_MENU + VK_MENU_IN)
             ucKeyMessage = VK_NEXT_MENU;
             COsdProc();
             break;

        case OE_MENU_ENTER_PREV_MENU:// 0x83            //进入上级菜单的上一级菜单      (VK_MENU_OUT + VK_NEXT_MENU + VK_MENU_IN)
             ucKeyMessage = VK_PREV_MENU;
             COsdProc();
             break;

        // 任何时候都可以发出以下的消息
        case OE_DO_AUTO://              0x84            //Auto
             if(stSystemData.InputSource != _SOURCE_DVI)
             DoAuto();
             break;
        case OE_DO_CHANGE_SOURCE://     0x85            //改变模式
             if(ChangeSource())
             {
                 CLR_SOURCE_AUTOCHANGE();
                 CEepromSaveSystemData();
                 CModeResetMode();
                 if(stSystemData.InputSource == _SOURCE_VIDEO8_TV)    fOsdDouble = 1;
                 else    fOsdDouble = 0;
            }
             break;
        case OE_GOTO_VGA://             0x86            //切项到VGA

             break;
        case OE_SWITCH_TV_AV://         0x87            //AV/TV/SV 切换

             break;
        // 只有在没有菜单时 (ucOsdState = _MENU_NONE) 时才会发出以下消息
        case OE_GO_VOLUME_ADJUST://     0x88            //进入音量调节
        case OE_GO_BRIGHT_ADJUST://     0x89            //进入亮度调节
            #if(_VOLUME_CTRL_TYPE != _AUDIO_NONE)
             DrawVolume();
             ucOsdState = _MENU_VOLUME_SP;
            #else
             DrawBright();
             ucOsdState = _MENU_BRIGHT_SP;
            #endif
             break;
        case OE_CH_INC://               0x8a            //频道 +
             //CNextChannel();
             //ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;
             break;             
        case OE_CH_DEC://               0x8b            //频道 -
             //CPrevChannel();
             //ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;
             break;             
        default:
            break;
    }
    ucOsdEventMsg = _NONE_MSG;
}
//------------------------------------------------------------------------------
void ShowMode(void)
{
     if(ucCurrState == _NOSIGNAL_STATE)    return;
     switch(stSystemData.InputSource)
     {
         case _SOURCE_VGA:
         case _SOURCE_DVI:
              //display display size
              Gotoxy(3,25,0x50);
              OutputDisplaySize();
              OutputChar(' ');
              OutputChar('@');
              OutputChar(' ');
              OutputRefrushRate();
              break;

         #if(_VIDEO_SUPPORT)
         case _SOURCE_VIDEO8_AV:
         case _SOURCE_VIDEO8_SV:
         case _SOURCE_VIDEO8_YUV:
         case _SOURCE_VIDEO8_TV:
              if(CHECK60HZ())
                  CenterTextout(sNTSC,12,25);
              else
                  CenterTextout(sPAL,12,25);
              break;
         #endif
     }
}
//------------------------------------------------------------------------------
void OSDSlider(unsigned char row, unsigned char col, unsigned char length, unsigned char value, unsigned char range,
                unsigned char color)
{
    unsigned int bound;
    unsigned char i,c;
    OSDLine(row, col, length + 6, color, THE_BYTE2);   // Set Slider Attribute. 4 extra columns for space/numbers/space
    bound   = length * value;
    Gotoxy(col,row,THE_BYTE1);
    OutputChar(0x21);          // Left Border
    for (i = 1; i <= length; i++)
    {
        if (bound)
        {
            if(bound >= range)
            {
                c       = 0x28;
                bound   = bound - range;
            }
            else
            {
                color   = (bound << 4) / range;
                bound   = 0;
                if (4 > color)                    c = 0x23;
                else if (7 > color)               c = 0x24;
                else if (10 > color)              c = 0x25;
                else if (13 > color)              c = 0x26;
                else                              c = 0x27;
            }
        }
        else
        {
            c = 0x22;
        }
        OutputChar(c);
    }
    OutputChar(0x29);    // Right Border
    PrintfDec(value);    //值显示在右边
}
//---------------------------------------------------------------------------
void DispIcon(unsigned char x,unsigned char y,unsigned char ucIconBaseAddr)
{
     Gotoxy(x,y,BYTE_DISPLAY);

     pData[0] = ucIconBaseAddr;
     pData[1] = ucIconBaseAddr + 1;
     pData[2] = ucIconBaseAddr + 2;
     CScalerWrite(_OSD_DATA_PORT_92,3,pData,_NON_AUTOINC);

     Gotoxy(x,y + 1,BYTE_DISPLAY);
     pData[0] = ucIconBaseAddr + 3;
     pData[1] = ucIconBaseAddr + 4;
     pData[2] = ucIconBaseAddr + 5;
     CScalerWrite(_OSD_DATA_PORT_92,3,pData,_NON_AUTOINC);
}
//---------------------------------------------------------------------------
void Set2BitColor(unsigned char x,unsigned char y,
                  unsigned char Width,unsigned char Height,
                  unsigned char code *Style)
{
     OSDClear(y,Height,x,Width,Style[0],THE_BYTE0);
     OSDClear(y,Height,x,Width,Style[1],THE_BYTE2);
}
//---------------------------------------------------------------------------
void SetIconCntAtb(unsigned char ucCount)
{
     unsigned char ucHeight = (ucCount - 1)  * 3 + 2;
     Set2BitColor(1,4,5,ucHeight,sStyle2BitPen);
}
//---------------------------------------------------------------------------
void MenuShowLogo()
{
     Gotoxy(7,2,BYTE_DISPLAY);
     switch(stSystemData.InputSource)
     {
         #if(_VGA_SUPPORT)
         case _SOURCE_VGA:
              Textout(sLCDVGA);
              break;
         #endif
         #if(_TMDS_SUPPORT)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -