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

📄 osdtv900.c

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

#include "Header\Include.h"

#if(_OSD_TYPE == _OSD900)
#if(_VIDEO_TV_SUPPORT && _TV_CHIP != _TV_NONE)

//------------------------------------------------------------
void OSDTVProc()
{
    switch(ucOsdState)
    {
        case _MENU_NONE:                 MTVNoneProc();         break;
        case _MENU_COLOR:
        case _MENU_IMAGE_SETTING:
        case _MENU_TV:
        case _MENU_OSD_MENU:
        case _MENU_LANGUAGE:
        case _MENU_MISC:
        case _MENU_EXIT:                 MTVMainProc();         break;


        case _MENU_CONTRAST:
        case _MENU_BRIGHTNESS:
        case _MENU_HUE:
        case _MENU_SATURATION:
        case _MENU_COLOR_BACK:           MAVColorPageProc();    break;

        case _MENU_GAMMA:
        case _MENU_SHARPNESS:
        case _MENU_IMAGE_BACK:           MAVImagePageProc();    break;

        case _MENU_OSD_HPOS:
        case _MENU_OSD_VPOS:
        case _MENU_OSD_TIMER:
        case _MENU_OSD_BACK:             MOsdPageProc();        break;

        case _MENU_RESET:
        case _MENU_VOLUME:
        case _MENU_MUTE:
        case _MENU_MISC_BACK:            MMiscPageProc();       break;

        case _MENU_LANGUAGE_ADJ:         MLanguageProc();       break;
        case _MENU_CONTRAST_ADJ:         MContrastProc();       break;
        case _MENU_BRIGHTNESS_ADJ:       MBrightnessProc();     break;
        case _MENU_GAMMA_ADJ:            MGammaProc();          break;
        case _MENU_SHARPNESS_ADJ:        MSharpnessProc();      break;
        case _MENU_OSD_HPOS_ADJ:         MOsdHPosProc();        break;
        case _MENU_OSD_VPOS_ADJ:         MOsdVPosProc();        break;
        case _MENU_OSD_TIMER_ADJ:        MOsdTimerProc();       break;
        case _MENU_VOLUME_ADJ :          MVolumeProc();         break;
        case _MENU_HUE_ADJ:              MAVHueAdjProc();       break;
        case _MENU_SATURATION_ADJ:       MAVSaturationAdjProc();break;

        //---- TV Item Proc----
        case _MENU_CHANNEL:
        case _MENU_SYSTEM:
        case _MENU_TUNING:
        case _MENU_SWAP:
        case _MENU_AUTO_SEARCH:
        case _MENU_MANUAL_SEARCH:
        case _MENU_TV_BACK:              MTVSubMenuProc();          break;

        case _MENU_CHANNEL_ADJ:          MChannelProc();            break;
        case _MENU_SYSTEM_ADJ:           MSystemProc();             break;
        case _MENU_TUNING_ADJ:           MTuningProc();             break;
        case _MENU_SWAP_ADJ:             MSwapProc();               break;
        case _MENU_MANUAL_SEARCH_ADJ:    MManualSearchProc();       break;
        default:
               break;
    }
}
//-------------------------------------------------------------------------
//
// ucOption:   0x01: Only show ucTvNumber          SHOW_CH_TV_NUMBER
//             0x02: Show tv type                  SHOW_CH_TV_TYPE
//             0x04: Show sound type               SHOW_CH_SOUND_TYPE
//
//-------------------------------------------------------------------------
void CShowTVNumber(BYTE ucTvNumber, BYTE ucOption)
{
    unsigned char y;
    
    COsdFxDisableOsd();
    SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);
    SetOSDDouble(OSD_DOUBLE_HEIGHT_ENABLE | OSD_DOUBLE_WIDTH_ENABLE);
    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, 0x20, THE_BYTE2);
    OSDPosition(30,30,38,1,0x01);
    COsdFxEnableOsd();
    CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);

    y = 0;
    if(ucOption & SHOW_CH_TV_NUMBER)
    {
        ucTvNumber = ucTvNumber;     //test
        Gotoxy(5,y,BYTE_DISPLAY);
        PrintfDec(ucTvNumber);
        y++;
    }
    if(ucOption & SHOW_CH_TV_TYPE)
    {
         if(ucTVType < 4)
         {
             RightAlignTextOut((unsigned char code *)sTVType[ucTVType],8,y);
             y++;
         }
    }
    if(ucOption & SHOW_CH_SOUND_TYPE)
    {
        CI2cRead(_TV_MAX_CHANNEL_EEPROM_ADDR, stVDCColor.CurrentChannel, 1, pData);    // Read current channel sound and tv system
        RightAlignTextOut((unsigned char code *)sTVSoundType[pData[0] & 0x03], 8, y);
        y++;
    }
}
//-------------------------------------------------------------------------
void CShowAutoSearchSlider(BYTE ucCurrentValue)
{
    SLIDER(ucCurrentValue);
}
//----------------------------------------------------------------------------------------------------
bit CStopAutoSearch(void)
{
    //return 1;//while stop auto search
    return 0; // Continue auto search
}
//----------------------------------------------------------------------------------------------------
void CShowAutoSerachTotal(BYTE ucSearchTotal)
{
    Gotoxy(9,21,BYTE_DISPLAY);
    PrintfDec(ucSearchTotal);
}
//----------------------------------------------------------------------------------------------------
void DrawTVMainPage()
{
    // Close Window2
    COsdFxCloseWindow(2);
    // Load font
    CScalerLoadFont(Fnt_MainPage_Ico,0x7a * 2,42 * 2,_COMPRESS_FONT);
    CScalerLoadFont(Fnt_TV_Ico,      0x86 * 2,6 * 2, _COMPRESS_FONT);
    CScalerLoadFont(Fnt_Jap2, 0x03,10, _COMPRESS_FONT);
    
    SetIconCntAtb(7);                                             //Set Icon Count : 7

    // Out Icon & Out Text
    DispIcon(3,4,0x7a);                                           //Color Icon
    DispIcon(3,7,0x80);                                           //Image setting Icon
    DispIcon(3,10,0x86);                                          //TV Icon
    DispIcon(3,13,0x8c);                                          //Osd Menu Icon
    DispIcon(3,16,0x92);                                          //Languege Icon
    DispIcon(3,19,0x98);                                          //Misc Icon
    DispIcon(3,22,0x9e);                                          //Exit Icon

    Gotoxy(7,5,BYTE_DISPLAY);
    Textout((unsigned char code *)sColor[GET_LANGUAGE]);

    Gotoxy(7,8,BYTE_DISPLAY);
    Textout((unsigned char code *)sImageSetting[GET_LANGUAGE]);

    Gotoxy(7,11,BYTE_DISPLAY);
    Textout((unsigned char code *)sMenuTV[GET_LANGUAGE]);

    Gotoxy(7,14,BYTE_DISPLAY);
    Textout((unsigned char code *)sOsdMenu[GET_LANGUAGE]);

    Gotoxy(7,17,BYTE_DISPLAY);
    Textout((unsigned char code *)sLanguage[GET_LANGUAGE]);

    Gotoxy(7,20,BYTE_DISPLAY);
    Textout((unsigned char code *)sMisc[GET_LANGUAGE]);

    Gotoxy(7,23,BYTE_DISPLAY);
    Textout((unsigned char code *)sExit[GET_LANGUAGE]);

    DrawTVPen(1);
}
//---------------------------------------------------------------------------
void DrawTVPen(unsigned char ucState)
{
     unsigned char y;
     switch(ucOsdState)
     {
        case _MENU_COLOR:               y = 5;          break;
        case _MENU_IMAGE_SETTING:       y = 8;          break;
        case _MENU_TV:                  y = 11;         break;
        case _MENU_OSD_MENU:            y = 14;         break;
        case _MENU_LANGUAGE:            y = 17;         break;
        case _MENU_MISC:                y = 20;         break;
        case _MENU_EXIT:                y = 23;         break;
     }
     DrawPen(ucState,y);
}
//---------------------------------------------------------------------------
void DrawTVPage()
{

    // Load font
    CScalerLoadFont(Fnt_TVPage_Ico, 0x7a * 2,30 * 2,_COMPRESS_FONT);
    CScalerLoadFont(Fnt_Back_Ico,0x98 * 2,6 * 2,_COMPRESS_FONT);

    CLEAR_OSD_ADJUST();

    Set2BitColor(1,4,5,14,sStyle2BitPen);
    // Out Icon & Out Text
    DispIcon(3,4,0x7A);                                           // Channel Icon
    DispIcon(3,6,0x80);                                           // System Icon
    DispIcon(3,8,0x86);                                           // Tuning Icon
    DispIcon(3,10,0x8C);                                          // Swap Icon
    DispIcon(3,12,0x92);                                          // AutoSearch Icon
    DispIcon(3,14,0x92);                                          // ManualSearch Icon
    DispIcon(3,16,0x98);                                          // Back Icon

    Gotoxy(7,5,BYTE_DISPLAY);
    Textout((unsigned char code *)sChannel[GET_LANGUAGE]);

    Gotoxy(7,7,BYTE_DISPLAY);
    Textout((unsigned char code *)sSystem[GET_LANGUAGE]);

    Gotoxy(7,9,BYTE_DISPLAY);
    Textout((unsigned char code *)sTuning[GET_LANGUAGE]);

    Gotoxy(7,11,BYTE_DISPLAY);
    Textout((unsigned char code *)sSwap[GET_LANGUAGE]);

    Gotoxy(7,13,BYTE_DISPLAY);
    Textout((unsigned char code *)sAutoSearch[GET_LANGUAGE]);

    Gotoxy(7,15,BYTE_DISPLAY);
    Textout((unsigned char code *)sManualSearch[GET_LANGUAGE]);

    Gotoxy(7,17,BYTE_DISPLAY);
    Textout((unsigned char code *)sBack[GET_LANGUAGE]);


    COsdFxDrawWindow(XSTART(40), YSTART(355), XEND(250), YEND(445), tOSD_WINDOW2_STYLE);
    COsdFxChangeWindowColor(COLOR00(_CP_BLACK), tOSD_WINDOW2_STYLE);

    DrawPen(1,(ucOsdState - _MENU_CHANNEL) * 2 + 5);

}
//---------------------------------------------------------------------------
void DrawChannel()
{
     Gotoxy(7,22,BYTE_DISPLAY);
     Textout("- ");
     PrintfDec(stVDCColor.CurrentChannel);
     Textout("  \x2c");
}
//---------------------------------------------------------------------------
void DrawTVSystem()
{
     CenterTextout((BYTE code *)sTVType[ucTVType],11,21);
}
//---------------------------------------------------------------------------
void DrawTuning()
{
     WORD iFreq = CLoadChannelFreq(stVDCColor.CurrentChannel);
     CShowAutoSearchSlider(FreqGuage(iFreq));
}
//---------------------------------------------------------------------------
void DrawSwap()
{
    Gotoxy(8,21,BYTE_DISPLAY);
    PrintfDec(stVDCColor.CurrentChannel);
}
//---------------------------------------------------------------------------
void DrawManualSearch()
{
     DrawTuning();
}
//---------------------------------------------------------------------------





//---------------------------------------------------------------------------
void MTVNoneProc()
{
     switch(ucKeyMessage)
     {
         case VK_MENU_OUT:                              break;
         case VK_MENU_IN:       MTVNoneMenuIn();        break;
         case VK_PREV_MENU:     MTVNoneLR(0);           break;
         case VK_NEXT_MENU:     MTVNoneLR(1);           break;
         case VK_ADJ_DEC:                               break;
         case VK_ADJ_INC:                               break;
         case VK_DO:                                    break;
         case VK_ENTER:         MTVNoneMenuIn();        break;
         case VK_LEFT:          MTVNoneLR(0);           break;
         case VK_RIGHT:         MTVNoneLR(1);           break;
     }
}
//------------------------------------------------------------
void MTVNoneMenuIn()
{
     ucOsdState = _MENU_COLOR;     
     LoadLanguageFont();
     InitOSDFrame();
     DrawMainPage();
     COsdFxEnableOsd();
}
//------------------------------------------------------------
void MTVNoneLR(unsigned char LR)
{
    LR = LR;
}
//------------------------------------------------------------




//---------------------------------------------------------------------------
void MTVMainProc()
{
     switch(ucKeyMessage)
     {
         case VK_MENU_OUT:      MTVMainMenuOut();       break;
         case VK_MENU_IN:       MTVMainMenuIn();        break;
         case VK_PREV_MENU:     MTVMainLR(0);           break;
         case VK_NEXT_MENU:     MTVMainLR(1);           break;
         case VK_ADJ_DEC:                               break;
         case VK_ADJ_INC:                               break;
         case VK_DO:                                    break;
         case VK_ENTER:         MTVMainMenuIn();        break;
         case VK_LEFT:          MTVMainLR(0);           break;
         case VK_RIGHT:         MTVMainLR(1);           break;
     }
}
//------------------------------------------------------------
void MTVMainMenuIn()
{
     CLEAR_OSD_CLIENT();
     switch(ucOsdState)
     {
        case _MENU_COLOR:
             ucOsdState = _MENU_CONTRAST;
             DrawAVColorPage();
             break;
        case _MENU_IMAGE_SETTING:
             ucOsdState = _MENU_GAMMA;
             DrawAVImagePage();
             break;
        case _MENU_TV:
             ucOsdState = _MENU_CHANNEL;
             DrawTVPage();
             break;
        case _MENU_OSD_MENU:

⌨️ 快捷键说明

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