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

📄 osdpub501.c

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

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

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

	switch (ucKeyMessage)
	{
		case _IR_INPUTCH_KEY_MESSAGE:				
        	ucOsdEventMsg = _CHANGE_SOURCE_MSG;        	break;

		case _EXIT_KEY_MESSAGE:					
        	OsdMenuExit();					        	break;	

//#############################################################################
#if(_PANEL_LR_UD_SURPORT)
		 case _IR_RED_KEY_MESSAGE:	_SET_PANEL_LR();  break;

		 case _IR_GREEN_KEY_MESSAGE: _SET_PANEL_UD();	break;

#endif	//end of _PANEL_LR_UD_SURPORT
	}

//#############################################################################	
	if(stSystemData.InputSource == _SOURCE_VIDEO8_AV || stSystemData.InputSource == _SOURCE_VIDEO8_AV2 || stSystemData.InputSource == _SOURCE_VIDEO8_TV)
	{
		
		if(GET_MUTE_STATE() && (!CScalerGetBit(_OVERLAY_CTRL_6C,_BIT0)))	
		{
			
			ucOsdEventMsg = _DO_SHOW_MUTE;			
		}
	//	COsdFxEnableOsd();		//gg
	}

    if (ucCurrState == _ACTIVE_STATE)  // eric 0902 mark for no signal use OSD
    {
         COsdProc();

         if(ucKeyMessage != _NONE_KEY_MESSAGE)                      
             CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
    }

    if(ucOsdState == 255)
        NotUseFunc();    //mask
}
//##############################################################################
//-----------------------------------------------------------
void COsdProc()
{

     SET_KEYREPEATENABLE();		//fenix

     switch(stSystemData.InputSource)
     {
#if(_VGA_SUPPORT)
         case _SOURCE_VGA:
         case _SOURCE_DVI:
         case _SOURCE_YPBPR:
             OSDVGAProc();
             break;
#endif

#if(_VIDEO_SUPPORT)
         case _SOURCE_VIDEO8_AV:
         case _SOURCE_VIDEO8_AV2:
         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();
		printMsg("Load Font");		//fenix
     SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);     // 1
     CScalerLoadFont(FntGlobal,  0x00,99,_COMPRESS_FONT);
     CScalerLoadFont(FntIcon,    0x80,60,_COMPRESS_FONT);
}
//-----------------------------------------------------------
void COsdDispFirstInit(void)
{
     CScalerSetBit(_OVERLAY_CTRL_6C, 0xe7, 0x01 << 2);
}
//-----------------------------------------------------------
void COsdDispOsdTimerEvent(void)
{
    COsdFxDisableOsd();
    ucOsdState = _MENU_NONE;
}
//-----------------------------------------------------------
void COsdEventMsgProc(void)
{
    switch(ucOsdEventMsg)
    {
        case _SHOW_NOSIGNAL_MSG:
        case _SHOW_NOCABLE_MSG:
        case _SHOW_NOSUPPORT_MSG:
            ShowHint();
            break;

/*        case _SHOW_SYSTEM_MSG:		//fenix
            CShowCurrentSystemMessage();
            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_VIDEOCOLOR_MSG:
            CEepromSaveVideoColor();
            break;

        case _SAVE_EE_COLORPROC1_MSG:
            CEepromSaveColorTempData();
            break;

        case _ENTER_FACTORY_MODE_MSG:
            //stOsdUserData.OsdSettingFlag |= _BIT7;
            break;

        case _CHANGE_SOURCE_MSG:
            CSetBlackBackGround(1);			//fenix add heiping
			CLR_SOURCE_AUTOCHANGE();	//GG
            ChangeSource();//
            CEepromSaveSystemData();
            CModeResetMode();
            bFirstShowNote = 1;
//            CSetBlackBackGround(0);
            break;

        case _DO_AUTO_CONFIG:
             DoAutoConfig();
        case _DO_SHOW_NOTE:
            ShowNote();
            break;

		case _DO_SHOW_MUTE:
			CShowMuteState();
			CShowMuteIcon();
			break;

        default:
            break;
    }

    ucOsdEventMsg = _NONE_MSG;
}

//----------------------------------------------------------------------------------------------------
void CShowDisplaySize(void)
{
    OutputDisplaySize();
    OutputChar(' ');
    OutputRefrushRate();
}

//----------------------------------------------------------------------------------------------------
/*void CShowYPbPrMode(void)
{   
    if (stModeInfo.ModeCurr < 7)
    {
        Textout((BYTE code *)sYPbPrMode[stModeInfo.ModeCurr]);
    }
}*/
//----------------------------------------------------------------------------------------------------
void ShowMode(void)
{

     switch(stSystemData.InputSource)
     {
         case _SOURCE_VGA:
         case _SOURCE_DVI:
             //display display size
             Gotoxy(9,17,BYTE_DISPLAY);
             CShowDisplaySize();
             break;

         case _SOURCE_VIDEO8_AV:
         case _SOURCE_VIDEO8_AV2:
         case _SOURCE_VIDEO8_SV:
         case _SOURCE_VIDEO8_YUV:
         case _SOURCE_VIDEO8_TV:
             Gotoxy(15,17,BYTE_DISPLAY);
             CShowVideoMode();
             break;

/*         case _SOURCE_YPBPR:
             Gotoxy(9,17,BYTE_DISPLAY);
             CShowYPbPrMode();
             break;
*/     }
}
//---------------------------------------------------------------------------------------------------------------------
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(0x3b);
    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
    OutputChar(0x3c);
    PrintfDec(value);    //值显示在右边
    OutputChar(0x2a);    //值显示在右边
    OutputChar(0x20);  	//值显示在右边
}
//---------------------------------------------------------------------------
void InitOSD()
{
    COsdFxDisableOsd();
    SetOSDDouble(OSD_ALL_BLENDING);
    SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);     // 1
    SetRowCmds(ROW_COUNT,COL_WIDTH);                             // 2
    COsdFxCodeWrite(ucCloseAllWindow);
    // Init Char Cmd
    OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x8c, BYTE_ATTRIB);
    OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x00, BYTE_DISPLAY);
}
//---------------------------------------------------------------------------
void InitOSDFrame()
{
    InitOSD();
    
    OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x18, BYTE_COLOR);
    OSDClear(1, 2, 1 , 31, 0x13, BYTE_COLOR);
    //OSDClear(3, 1, 1 , 31, 0x19, BYTE_COLOR);
    OSDLine(3, 1 , 31, 0x29, BYTE_COLOR);
    OSDClear(4, 13,1 , 31, 0x1a, BYTE_COLOR);

    OSDPosition(33 * 12,18 * 18, 65,65,0x01);
    ShowMode();
}
//---------------------------------------------------------------------------
void InitDialog()
{
    InitOSD();
    OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x10, BYTE_COLOR);
    COsdFxDrawWindow(XSTART(0), YSTART(0), XEND(33 * 12), YEND(5 * 18), tOSD_WINDOW0_STYLE);
}
//---------------------------------------------------------------------------
void DoAutoConfig()
{
     InitDialog();
     OSDPosition(33 * 12,5 * 18, 65,65,0x01);
     CenterTextout((unsigned char code *)sAutoConfig[GET_LANGUAGE],16,2);
     COsdFxEnableOsd();
     CAutoDoAutoConfig();
     COsdFxDisableOsd();
}

//---------------------------------------------------------------------------
void CShowVideoMode(void)
{
#if	_YPBPR_SUPPORT
    if (GET_INPUTSOURCE_TYPE() == _SOURCE_YPBPR)
        Textout((_YPBPR_MODE_480I == stModeInfo.ModeCurr) ? sVideoNTSC : sVideoPAL);
    else
       Textout((CHECK60HZ()) ? sVideoNTSC : sVideoPAL);
#else
	   Textout((CHECK60HZ()) ? sVideoNTSC : sVideoPAL);
#endif
}       

/*
void CShowCurrentSystemMessage(void)
{
    BYTE w;

    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, 0x20, THE_BYTE2);
    OSDPosition(30,30,4,2,0x01);
    Gotoxy(1,1,BYTE_DISPLAY);
    switch(stSystemData.InputSource)
    {
    case _INPUT_PORT_0: // VGA port
         Textout(sVGA);
         Gotoxy(1,3,BYTE_DISPLAY);
         CShowDisplaySize();
         w = 166;
         break;

    case _INPUT_PORT_1:  // DVI port  --> not use
         Textout(sDVI);
         Gotoxy(1,3,BYTE_DISPLAY);
         CShowDisplaySize();
         w = 166;
         break;

    case _INPUT_PORT_2:  // Component port
         Textout(sYPBPR);
         Gotoxy(1,3,BYTE_DISPLAY);
         CShowYPbPrMode();
         w = 54;
         break;

    case _INPUT_PORT_3:  // AV port
         Textout(sAV);
         Gotoxy(1,3,BYTE_DISPLAY);
         CShowVideoMode();
         w = 26;
         break;

    case _INPUT_PORT_4:  // SV port
         Textout(sSV);
         Gotoxy(1,3,BYTE_DISPLAY);
         CShowVideoMode();
         w = 26;
         break
         ;
    case _INPUT_PORT_5:  // TV port
         Textout(sTV);
         Gotoxy(1,3,BYTE_DISPLAY);
         CShowVideoMode();
         w = 26;
         break;
    }

    w = 40 + w * 12;
    COsdFxDrawWindow(XSTART(0), YSTART(10), XEND(w), YEND(86), tOSD_WINDOW0_STYLE);

    COsdFxEnableOsd();

    if(GET_PANELPOWERSTATUS() == _OFF)
        CPowerPanelOn();
    if (GET_LIGHTPOWERSTATUS() == _OFF)  
        CPowerLightPowerOn(); 

    CTimerReactiveTimerEvent(SEC(10),COsdDispOsdTimerEvent);
}
*/
//---------------------------------------------------------------------------
void CCheckShowHinit(void)
{
    if (_NOSIGNAL_STATE == ucCurrState)
        SET_READYFORDISPLAY();
}

//---------------------------------------------------------------------------
void CShowInputSource(BYTE ucInputSource)
{
    switch(ucInputSource)
    {
        case _INPUT_PORT_0: // VGA port
             Textout(sVGA);
             break;
        case _INPUT_PORT_1:  // DVI port  --> not use
             Textout(sDVI);

⌨️ 快捷键说明

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