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

📄 osdpub903.c

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

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

//-----------------------------------------------------------
void COsdHandler()
{
    COsdEventMsgProc();
    KeyMsgToOsdMsg();
    COsdEventMsgProc();

    if (ucCurrState == _ACTIVE_STATE)
    {
         COsdProc();
         if((ucKeyMessage != VK_NONE) && (ucOsdState < FAC_AUTO_COLOR))
             CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
    }
    else if(ucCurrState == _NOSIGNAL_STATE || 
       ucCurrState == _NOSUPPORT_STATE )
    {
          if(GET_BURNIN_STATE() == BURNIN_ON)
          {
                BurnInRun();
          }
          else if(ucCurrState != _SLEEP_STATE && fMoveEn)
          {               
               ucTimeTmp++;
               if(ucTimeTmp >= 5)
               {
                   ucTimeTmp = 0;
                   SetNoSingPos();
               }
           } 
    }
    if(ucOsdState == 255)
        NotUseFunc();    //mask
}
//-----------------------------------------------------------
void COsdProc()
{
     OSDVGAProc();

     #if(_FACTORY_MENU_EN)
     COsdFacHandler();
     #endif
}
//-----------------------------------------------------------
void COsdDispFirstTimeLoadFont(void)
{    
     COsdFxDisableOsd();
     SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);
     CScalerLoadFont(Font_Global,0x00,0xad,_COMPRESS_FONT);
     LoadLanguageFont1();
}
//-----------------------------------------------------------
void LoadLanguageFont()
{
     CScalerLoadFont(Font_MENUChi_S, 0xad,0x53,_COMPRESS_FONT);
}
//-----------------------------------------------------------
void LoadLanguageFont1()
{
     CScalerLoadFont(Font_NMENUChi_S, 0xad,0x2c,_COMPRESS_FONT);
}
//-----------------------------------------------------------
void COsdDispOsdTimerEvent(void)
{
    COsdFxDisableOsd();
    ucOsdState = _MENU_NONE;
}
//-----------------------------------------------------------
void InitOsd()
{
    COsdFxDisableOsd();
//    SetOSDDouble(0);
    SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);     //  1
    SetRowCmds(ROW_COUNT,COL_WIDTH);                             //  2
    COsdFxCodeWrite(ucCloseAllWindow);                           //  Close all windows

    // Init Char Cmd
    OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x8c, BYTE_ATTRIB);      //Byte 0
    OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x00, BYTE_DISPLAY);     //Byte 1
    OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x10, BYTE_COLOR);       //Byte 2
    CAdjustColorPalette(tPALETTE_0);
}
//-----------------------------------------------------------
void InitDialog()
{
    InitOsd();
    OSDClear(0,ROW_COUNT,0,COL_WIDTH,0x8c,0x10);  //Set Font as 1bit
    OSDClear(0,ROW_COUNT,0,COL_WIDTH,0x00,0x50);  //清空显示
    OSDClear(0,ROW_COUNT,0,COL_WIDTH,0xc0,0x90);  //设置颜色

    COsdFxDrawWindow(XSTART(0), YSTART(0), XEND(400), YEND(136), tOSD_WINDOW2_STYLE);
    COsdFxChangeWindowColor(COLOR00(12), tOSD_WINDOW2_STYLE);

    COsdFxDrawWindow(XSTART(18), YSTART(12), XEND(382), YEND(128), tOSD_WINDOW3_STYLE);
    COsdFxChangeWindowColor(COLOR00(6), tOSD_WINDOW3_STYLE);

    COsdFxDrawWindow(XSTART(30), YSTART(20), XEND(370), YEND(120), tOSD_WINDOW4_STYLE);
    COsdFxChangeWindowColor(COLOR00(1), tOSD_WINDOW4_STYLE);
}
//-----------------------------------------------------------
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();
             else
                 ShowHint();
             #else
             ShowHint();
             #endif
             break;
            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 _ENTER_FACTORY_MODE_MSG:
            //stOsdUserData.OsdSettingFlag |= _BIT7;
            break;

        case _CHANGE_SOURCE_MSG:
            CLR_SOURCE_AUTOCHANGE();
            CEepromSaveSystemData();
            CModeResetMode();
            break;

        case _DO_AUTO_CONFIG:
             DoAuto();
            break;     //andy mask 
        case OE_DO_CHANGE_SOURCE://     0x85            //改变模式
             if(ChangeSource())
             {
                 CLR_SOURCE_AUTOCHANGE();
                 CEepromSaveSystemData();
                 CModeResetMode();
            }
             break;

        case _DO_SHOW_NOTE:
             ShowNote();
            break;
        default:
            break;
    }

    ucOsdEventMsg = _NONE_MSG;
}
          
//----------------------------------------------------------------------------------------------------
void ShowNote()
{
    unsigned char w;
    fMoveEn = 0;
    LoadLanguageFont1();
    CPowerPanelOn();
    #if(_TV_CHIP != _TV_NONE)
    if(stSystemData.InputSource == _SOURCE_VIDEO8_TV)
    {         
         CShowTVNumber(stVDCColor.CurrentChannel,SHOW_CH_TV_NUMBER | SHOW_CH_TV_TYPE | SHOW_CH_SOUND_TYPE);
         return;
    }
    #endif
    CAdjustColorPalette(tPALETTE_0);
    COsdFxDisableOsd();
//    SetOSDDouble(0);
    SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);
    SetRowCmds(ROW_COUNT,COL_WIDTH);
    COsdFxCodeWrite(ucCloseAllWindow);

    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x8C, THE_BYTE0);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x00, THE_BYTE1);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x30, THE_BYTE2);
    OSDPosition(30,30,1,0,0x01);

    OSDLine(1,1,8,0xa0,0x90);
    
    switch(stSystemData.InputSource)
    {
        case _SOURCE_VGA:
             CenterTextout((unsigned char code*)sVGA[GET_LANGUAGE],4,1);
             w = 3;
             break;
        case _SOURCE_DVI:
             CenterTextout((unsigned char code*)sDVI[GET_LANGUAGE],4,1);
             w = 3;
             break;
    }
 
    w = 90 + w * 12;
    COsdFxDrawWindow(XSTART(0), YSTART(0), XEND(w), YEND(95), tOSD_WINDOW0_STYLE);
    COsdFxChangeWindowColor(COLOR00(12), tOSD_WINDOW0_STYLE);

    COsdFxDrawWindow(XSTART(8), YSTART(8), XEND(w-8), YEND(87), tOSD_WINDOW1_STYLE);
    COsdFxChangeWindowColor(COLOR00(6), tOSD_WINDOW1_STYLE);

    COsdFxDrawWindow(XSTART(12), YSTART(12), XEND(w-12), YEND(83), tOSD_WINDOW2_STYLE);
    COsdFxChangeWindowColor(COLOR00(1), tOSD_WINDOW2_STYLE);

    OSDLine(2,2,6,0xa0,0x90);
    Gotoxy(2,2,BYTE_DISPLAY);
    Textout(VgaIconUp);

    OSDLine(3,3,5,0xa0,0x90);
    Gotoxy(3,3,BYTE_DISPLAY);
    Textout(VgaIconDown);
    COsdFxEnableOsd();
    CTimerReactiveTimerEvent(SEC(2),COsdDispOsdTimerEvent);
}
//---------------------------------------------------------------------------------------------------------------------
void InitDialog1()
{
     InitOsd();
     OSDClear(0,ROW_COUNT,0,COL_WIDTH,0x8c,0x10);  //Set Font as 1bit
     OSDClear(0,ROW_COUNT,0,COL_WIDTH,0x00,0x50);  //清空显示
     OSDClear(0,ROW_COUNT,0,COL_WIDTH,0xc0,0x90);  //设置颜色

     COsdFxDrawWindow(XSTART(0), YSTART(5), XEND(310), YEND(181), tOSD_WINDOW1_STYLE);
     COsdFxChangeWindowColor(COLOR00(11), tOSD_WINDOW1_STYLE);

     COsdFxDrawWindow(XSTART(10), YSTART(23), XEND(300), YEND(163), tOSD_WINDOW2_STYLE);
     COsdFxChangeWindowColor(COLOR00(6), tOSD_WINDOW2_STYLE);

     COsdFxDrawWindow(XSTART(16), YSTART(29), XEND(294), YEND(157), tOSD_WINDOW3_STYLE);
     COsdFxChangeWindowColor(COLOR00(1), tOSD_WINDOW3_STYLE);

     OSDLine(9, 6,15,0x10,0x90);          
     switch(stSystemData.InputSource)
     {
         case _SOURCE_VGA:
              CenterTextout((unsigned char code*)sVGA[GET_LANGUAGE],11,9);
              break;
         case _SOURCE_DVI:
              CenterTextout((unsigned char code*)sDVI[GET_LANGUAGE],11,9);
              break;
     }
}
//------------------------------------------------------------
void ShowHint()
{
     switch(ucOsdEventMsg)
     {
         case _SHOW_NOSIGNAL_MSG:
              InitDialog1();
              NoConnect_Dialog();
              SetNoSingPos();
              fMoveEn = 1;
              break;
         case _SHOW_NOCABLE_MSG:
              InitDialog1();
              NoConnect_Dialog();
              SetNoSingPos();
              fMoveEn = 1;
              break;
         case _SHOW_NOSUPPORT_MSG:
              InitDialog1();
              COsdFxDrawWindow(XSTART(101), YSTART(110), XEND(151), YEND(154), tOSD_WINDOW4_STYLE);
              COsdFxChangeWindowColor(COLOR00(15), tOSD_WINDOW4_STYLE);
              COsdFxDrawWindow(XSTART(111), YSTART(118), XEND(141), YEND(146), tOSD_WINDOW5_STYLE);
              COsdFxChangeWindowColor(COLOR00(1), tOSD_WINDOW5_STYLE);
              NotSupport_Dialog();
              fMoveEn = 0;
              break;
     }

     CPowerPanelOn();
     COsdFxEnableOsd();
     CTimerCancelTimerEvent(COsdDispOsdTimerEvent);
}

//----------------------------------------------------------------------------------------------------
void NoConnect_Dialog()
{

     unsigned char Len = StrLen((unsigned char code *)sCheck_Singnal_Cable[GET_LANGUAGE]);     
     Gotoxy((24 - Len)/2,3,0x50);
     Textout_Lng(sCheck_Singnal_Cable);
 
     OSDLine(5, 7,2,0xc2,0x90);    
     OSDLine(5,11,2,0xc7,0x90);    
     OSDLine(5,15,2,0xc3,0x90); 
//     CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
}

//----------------------------------------------------------------------------------------------------
void NotSupport_Dialog()           
{
     unsigned char Len = StrLen((unsigned char code *)sNotOptimumMode[GET_LANGUAGE]);     

     Gotoxy((22 - Len)/2,2,0x50);
     Textout_Lng(sNotOptimumMode);
     Gotoxy(3,3,0x50);
     Textout_Lng(sRecommendedMode);
     if(GET_LANGUAGE == LNG_ENG)
          Gotoxy(4,5,0x50);
     else Gotoxy(4,4,0x50);
     OutputRecommendedMode();
     OutputChar(0x00);
     Textout(sRMode_Eng); //60HZ
     OSDLine(7, 9,2,0xd0,0x90);    
     Gotoxy(9,7,0x50);
     OutputChar(0x0d);     //display ?
     OSDPosition(372,324,50,50,0x01);   
//     CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
}
//----------------------------------------------------------------------------------------------------

void OutputRecommendedMode()
{
     if(_DISP_WID / 1000)    pData[3] = '1';
     else                             pData[3] = 0;
     pData[4] = (unsigned char)((_DISP_WID / 100) % 10) + '0';
     pData[5] = (unsigned char)((_DISP_WID / 10) % 10) + '0';
     pData[6] = (unsigned char)( _DISP_WID % 10) + '0';
     pData[7] = ' ';
     pData[8] = 0x58;  // x 
     pData[9]  = ' ';
     if(_DISP_LEN / 1000)
     {
         pData[10] = '1';
         pData[11] = (unsigned char)((_DISP_LEN / 100) % 10) + '0';
         pData[12] = (unsigned char)((_DISP_LEN / 10) % 10) + '0';
         pData[13] = (unsigned char)(_DISP_LEN % 10) + '0';
         pData[14] = 0;
         pData[0]  = 14;
     }
     else
     {
         pData[10] = (unsigned char)((_DISP_LEN / 100) % 10) + '0';
         pData[11] = (unsigned char)((_DISP_LEN / 10) % 10) + '0';
         pData[12] = (unsigned char)(_DISP_LEN % 10) + '0';
         pData[13] = 0;
         pData[0]  = 13;
     }
     CScalerWrite(_OSD_DATA_PORT_92,pData[0] - 3,&pData[3],_NON_AUTOINC);
}

//----------------------------------------------------------------------------------------------------
void SetNoSingPos()
{
     static bit bDirectX = 1,bDirectY = 0;
     if(bDirectX)
     {
         ucNoSngX += 3;
         if(ucNoSngX >= HINT_POS_RIGHT)
         {
             ucNoSngX = HINT_POS_RIGHT;
             bDirectX = 0;
         }
     }
     else
     {
         ucNoSngX -= 3;
         if(ucNoSngX <= HINT_POS_LEFT)
         {
             ucNoSngX = HINT_POS_LEFT;
             bDirectX = 1;
         }
     }

     if(bDirectY)
     {
         ucNoSngY += 3;
         if(ucNoSngY >= HINT_POS_BOTTOM)
         {
             ucNoSngY = HINT_POS_BOTTOM;
             bDirectY = 0;
         }
     }
     else
     {
         ucNoSngY -= 3;
         if(ucNoSngY <= HINT_POS_TOP)
         {
             ucNoSngY = HINT_POS_TOP;
             bDirectY = 1;
         }
     }
     RTDOsdPosition(ucNoSngX,ucNoSngY,0x03);
     CTimerDelayXms(20);
}
//-----------------------------------------------------------
void RTDOsdPosition(unsigned int x,unsigned int y,unsigned char ucPar)
{
    CScalerSetBit(_OSD_SCRAMBLE_93, 0xf8, 0x02);

    pData[0] = CScalerGetBit(_OVERLAY_CTRL_6C, _BIT0);

    pData[0] = (pData[0] == 0x00) ? 0xc0 : 0xe0;
    pData[1] = 0x00;
    CScalerWrite(_OSD_ADDR_MSB_90, 2, pData, _AUTOINC);

    pData[0] = y >> 1;
    pData[1] = (BYTE)(x >> 2);
    pData[2] = ((BYTE)(x & 0x0003) << 6) | ((y & 0x01) << 5) | ucPar;
    CScalerWrite(_OSD_DATA_PORT_92, 3, pData, _NON_AUTOINC);

    CTimerWaitForEvent(_EVENT_DEN_STOP);
    CTimerWaitForEvent(_EVENT_DEN_STOP);
    CScalerSetBit(_OSD_SCRAMBLE_93, 0xf8, 0x05);
}
//---------------------------------------------------------------------------
void DrawMainPage()
{
     switch(stSystemData.InputSource)
     {
         #if(_VGA_SUPPORT)
         case _SOURCE_VGA:
         case _SOURCE_DVI:
             DrawVGAMainPage();
             break;
         #endif
      }
}
//----------------------------------------------------------------------------------------------------
void DrawPicPage()
{
    CLEAR_CLIENT;
    DrawMenuItem1(sBrightness,3);     //亮度
    Gotoxy(24,3,0x50);
    PrintfDec(BRIGHTNESS_GUAGE);
    MENUITEM_STATE_NOMAL(3);

    DrawMenuItem2(sContrast,5);       //对比度
    Gotoxy(24,5,0x50);
    PrintfDec(CONTRAST_GUAGE);
    MENUITEM_STATE_NOMAL(5);
    DRAW_BOTTOMLINE(6);               //底线
    Show_MenuItem_State(_MENU_BRIGHT,ucOsdState,1);
    Show_Tip1();
}
//------------------------------------------------------------
void Draw_Contrast_Page()
{
     CLEAR_CLIENT;
     Adj_Page_Title(sContrast);
     NATAK_SLIDER(CONTRAST_GUAGE, 100); 
     Show_Tip4();

}
//------------------------------------------------------------
void Draw_Bright_Page()
{
     CLEAR_CLIENT;
     Adj_Page_Title(sBrightness);
     NATAK_SLIDER(BRIGHTNESS_GUAGE, 100);
     Show_Tip4();

}
//----------------------------------------------------------------------------------------------------

void DrawColorPage()
{
    CLEAR_CLIENT; 
    DrawMenuItem1(MMagicColor,3);
    MENUITEM_STATE_NOMAL(3);

⌨️ 快捷键说明

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