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

📄 osdpub003.c

📁 LCD TV,uVision2 Project, (C) Keil Software
💻 C
📖 第 1 页 / 共 2 页
字号:
#define __OSD003_LCD_OSD__

#include "Header\Include.h"
#if(OSD_TYPE == OSD003)

//-----------------------------------------------------------
void COsdHandler()
{
    COsdEventMsgProc();
    if(ucKeyMessage == VK_ENTER && ucOsdState == _MENU_NONE)
    {
          ChangeSource();
          ucOsdEventMsg = _CHANGE_SOURCE_MSG;
          CEepromWrite(_SYSTEM_DATA_ADDRESS+1, LENGTH(1), &stSystemData.InputSource);  // Save current input source

          return;
    }

#if(BURNIN_EN)	//fenix
	if(ucKeyMessage == VK_MENU)
	{
			bBurningMode = 1;
		//ResetDialog();
	}
#endif
    COsdEventMsgProc();
           
#if(_TV_CHIP != _TV_NONE)
    if (stSystemData.InputSource == _SOURCE_VIDEO8_TV || ucCurrState == _ACTIVE_STATE)
#else
    if (ucCurrState == _ACTIVE_STATE)
#endif
    {          
         COsdProc();
         if(ucKeyMessage != _NONE_KEY_MESSAGE)
             CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
    }    
    if(ucOsdState == 255)
    {
        NotUseFunc();
    }
}
//-----------------------------------------------------------
void COsdProc()
{
     switch(stSystemData.InputSource)
     {
#if(_VGA_SUPPORT)
         case _SOURCE_VGA:
         case _SOURCE_DVI:
             OSDVGAProc();
             break;
#endif    
#if(_VIDEO_SUPPORT)
         case _SOURCE_VIDEO8_AV:
         case _SOURCE_VIDEO8_SV:
         case _SOURCE_VIDEO8_YUV:
             OSDAVProc();
             break;
#endif    
#if(_TV_CHIP != _TV_NONE)
         case _SOURCE_VIDEO8_TV:
             OSDTVProc();
             break;
#endif
     }

#if(FACTORY_MENU_EN)
     COsdFacHandler();
#endif
}
//-----------------------------------------------------------
void COsdDispFirstTimeLoadFont(void)
{    
     //Andy Before First Time Load Font Disable OSD
     COsdFxDisableOsd();

     //Load Public Fonts
     SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);
     
     CScalerLoadFont(FntGlobal,0x00,0x5d,_COMPRESS_FONT);
     
     //Load Languege Font
     LoadLanguageFont();
}
//-----------------------------------------------------------
void LoadLanguageFont()
{
     switch(GET_LANGUAGE)
     {
         case LNG_CHI_S:
              #if(LNG_CHI_S_EN == 1)
              CScalerLoadFont(FntCHI_ST,0x80,68,_COMPRESS_FONT);
              CScalerLoadFont(FntCHI_S, 0xd0,32,_COMPRESS_FONT);
              #endif
              break;
         case LNG_CHI_T:
              #if(LNG_CHI_T_EN == 1)
              CScalerLoadFont(FntCHI_ST,0x80,68,_COMPRESS_FONT);
              CScalerLoadFont(FntCHI_T, 0xd0,32,_COMPRESS_FONT);
              #endif
              break;
     }
}
//-----------------------------------------------------------
void COsdDispOsdTimerEvent(void)
{
    COsdFxDisableOsd();
    ucOsdState = _MENU_NONE;

#if(_AUTO_POWER_DOWN && _TV_CHIP != _TV_NONE)
    bTimerOnScreen = 0;
#endif
}
//-----------------------------------------------------------
void COsdEventMsgProc(void)
{
    switch(ucOsdEventMsg)
    {
        case _SHOW_NOSIGNAL_MSG:
        case _SHOW_NOCABLE_MSG:
        case _SHOW_NOSUPPORT_MSG:
             HintDialog();
             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;
#if(_VIDEO_SUPPORT)
        case _SAVE_EE_VEDIOCOLOR_MSG:
            CEepromSaveVedioColor();
            break;
#endif
        case _ENTER_FACTORY_MODE_MSG:
            //stOsdUserData.OsdSettingFlag |= _BIT7;
            break;

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

        case _DO_AUTO_CONFIG:
#if(_VGA_SUPPORT)
     //       DoAuto();
#endif
        //    break;     //andy mask 
        case _DO_SHOW_NOTE:
            ShowNote();
            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(5,8,0x50);
            OutputDisplaySize();
            //display refresh
            Gotoxy(17,8,0x50);
            OutputChar('@');          
            OutputChar(0x00);            
            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,14,8);
            else
                 CenterTextout(sPAL,14,8);
            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);    //值显示在右边
    OutputChar(0x2a);
}
//---------------------------------------------------------------------------
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 NotUseFunc()
{
    SetOSDRamAddress(0,0,0);
    DirectWOSDRam(0,0,0,0);
    SetRowCmds(0,0);
    Gotoxy(0,0,0);
    OutputChar(0);
    Textout(0);
    PrintfDec(0);
    PrintfHex(0);
    OSDPosition(0,0,0,0,0);
    OSDLine(0,0,0,0,0);
    OSDClear(0,0,0, 0,0,0);
    OutputDisplaySize();       //在当前的位置输出显示尺寸
    OutputRefrushRate();       //在当前的位置输出刷新频率
    OutputHSync();             //在当前的位置输出HSync
    COsdFxCodeWrite(0);
    COsdFxDisableOsd();
    COsdFxDrawWindow(0,0,0,0,0);
    COsdFxChangeWindowColor(0,0);
    OutputDisplaySize();
    OutputRefrushRate();
    OutputHSync();    
    StrLen(0);
    ValueInRangeChange(0,0,0,0,0);
    SetRTDPWM(0,0);
    CAutoDoAutoConfig();
    CAutoDoWhiteBalance();
    CEepromSaveOsdUserData();
    CEepromSaveBriConData();
    CEepromSaveColorTempData();
    CScalerLoadFont(0, 0, 0, 0);
    ShowMode();
    OSDSlider(0, 0, 0, 0, 0,0);   
    GetLanguegeCount();
    GetNextLanguage(0);
    GetPrevLanguage(0);
    CheckLanguage();
    FirstLanguage();
    LastLanguage();
    PrintfInt(0);
    COsdFxEnableOsd();
    DoReset();
    VPosGuage();
    HPosGuage();
    ClockGuage();
    GetCurrLanguagePos();
    IndexofLanuguage(1);
    InitVolume();
    MuteVolume();
    CAdjustBrightness_RTDPWM();

	CheckSum();		//fenix
	DrawHex();		//fenix
//	Check_IR();		//fenix
	MTVNoneLR(0);	//fenix
	MTVMainMenu();	//fenix
	MTVMainLR(0);	//fenix
//    COsdFxCloseWindow(0);
}
//----------------------------------------------------------------------------------------------------
void InitOSDFrame()
{
    COsdFxDisableOsd();
    SetOSDDouble(0);
    SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);
    SetRowCmds(ROW_COUNT,COL_WIDTH);
    COsdFxCodeWrite(ucCloseAllWindow);

    COsdFxDrawWindow(XSTART(0), YSTART(0), XEND(348), YEND(180), tOSD_WINDOW0_STYLE);
    COsdFxChangeWindowColor(COLOR00(4), tOSD_WINDOW0_STYLE);


    // Init Char Cmd
    OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x8c, BYTE_ATTRIB);
    OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x00, BYTE_DISPLAY);
    //SelectState();
    OSDClear(8,7,0,COL_WIDTH,0x10,BYTE_COLOR);

    OSDLine(3, 1, 25, 0x1f, BYTE_DISPLAY);
    OSDLine(7, 1, 25, 0x1f, BYTE_DISPLAY);
    OSDPosition(336,144,50,50,0x01);
    ShowMode();
}
//----------------------------------------------------------------------------------------------------
void SelectState()
{
    OSDClear(0, 3, 0 , COL_WIDTH, 0x10, BYTE_COLOR);
    OSDClear(3, 5, 0 , COL_WIDTH, 0xA0, BYTE_COLOR);
    Gotoxy(1,1,BYTE_DISPLAY);
    OutputChar(0x3b);
    OutputChar(0x3c);
}
//----------------------------------------------------------------------------------------------------
void AdjustState()
{
    OSDClear(0, 3, 0 , COL_WIDTH, 0xA0, BYTE_COLOR);
    OSDClear(3, 5, 0 , COL_WIDTH, 0x10, BYTE_COLOR);
    Gotoxy(1,1,BYTE_DISPLAY);
    OutputChar(0x3e);
    OutputChar(0x00);
}
//----------------------------------------------------------------------------------------------------
void ShowPageIndex(unsigned char ucIndex,unsigned char ucMaxPage)
{
    Gotoxy(22,1,BYTE_DISPLAY);
    pData[0] = (ucIndex / 10) + '0';

⌨️ 快捷键说明

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