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

📄 rtd2533b_osd.c

📁 Realtek LCD monitor chip RTD25xx source code
💻 C
📖 第 1 页 / 共 5 页
字号:
//----------------------------------------------------------------------------------------------------
// ID Code      : Osd.c No.0000
// Update Note  : 
//
//----------------------------------------------------------------------------------------------------

#define __RTD2533B_OSD__

#include "Common\Header\Include.h"

#if((_SCALER_TYPE == _RTD2533B) || (_SCALER_TYPE == _RTD2023L) || (_SCALER_TYPE == _RTD2023S) || (_SCALER_TYPE == _RTD2023L_VB) || (_SCALER_TYPE == _RTD2023S_VB))


//--------------------------------------------------
// Description  : 
// Input Value  : 
// Output Value : 
//--------------------------------------------------
void COsdHandler(void)
{
    COsdSystemFlowProc();

    COsdEventMsgProc();

    if (ucCurrState == _ACTIVE_STATE)
    {
        if(ucKeyMessage < _KEY_AMOUNT)
        {
            (*OperationTable[ucOsdState][ucKeyMessage])();
            CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
        }
    }
}

void COsdSystemFlowProc(void)
{
    switch(ucCurrState)
	{
        case _PWOFF_STATE:
            break;

        case _INITIAL_STATE:
            break;

        case _SEARCH_STATE:
            break;

        case _ACTIVE_STATE:
            if(GET_OSD_READYFORDISPLAY() == _TRUE)
            {
                CLR_OSD_READYFORDISPLAY();
                CAdjustBackgroundColor(0x00, 0x00, 0x00);

                if(GET_FIRST_LOADFONT() == _TRUE)
                {
                    CLR_FIRST_LOADFONT();
                    COsdDispFirstTimeLoadFont();
                }
            }

            break;

        case _NOSUPPORT_STATE:
            if(GET_OSD_READYFORDISPLAY() == _TRUE)
            {
                CLR_OSD_READYFORDISPLAY();
                CAdjustBackgroundColor(0xff, 0x00, 0x00);
                CTimerReactiveTimerEvent(SEC(1), CModeNoSupportEvent);
            }

            break;

        case _NOSIGNAL_STATE:
            if(GET_OSD_READYFORDISPLAY() == _TRUE)
            {
                CLR_OSD_READYFORDISPLAY();
                CAdjustBackgroundColor(0x00, 0x00, 0x00);

#if(_TMDS_SUPPORT == _ON)
                if(bVGACONNECT && bDVICONNECT)
#else
                if(bVGACONNECT)
#endif
                {
                    CTimerReactiveTimerEvent(SEC(1), CModeNoCableEvent);
                }
                else
                {
                    CTimerReactiveTimerEvent(SEC(1), CModeNoSignalEvent);
                    CTimerActiveTimerEvent(SEC(6), CModePowerSavingEvent);
                }
            }

            break;

        case _SLEEP_STATE:
            break;

        default:
            break;
    }
}

//--------------------------------------------------
// Description  : 
// Input Value  : 
// Output Value : 
//--------------------------------------------------
void COsdEventMsgProc(void)
{
    switch(ucOsdEventMsg)
    {
        case _SHOW_NOSIGNAL_MSG:
            COsdDispNoSignalProc();
            break;

        case _SHOW_NOCABLE_MSG:
            COsdDispNoCableProc();
            break;

        case _SHOW_NOSUPPORT_MSG:
            COsdDispNoSupportProc();
            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:
            COsdDispAutoProc();
            break;

        default:
            break;
    }

    ucOsdEventMsg = _NONE_MSG;
}

//----------------------------------------------------------------------------------------------------
// OSD "None" Operation
//----------------------------------------------------------------------------------------------------
void COsdMenuNone(void)
{
    stOsdUserData.OsdSettingFlag = 0x80;

    CScalerLoadFont(tFONT_GLOBAL2ND, 0x54, 0x0a, _NORMAL_FONT);

    switch(stOsdUserData.Language)
    {
        case _CHINESE_T:
        case _CHINESE_S:
            CScalerLoadFont(tFONT_CHI, 0x60, 0x3a, _COMPRESS_FONT);
            break;

        case _JAPAN:
            CScalerLoadFont(tFONT_JAP, 0x60, 0x40, _COMPRESS_FONT);
            break;
    }

    COsdFxApplyMapSetting(_OSD_MAP0);

    COsdFxChange1bitColor(ROW(5), COL(5), WIDTH(17), HEIGHT(22), FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));
    COsdFxChange2bitColor(ROW(5), COL(0), WIDTH(2), HEIGHT(20), COLOR00(_CP_BLACK),COLOR01(_CP_WHITE),COLOR10(_CP_RED),COLOR11(_CP_YELLOW));
    COsdFxChange2bitColor(ROW(0), COL(0), WIDTH(25), HEIGHT(5), COLOR00(_CP_BLACK),COLOR01(_CP_WHITE),COLOR10(_CP_WHITE),COLOR11(_CP_BLUE));

    COsdDispClearIcon(ROW(0), COL(0), 25, 5);

    COsdFxLoadIcon(ROW(1), COL(2), tOSD_RT_MARK_ICO1);

    COsdDispDrawInitWindow();

    COsdDispClearIcon(ROW(9), COL(0), 2, 15);

    COsdFxCloseWindow(WINNO(1));
    COsdFxCloseWindow(WINNO(2));
    COsdFxCloseWindow(WINNO(3));
    COsdFxCloseWindow(WINNO(4));
    COsdFxCloseWindow(WINNO(6));

    COsdFxDrawWindow(XSTART(0), YSTART(0), XEND(280), YEND(490), tOSD_WINDOW0_STYLE);
    COsdFxChangeWindowColor(COLOR00(_CP_BLACK), tOSD_WINDOW0_STYLE);

    COsdFxDrawWindow(XSTART(10), YSTART(15), XEND(260), YEND(65), tOSD_WINDOW5_STYLE);
    COsdFxChangeWindowColor(COLOR00(_CP_BLACK), tOSD_WINDOW5_STYLE);

    COsdFxShowNumber(ROW(26), COL(10), stModeInfo.IHWidth, (_ALIGN_RIGHT | _FORCE_SHOW_NUMBER_OFF | _SHOW_4));
    COsdFxHLine(ROW(26), COL(11), LENGTH(1), 0x0e, _WRITE_BYTE1);
    COsdFxShowNumber(ROW(26), COL(12), stModeInfo.IVHeight, (_ALIGN_LEFT | _FORCE_SHOW_NUMBER_OFF | _SHOW_3));
    COsdFxShowNumber(ROW(26), COL(17), stModeInfo.IVFreq/10, (_ALIGN_LEFT | _FORCE_SHOW_NUMBER_OFF | _SHOW_2));
    COsdFxHLine(ROW(26), COL(19), LENGTH(1), _H_, _WRITE_BYTE1);
    COsdFxHLine(ROW(26), COL(20), LENGTH(1), _z_, _WRITE_BYTE1);

    COsdDispPenPoint(24, 0, 6, 0, _MENU_COLOR_SETTING);
    COsdFxSetPosition(WIDTH(280), WIDTH(490), stOsdUserData.OsdHPos, stOsdUserData.OsdVPos, 0x01);

    COsdFxEnableOsd();
}

void COsdLeftNone(void)
{
    COsdDispAutoProc();
}

void COsdRightNone(void)
{
    COsdDispAutoColorProc();
/*
    if(GET_DVI_I_SOURCE_SWITCH())
    {
        CLR_DVI_I_VGA_SWITCH();
    }
    else
    {
        SET_DVI_I_DVI_SWITCH();
    }

    ucOsdEventMsg = _CHANGE_SOURCE_MSG;
*/
}

void COsdExitNone(void)
{

}

//----------------------------------------------------------------------------------------------------
// OSD "ColorSetting" Operation
//----------------------------------------------------------------------------------------------------
void COsdMenuColorSetting(void)
{
    BYTE temp;

    COsdDispClearIcon(ROW(5) ,COL(0) ,5 ,20);
    COsdDispClearText(ROW(5) ,COL(5) ,18 ,20);

    CScalerLoadFont(tFONT_COLOR2, 0xb8, 0x18, _COMPRESS_FONT);

    for(temp = 0; temp < 4; temp++)
    {
        COsdFxLoadIcon(ROW(5 + temp*3), COL(2), tICONPOS_TABLE[temp]);
        COsdFxLoadText(ROW(6 + temp*3), COL(7), stOsdUserData.Language, tCOLOR_TABLE[temp]);
    }

    COsdFxLoadIcon(ROW(5 + 4*3), COL(2), tOSD_BACK_ICO);
    COsdFxLoadText(ROW(6 + 4*3), COL(7), stOsdUserData.Language, tCOLOR_TABLE[temp]);

    COsdDispPenPoint(ROW(6), COL(0), ROW(6), COL(0), _MENU_CONTRAST);

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

void COsdLeftColorSetting(void)
{
    COsdDispPenPoint(ROW(6), COL(0), ROW(9), COL(0), _MENU_IMAGE_SETTING);
}

void COsdRightColorSetting(void)
{
    COsdDispPenPoint(ROW(6), COL(0), ROW(24), COL(0), _MENU_EXIT);
}

void COsdExitColorSetting(void)
{

}

//----------------------------------------------------------------------------------------------------
// OSD "ImageSetting" Operation
//----------------------------------------------------------------------------------------------------
void COsdMenuImageSetting(void)
{
    BYTE temp;

    COsdDispClearIcon(ROW(5) ,COL(0) ,5 ,20);
    COsdDispClearText(ROW(5) ,COL(5) ,18 ,20);

    CScalerLoadFont(tFONT_IMAGE1, 0xa0, 0x18, _COMPRESS_FONT);
    for(temp = 0; temp < 4; temp++)
    {
        COsdFxLoadIcon(ROW(5 + temp*3), COL(2), tICONPOS_TABLE[temp]);
        COsdFxLoadText(ROW(6 + temp*3), COL(7), stOsdUserData.Language, tIMG_TABLE[temp]);
    }

    COsdFxLoadIcon(ROW(5 + 4*3), COL(2), tOSD_BACK_ICO);
    COsdFxLoadText(ROW(6 + 4*3), COL(7), stOsdUserData.Language, tIMG_TABLE[temp]);

    COsdDispPenPoint(ROW(9), COL(0), ROW(6), COL(0), _MENU_CLOCK);

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

void COsdLeftImageSetting(void)
{
    COsdDispPenPoint(ROW(9), COL(0), ROW(12), COL(0), _MENU_POSITION);
}

void COsdRightImageSetting(void)
{
    COsdDispPenPoint(ROW(9), COL(0), ROW(6), COL(0), _MENU_COLOR_SETTING);	
}

void COsdExitImageSetting(void)
{

}

//----------------------------------------------------------------------------------------------------
// OSD "Position" Operation
//----------------------------------------------------------------------------------------------------
void COsdMenuPosition(void)
{
    BYTE temp;

    COsdDispClearIcon(ROW(5) ,COL(0) ,5 ,20);
    COsdDispClearText(ROW(5) ,COL(5) ,18 ,20);

    CScalerLoadFont(tFONT_POS, 0xa0, 0x18, _COMPRESS_FONT);
    for(temp = 0; temp < 2; temp++)
    {
        COsdFxLoadIcon(ROW(5 + temp*3), COL(2), tICONPOS_TABLE[temp]);
        COsdFxLoadText(ROW(6 + temp*3), COL(7), stOsdUserData.Language, tPOSITION_TABLE[temp]);
    }

    COsdFxLoadIcon(ROW(5 + 2*3), COL(2), tOSD_BACK_ICO);
    COsdFxLoadText(ROW(6 + 2*3), COL(7), stOsdUserData.Language, tPOSITION_TABLE[temp]);

    COsdDispPenPoint(ROW(12), COL(0), ROW(6), COL(0), _MENU_HPOSITION);

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

void COsdLeftPosition(void)
{
    COsdDispPenPoint(ROW(12), COL(0), ROW(15), COL(0), _MENU_OSD_SETTING);
}

void COsdRightPosition(void)
{
    COsdDispPenPoint(ROW(12), COL(0), ROW(9), COL(0), _MENU_IMAGE_SETTING);
}

void COsdExitPosition(void)
{

}

//----------------------------------------------------------------------------------------------------
// OSD "OsdSetting" Operation
//----------------------------------------------------------------------------------------------------
void COsdMenuOsdSetting(void)
{
    BYTE temp;

    COsdDispClearIcon(ROW(5) ,COL(0) ,5 ,20);
    COsdDispClearText(ROW(5) ,COL(5) ,18 ,20);

    CScalerLoadFont(tFONT_OSD, 0xa0, 0x24, _COMPRESS_FONT);

    for(temp = 0; temp < 3; temp++)
    {
        COsdFxLoadIcon(ROW(5 + temp*3), COL(2), tICONPOS_TABLE[temp]);
        COsdFxLoadText(ROW(6 + temp*3), COL(7), stOsdUserData.Language, tOSD_TABLE[temp]);
    }

    COsdFxLoadIcon(ROW(5 + 3*3), COL(2), tOSD_BACK_ICO);
    COsdFxLoadText(ROW(6 + 3*3), COL(7), stOsdUserData.Language, tOSD_TABLE[temp]);

    COsdDispPenPoint(ROW(15), COL(0), ROW(6), COL(0), _MENU_OSD_H_POS);

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

void COsdLeftOsdSetting(void)
{
    COsdDispPenPoint(ROW(15), COL(0), ROW(18), COL(0), _MENU_LANGUAGE);
}

void COsdRightOsdSetting(void)
{
    COsdDispPenPoint(ROW(15), COL(0), ROW(12), COL(0), _MENU_POSITION);
}

void COsdExitOsdSetting(void)
{

}

//----------------------------------------------------------------------------------------------------
// OSD "Language" Operation
//----------------------------------------------------------------------------------------------------
void COsdMenuLanguage(void)
{
    BYTE temp;

⌨️ 快捷键说明

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