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

📄 osdmenufunc003.c

📁 RTD2662板卡源代码
💻 C
📖 第 1 页 / 共 5 页
字号:


#define __OSDDRAW003__


#include "Core\Header\Include.h"

#if(_OSD_TYPE == _OSD003)
//-------------------------------------------------------------------

bit CEnable(void)
{
    return 1;
}
//----------------------------------------------------------------------------------------------------
bit CDisable(void) 
{
    return 0;
}

//----------------------------------------------------------------------------------------------------
bit CVideoEnable(void)
{
    if(bSourceVideo() || _SOURCE_YPBPR == _GET_INPUT_SOURCE())
        return 1;
    else return 0;
}
//------------------------------------------------------------------------
bit CVideoNTSCEnable(void)
{
    if((bSourceVideo() && ucVideoType < ZPAL_N) || (_SOURCE_YPBPR == _GET_INPUT_SOURCE()))
        return 1;
    else return 0;
}
//------------------------------------------------------------------------
bit CVgaEnable(void)
{
    if(stSystemData.InputSource == _SOURCE_VGA)
        return 1;
    else return 0;
}
//---------------------------------------------------------------------------
bit CHDMIEnable(void)
{
    if(stSystemData.InputSource == _SOURCE_HDMI)
        return 1;
    else return 0;
}
//---------------------------------------------------------------------------
bit CDviEnable(void)
{
    if(stSystemData.InputSource == _SOURCE_DVI)
        return 1;
    else return 0;
}
//---------------------------------------------------------------------------
bit CTVEnable(void)
{
    if(stSystemData.InputSource == _SOURCE_VIDEO_TV)
        return 1;
    else return 0;
}
//---------------------------------------------------------------------------
bit MDisplayRatioEnable(void)
{
    if(CCalcRatio() >= 75)      
        return _FAIL;
    
    return _TRUE;
}
//---------------------------------------------------------------------------
bit MSoundEnable(void)
{
#if (_SOUND_PROCESSOR)
    return _TRUE;
#else
    return _FALSE;
#endif
}
//---------------------------------------------------------------------------
bit MNJW1144Enable(void)
{
#if(AUDIO_TYPE == _AUDIO_NJW1144)
    return 1;
#else
    return 0;
#endif
}
//---------------------------------------------------------------------------


bit CMIVgaEnable(void)
{
    return 0;//_VGA_SUPPORT;
}
//---------------------------------------------------------------------------
bit CMIDVIEnable(void)
{
    return 0;//_TMDS_SUPPORT;
}
//---------------------------------------------------------------------------
bit CMIHDMIEnable(void)
{
    return 0;//_HDMI_SUPPORT;
}
//---------------------------------------------------------------------------
bit CMIYPBPREnable(void)
{
    return 0;//_YPBPR_SUPPORT;
}
//---------------------------------------------------------------------------
bit CMISVEnable(void)
{
    return _VIDEO_SV_SUPPORT;
}
//---------------------------------------------------------------------------
bit CMIAVEnable(void)
{
    return _VIDEO_AV_SUPPORT;
}
//---------------------------------------------------------------------------
bit CMITVEnable(void)
{
    return 0;//_VIDEO_TV_SUPPORT;
}
//---------------------------------------------------------------------------
bit CEngEnable(void)
{
    return ENGLISH_EN;
}
//---------------------------------------------------------------------------
bit CCHI_S_Enable(void)
{
    return LNG_CHI_S_EN;
}
//---------------------------------------------------------------------------
bit CFRA_Enable(void)
{
    return LNG_FRA_EN;
}
//---------------------------------------------------------------------------
bit CITA_Enable(void)
{
    return LNG_ITA_EN;
}
//---------------------------------------------------------------------------
bit CDEU_Enable(void)
{
    return LNG_DEU_EN;
}
//---------------------------------------------------------------------------
bit CESP_Enable(void)
{
    return LNG_ESP_EN;
}
//---------------------------------------------------------------------------
bit CCHI_T_Enable(void)
{
    return LNG_CHI_T_EN;
}
//---------------------------------------------------------------------------
bit CJAP_Enable(void)
{
    return LNG_JAP_EN;
}
//---------------------------------------------------------------------------
bit CKOR_Enable(void)
{
    return LNG_KOR_EN;
}
//---------------------------------------------------------------------------
bit CRUS_Enable(void)
{
    return LNG_RUS_EN;
}
//---------------------------------------------------------------------------
bit CEnNtsc_M(void)
{
#if(_VIDEO_TV_SUPPORT)
        return _TV_NTSC_M_SUPPORT;
#else
        return 0;
#endif

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

bit CEnNtsc_BG(void)
{
#if(_VIDEO_TV_SUPPORT)
        return _TV_NTSC_4_BG_SUPPORT;
#else
        return 0;
#endif

}
//---------------------------------------------------------------------------
bit CEnNtsc_DK(void)
{
#if(_VIDEO_TV_SUPPORT)
        return _TV_NTSC_4_DK_SUPPORT;
#else
        return 0;
#endif

}
//---------------------------------------------------------------------------
bit CEnNtsc_I(void)
{
#if(_VIDEO_TV_SUPPORT)
        return _TV_NTSC_4_I_SUPPORT;
#else
        return 0;
#endif

}
//---------------------------------------------------------------------------
bit CEnPal_M(void)
{
#if(_VIDEO_TV_SUPPORT)
        return _TV_PAL_M_SUPPORT;
#else
        return 0;
#endif

}
//---------------------------------------------------------------------------
bit CEnPal_BG(void)
{
#if(_VIDEO_TV_SUPPORT)
        return _TV_PAL_BG_SUPPORT;
#else
        return 0;
#endif

}
//---------------------------------------------------------------------------
bit CEnPal_DK(void)
{
#if(_VIDEO_TV_SUPPORT)
        return _TV_PAL_DK_SUPPORT;
#else
        return 0;
#endif

}
//---------------------------------------------------------------------------
bit CEnPal_I(void)
{
#if(_VIDEO_TV_SUPPORT)
        return _TV_PAL_I_SUPPORT;
#else
        return 0;
#endif

}
//---------------------------------------------------------------------------
bit CEnPal_N(void)
{
#if(_VIDEO_TV_SUPPORT)
        return _TV_PAL_N_SUPPORT;
#else
        return 0;
#endif

}
//---------------------------------------------------------------------------
bit CEnSecam_BG(void)
{
#if(_VIDEO_TV_SUPPORT)
        return _TV_SECAM_BG_SUPPORT;
#else
        return 0;
#endif

}
//---------------------------------------------------------------------------
bit CEnSecam_DK(void)
{
#if(_VIDEO_TV_SUPPORT)
        return _TV_SECAM_DK_SUPPORT;
#else
        return 0;
#endif

}
//---------------------------------------------------------------------------
bit CEnSecam_L(void)
{
#if(_VIDEO_TV_SUPPORT)
        return _TV_SECAM_L_SUPPORT;
#else
        return 0;
#endif

}
//---------------------------------------------------------------------------
bit CEnSecam_LL(void)
{
#if(_VIDEO_TV_SUPPORT)
        return _TV_SECAM_LL_SUPPORT;
#else
        return 0;
#endif

}
//---------------------------------------------------------------------------
bit COSDDoubleEN(void)
{
    if(Panel[ucPanelSelect]->DHWidth < 1280 || Panel[ucPanelSelect]->DVHeight < 1024)
        return _FALSE;
    
    return _TRUE;
}
//---------------------------------------------------------------------------




//---------------------------------------------------------------------------
BYTE StateColor(BYTE State)
{
    switch(State)
    {
    case _ST_NORMAL:    return _MENU_NORMAL_COLOR;
    case _ST_SELECT:    return _MENU_SECECT_COLOR;
    case _ST_ADJUST:    return _MENU_ADJUST_COLOR; 
    case _ST_DISABLE:   
    default:            return _MENU_DISABLE_COLOR;     
    }
}
//---------------------------------------------------------------------------
void CreatePopupMenu(BYTE ucRow,BYTE ucHeight)
{
    WORD usWindowLeft;
    WORD usWindowTop;
    WORD usWindowRight;
    WORD usWindowBottom;
    
    BYTE i;
    BYTE x;
    BYTE iCurrRow;
    for(i=0;i<ucHeight;i++)
    {
        iCurrRow = ucRow + i;
        if(iCurrRow % 2)
            x = 20;
        else 
            x = 27;
        
        OSDLine(iCurrRow, COL(x), WIDTH(19), 0x00, BYTE_DISPLAY);
        OSDLine(iCurrRow, COL(x), WIDTH(19), 0x8C, BYTE_ATTRIB);
    }   
    
    usWindowLeft = 21 * 12;
    usWindowRight = (21 + 18) * 12;
    usWindowTop = (WORD)ucRow * 18;
    usWindowBottom = (WORD)(ucRow + ucHeight) * 18;
    
    COsdFxDrawWindow(usWindowLeft, usWindowTop, usWindowRight, usWindowBottom, tPopupMenuWindowStyle);
    
}
//---------------------------------------------------------------------------
void ClearPopupMenu(BYTE ucRow,BYTE ucHeight)
{
    BYTE i;
    BYTE x;
    BYTE iCurrRow; 
    
    for(i=0;i<ucHeight;i++)
    {
        iCurrRow = ucRow + i;
        if(iCurrRow % 2)
        {
            x = 20;
            SETCOLOR_SUBMENU_SELLINE(iCurrRow);
        }
        else 
        {
            x = 27;
        }
        
        OSDLine(iCurrRow, COL(x), WIDTH(19), 0x00, BYTE_DISPLAY);
        OSDLine(iCurrRow, COL(x), WIDTH(19), 0x8C, BYTE_ATTRIB);
    }
    
    COsdFxCloseWindow(4);
}

//---------------------------------------------------------------------------
void DrawAPopupMenuItem(BYTE *str,BYTE ItemIndex,BYTE ucRowStart,BYTE ucColStart,BYTE State)
{
    BYTE c;
    //BYTE x;
    BYTE ucColor = StateColor(State);
    
    ItemIndex = ItemIndex + ucRowStart + 1;
    
    if(State == _ST_SELECT)
        c = 0x57;   // Select Icon
    else
        c = 0x01;   // Clear Select Icon
    
    if(ItemIndex % 2)
        ucColStart += 21;
    else
        ucColStart += 27;
    
    OSDLine(ROW(ItemIndex), COL(ucColStart), LENGTH(19), ucColor, BYTE_COLOR);
    
    Gotoxy(COL(ucColStart + 1),ROW(ItemIndex),BYTE_DISPLAY);
    OutputChar(c);
    
    CTextOutEx(str, COL(ucColStart + 3), ROW(ItemIndex));
    
}
//---------------------------------------------------------------------------
void InitMainOsd(void)
{
    BYTE i;
    
    InitOsdFrame();
    SetOSDDouble((GET_OSD_SIZE() ? 0x03 : 0x00)  | OSD_WINDOWCHAR_BLENDING);   
    
    // Draw Top Line
    OSDLine(ROW(3), COL(1), LENGTH(37), 0xA6, THE_BYTE0);
    OSDLine(ROW(3), COL(1), LENGTH(37), 0xA4, THE_BYTE1);
    OSDLine(ROW(3), COL(1), LENGTH(37), 0x11, THE_BYTE2);
    
    // Draw Bottom Line
    OSDLine(ROW(16), COL(1), LENGTH(37), 0xA6, THE_BYTE0);
    OSDLine(ROW(16), COL(1), LENGTH(37), 0xA4, THE_BYTE1);
    OSDLine(ROW(16), COL(1), LENGTH(37), 0x11, THE_BYTE2);
    
    // Draw Left Line
    for(i=0;i<12;i++)
    {
        Gotoxy(5 , 4 + i , ALL_BYTE);
        CScalerSendAddr(_OSD_DATA_PORT_92 , _NON_AUTOINC);
        *(&MCU_SCA_INF_DATA_FFF5) = 0xA6;
        *(&MCU_SCA_INF_DATA_FFF5) = 0xA5;
        *(&MCU_SCA_INF_DATA_FFF5) = 0x11;
    }
    
    // set submenu selet line color
    for(i=0;i<6;i++)
    {
        SETCOLOR_SUBMENU_SELLINE(SHOWINDEX_TO_LINE(i) + 1);
    }
    
    // Draw Window
    COsdFxDrawWindow(0,0,                                                   //WORD usXStart,WORD usYStart,  
        _MAINMENU_WIDTH + 20,_MAINMENU_HEIGHT,                      //WORD usXEnd,WORD usYEnd,  
        tMainWindowStyle);                                      //BYTE *pStyle)
    
    // set osd position
    if (GET_OSD_SIZE())
    {
        SetOSDDouble(0x03 | OSD_WINDOWCHAR_BLENDING);
        OSDPosition(_OSD_DOUBLE_WIDTH(_MAINMENU_WIDTH), _OSD_DOUBLE_HEIGHT(_MAINMENU_HEIGHT), stOsdUserData.OsdHPos, stOsdUserData.OsdVPos, 0x03);
    }
    else
    {
        SetOSDDouble(OSD_WINDOWCHAR_BLENDING);
        OSDPosition(_MAINMENU_WIDTH, _MAINMENU_HEIGHT, stOsdUserData.OsdHPos, stOsdUserData.OsdVPos, 0x03);
    }
    COsdFxEnableOsd();
    
}
//---------------------------------------------------------------------------

//ucState : _ST_NORMAL,_ST_SELECT,_ST_DISABLE 
void DrawMainMenuItem(BYTE ucItem,BYTE ucState)
{
    BYTE y;
    BYTE *tIcon;
    
    y = GetShowIndex(ucItem,_MI_COLOR,_MI_SOUND);
    
    if(y == _NOT_SHOW)
        return;
    
    y = SHOWINDEX_TO_LINE(y);
    
    if(!g_tMenuItem[ucItem].Enable())
    {
        ucState = _ST_DISABLE;  
    }
    
    switch(ucState)
    {

⌨️ 快捷键说明

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