📄 osd.c
字号:
//----------------------------------------------------------------------------------------------------
// ID Code : Osd.c No.0000
// Update Note :
//----------------------------------------------------------------------------------------------------
#define __OSD__
#include "Common\Header\Include.h"
//--------------------------------------------------
// Description :
// Input Value :
// Output Value :
//--------------------------------------------------
void COsdHandler(void)
{
COsdSystemFlowProc();
COsdEventMsgProc();
if (ucCurrState == _ACTIVE_STATE)
{
if(ucKeyMessage < _KEY_AMOUNT)
{
(*OperationTable[ucOsdState][ucKeyMessage])();
if(stOsdUserData.OsdTimeout > 3)
{
CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
}
else
{
CTimerCancelTimerEvent(COsdDispOsdTimerEvent);
}
}
}
}
//--------------------------------------------------
// Description :
// Input Value :
// Output Value :
//--------------------------------------------------
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;
}
void COsdMenuNone(void)
{
stOsdUserData.OsdSettingFlag = 0x80;
CScalerLoadHardwareVLCFont(tFONT_GLOBAL2ND, 0x54);
switch(stOsdUserData.Language)
{
case _CHINESE_T:
case _CHINESE_S:
CScalerLoadHardwareVLCFont(tFONT_CHI, 0x60);
break;
case _JAPAN:
CScalerLoadHardwareVLCFont(tFONT_JAP, 0x60);
break;
}
COsdFxApplyMapSetting(_OSD_MAP0);
COsdFxChange1bitColor(ROW(5), COL(5), WIDTH(17), HEIGHT(22), FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));
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();
COsdFxChange1bitColor(ROW(5), COL(5), WIDTH(17), HEIGHT(1), FGCOLOR(_CP_YELLOW), BGCOLOR(_CP_BLACK));
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(400), tOSD_WINDOW0_STYLE);
COsdFxChangeWindowColor(COLOR00(_CP_LIGHTBLUE), tOSD_WINDOW0_STYLE);
COsdFxDrawWindow(XSTART(20), YSTART(15), XEND(265), YEND(65), tOSD_WINDOW5_STYLE);
COsdFxChangeWindowColor(COLOR00(_CP_GRAY), tOSD_WINDOW5_STYLE);
COsdFxShowNumber(ROW(21), COL(10), stModeInfo.IHWidth, (_ALIGN_RIGHT | _FORCE_SHOW_NUMBER_OFF | _SHOW_4));
COsdFxHLine(ROW(21), COL(11), LENGTH(1), 0x0e, _WRITE_BYTE1);
COsdFxShowNumber(ROW(21), COL(12), stModeInfo.IVHeight, (_ALIGN_LEFT | _FORCE_SHOW_NUMBER_OFF | _SHOW_3));
COsdFxShowNumber(ROW(21), COL(17), stModeInfo.IVFreq/10, (_ALIGN_LEFT | _FORCE_SHOW_NUMBER_OFF | _SHOW_2));
COsdFxHLine(ROW(21), COL(19), LENGTH(1), _H_, _WRITE_BYTE1);
COsdFxHLine(ROW(21), COL(20), LENGTH(1), _z_, _WRITE_BYTE1);
COsdFxChange1bitColor(ROW(21), COL(5), WIDTH(20), HEIGHT(1), FGCOLOR(_CP_PINK), BGCOLOR(_CP_BLACK));
COsdDispPenPoint(ROW(17), COL(3), ROW(5), COL(3), _MENU_COLOR_SETTING);
COsdFxSetPosition(WIDTH(280), WIDTH(400), stOsdUserData.OsdHPos, stOsdUserData.OsdVPos, 0x01);
COsdFxEnableOsd();
}
void COsdLeftNone(void)
{
COsdDispAutoProc();
}
void COsdRightNone(void)
{
COsdDispAutoColorProc();
}
void COsdExitNone(void)
{
COsdFxDisableOsd();
CScalerLoadHardwareVLCFont(tFONT_GLOBAL2ND, 0x54);
COsdFxCodeWrite(tOSD_ROW_COMMAND5);
ucOsdMap = _OSD_MAP5;
COsdFxSetFrameCtrlCommand();
COsdFxSetCharCommandMap();
COsdFxChange2bitColor(ROW(0), COL(0), WIDTH(28), HEIGHT(3), COLOR00(_CP_BLACK), COLOR01(_CP_WHITE), COLOR10(_CP_WHITE), COLOR11(_CP_BLUE));
COsdFxChange1bitColor(ROW(3), COL(0), WIDTH(28), HEIGHT(22), FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));
COsdDispClearIcon(ROW(0), COL(0), WIDTH(28), HEIGHT(3));
COsdFxLoadIcon(ROW(1), COL(2), tOSD_RT_MARK_ICO1);
COsdFxCloseWindow(WINNO(0));
COsdFxCloseWindow(WINNO(1));
COsdFxCloseWindow(WINNO(2));
COsdFxCloseWindow(WINNO(3));
COsdFxCloseWindow(WINNO(4));
COsdFxCloseWindow(WINNO(6));
COsdDispMZReturnMain(_MENU_MZ_WINDOW_CONFIG);
COsdFxDrawWindow(XSTART(0), YSTART(0), XEND(360), YEND(270), tOSD_WINDOW2_STYLE);
COsdFxChangeWindowColor(COLOR00(_CP_DARKBLUE), tOSD_WINDOW2_STYLE);
COsdFxDrawWindow(XSTART(15), YSTART(10), XEND(345), YEND(60), tOSD_WINDOW5_STYLE);
COsdFxChangeWindowColor(COLOR00(_CP_LIGHTBLUE), tOSD_WINDOW5_STYLE);
ucOsdState = _MENU_MZ_WINDOW_CONFIG;
COsdFxSetPosition(WIDTH(360), WIDTH(270), stOsdUserData.OsdHPos, stOsdUserData.OsdVPos, 0x01);
CAdjustHLWindow();
COsdFxEnableOsd();
}
//----------------------------------------------------------------------------------------------------
// OSD "ColorSetting" Operation
//----------------------------------------------------------------------------------------------------
void COsdMenuColorSetting(void)
{
BYTE temp;
COsdDispClearIcon(ROW(5) ,COL(0) ,5 ,20);
COsdDispClearText(ROW(5) ,COL(5) ,18 ,15);
for(temp = 0; temp < 4; temp++)
{
COsdFxLoadText(ROW(5 + temp*2), COL(7), stOsdUserData.Language, tCOLOR_TABLE[temp]);
}
// COsdFxLoadIcon(ROW(5 + 4*3), COL(2), tOSD_BACK_ICO);
COsdFxLoadText(ROW(5 + 4*2), COL(7), stOsdUserData.Language, tCOLOR_TABLE[temp]);
COsdDispPenPoint(ROW(5), COL(3), ROW(5), COL(3), _MENU_CONTRAST);
COsdFxDrawWindow(XSTART(40), YSTART(260), XEND(250), YEND(360), tOSD_WINDOW2_STYLE);
// adjust window ->black
//COsdFxChangeWindowColor(COLOR00(_CP_SELECTBOTTOM), tOSD_WINDOW2_STYLE);
COsdFxChangeWindowColor(COLOR00(_CP_BLACK), tOSD_WINDOW2_STYLE);
COsdFxChange1bitColor(ROW(5), COL(5), WIDTH(17), HEIGHT(1), FGCOLOR(_CP_YELLOW), BGCOLOR(_CP_BLACK));
}
void COsdLeftColorSetting(void)
{
COsdDispPenPoint(ROW(5), COL(3), ROW(7), COL(3), _MENU_IMAGE_SETTING);
COsdFxChange1bitColor(ROW(5), COL(5), WIDTH(17), HEIGHT(1), FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));
COsdFxChange1bitColor(ROW(7), COL(5), WIDTH(17), HEIGHT(1), FGCOLOR(_CP_YELLOW), BGCOLOR(_CP_BLACK));
}
void COsdRightColorSetting(void)
{
COsdDispPenPoint(ROW(5), COL(3), ROW(17), COL(3), _MENU_EXIT);
COsdFxChange1bitColor(ROW(5), COL(5), WIDTH(17), HEIGHT(1), FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));
COsdFxChange1bitColor(ROW(17), COL(5), WIDTH(17), HEIGHT(1), FGCOLOR(_CP_YELLOW), BGCOLOR(_CP_BLACK));
}
void COsdExitColorSetting(void)
{
}
//----------------------------------------------------------------------------------------------------
// OSD "ImageSetting" Operation
//----------------------------------------------------------------------------------------------------
void COsdMenuImageSetting(void)
{
BYTE temp;
COsdDispClearIcon(ROW(5) ,COL(0) ,5 ,20);
COsdDispClearText(ROW(5) ,COL(5) ,18 ,15);
for(temp = 0; temp < 4; temp++)
{
// COsdFxLoadIcon(ROW(5 + temp*3), COL(2), tICONPOS_TABLE[temp]);
COsdFxLoadText(ROW(5 + temp*2), COL(7), stOsdUserData.Language, tIMG_TABLE[temp]);
}
// COsdFxLoadIcon(ROW(5 + 4*3), COL(2), tOSD_BACK_ICO);
COsdFxLoadText(ROW(5 + 4*2), COL(7), stOsdUserData.Language, tIMG_TABLE[temp]);
COsdDispPenPoint(ROW(7), COL(3), ROW(5), COL(3), _MENU_CLOCK);
COsdFxDrawWindow(XSTART(40), YSTART(260), XEND(250), YEND(360), tOSD_WINDOW2_STYLE);
// adjust window ->black
//COsdFxChangeWindowColor(COLOR00(_CP_SELECTBOTTOM), tOSD_WINDOW2_STYLE);
COsdFxChangeWindowColor(COLOR00(_CP_BLACK), tOSD_WINDOW2_STYLE);
COsdFxChange1bitColor(ROW(5), COL(5), WIDTH(17), HEIGHT(1), FGCOLOR(_CP_YELLOW), BGCOLOR(_CP_BLACK));
}
void COsdLeftImageSetting(void)
{
COsdDispPenPoint(ROW(7), COL(3), ROW(9), COL(3), _MENU_POSITION);
COsdFxChange1bitColor(ROW(7), COL(5), WIDTH(17), HEIGHT(1), FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));
COsdFxChange1bitColor(ROW(9), COL(5), WIDTH(17), HEIGHT(1), FGCOLOR(_CP_YELLOW), BGCOLOR(_CP_BLACK));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -