📄 osddisp.c
字号:
//----------------------------------------------------------------------------------------------------
// ID Code : OsdDisp.c No.0000
// Update Note :
//
//----------------------------------------------------------------------------------------------------
#define __OSDDISP__
#include "..\Header\Include.h"
//----------------------------------------------------------------------------------------------------
// OSD Display Functions
//----------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------
// OSD Combination Functions
//----------------------------------------------------------------------------------------------------
//--------------------------------------------------
// Description :
// Input Value :
// Output Value :
//--------------------------------------------------
void COsdDispFirstTimeLoadFont(void)
{
CScalerLoadFont(tFONT_GLOBAL, ADDRESS(0x00), LENGTH(_GLOBAL_CHAR_NUM), _COMPRESS_FONT); //load 1-bit global font.
CScalerLoadFont(tFONT_ICON_OTHER, ADDRESS(0xd0), LENGTH(_OTHER_ICON_NUM), _COMPRESS_FONT);
CScalerLoadFont(tFONT_ICON, ADDRESS(0x100), LENGTH(_MAIN_ICON_NUM), _COMPRESS_FONT); //load 2-bit icon. Address which below 0xa0 will save 1-bit chars.
if(stOsdUserData.Language == _CHINESE_S)
{
CScalerLoadFont(tFONT_SCHINESE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_SCHINESE_CHAR_NUM), _COMPRESS_FONT); //load 1-bit Simple Chinese font.
}
else
{
CScalerLoadFont(tFONT_EUROPE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_EUROPE_CHAR_NUM), _COMPRESS_FONT); //load 1-bit Europe font.
}
}
//--------------------------------------------------
// Description :
// Input Value :
// Output Value :
//--------------------------------------------------
void COsdDispNoSignalProc(void)
{
CScalerLoadFont(tFONT_GLOBAL, ADDRESS(0x00), LENGTH(_GLOBAL_CHAR_NUM), _COMPRESS_FONT); //load 1-bit global font.
CScalerLoadFont(tFONT_ICON_OTHER, ADDRESS(0xd0), LENGTH(_OTHER_ICON_NUM), _COMPRESS_FONT);
if(stOsdUserData.Language == _CHINESE_S)
{
CScalerLoadFont(tFONT_SCHINESE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_SCHINESE_CHAR_NUM), _COMPRESS_FONT); //load 1-bit Simple Chinese font.
}
else
{
CScalerLoadFont(tFONT_EUROPE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_EUROPE_CHAR_NUM), _COMPRESS_FONT); //load 1-bit Europe font.
}
COsdDispPrevWork(_OSD_MAP2);
COsdFxCodeWrite(tOSD_SIGNAL_ATB);
COsdFxLoadText(ROW(3), COL(0), stOsdUserData.Language, tOSD_NOSIGNAL_STR);
COsdFxSetPosition(WIDTH(_OSD_HINT_DH_END), HEIGHT(_OSD_HINT_DV_END), (_OSD_HPOSITION_RANGE>>1), (_OSD_VPOSITION_RANGE>>1), 0x01);
COsdFxEnableOsd();
CPowerPanelOn();
}
#if (_SHOW_SOURCEHINT)
//x.hu, for show source hint
//--------------------------------------------------
// Description :
// Input Value :
// Output Value :
//--------------------------------------------------
void COsdDispSourceProc(void)
{
//CPowerLightPowerOff();
//x.hu, if current state is SLEEP, we should invoke reset function to search signal,
// then source hint is shown under free run mode.
if(ucCurrState == _SLEEP_STATE) {
CModeResetMode();
return;
}
CScalerLoadFont(tFONT_GLOBAL, ADDRESS(0x00), LENGTH(_GLOBAL_CHAR_NUM), _COMPRESS_FONT); //load 1-bit global font.
CScalerLoadFont(tFONT_ICON_OTHER, ADDRESS(0xd0), LENGTH(_OTHER_ICON_NUM), _COMPRESS_FONT);
if(stOsdUserData.Language == _CHINESE_S)
CScalerLoadFont(tFONT_SCHINESE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_SCHINESE_CHAR_NUM), _COMPRESS_FONT); //load 1-bit Simple Chinese font.
else
CScalerLoadFont(tFONT_EUROPE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_EUROPE_CHAR_NUM), _COMPRESS_FONT); //load 1-bit Europe font.
#if ((_CUSTOM_TYPE==_CUSTOM_HAOZHEN) || (_CUSTOM_TYPE == _CUSTOM_NONE && _SOURCE_HINT_TEXT==_TRUE))
COsdDispPrevWork(_OSD_MAP5);
//border color
COsdFxPWMCtlCommand(ADDRESS(3), _WRITE_BYTE1, (_OSD_BORDER_COLOR<<4));
COsdFxChange1bitColor(ROW(0), COL(0), WIDTH(_OSD_SHORTMENU_COL), HEIGHT(_OSD_SHORTMENU_ROW), _MUCP_TEXT, _MUCP_TEXTBG);
COsdFxLoadText(ROW(0), COL(0), 0, &tOSD_SOURCE_STR[GET_INPUTPORT_TYPE(stSystemData.InputSource)-1][0]);
/*
#if (_PANEL_TYPE == _PANEL_TD141TGCB1)
// x.hu, show hint for 14.1" LVDS panel
COsdFxSetPosition(WIDTH(_OSD_SRC_DH_END), HEIGHT(_OSD_HINT_DV_END), (240), (210), 0x01);
#elif (_PANEL_TYPE == _PANEL_LQ104V1DG51)
// x.hu, show hint for sharp 10.4" TTL panel
COsdFxSetPosition(WIDTH(_OSD_SRC_DH_END), HEIGHT(_OSD_HINT_DV_END), (200), (180), 0x01);
#elif (_PANEL_TYPE == _PANEL_LQ092Y3DG01)
// x.hu, show hint for 9.2" panel
//COsdFxSetPosition(WIDTH(30*4), HEIGHT(_OSD_HINT_DV_END), (200), (180), 0x01);
COsdFxSetPosition(WIDTH(_OSD_SRC_DH_END), HEIGHT(_OSD_SRC_DV_END), (200), (200-20), 0x01);
#else
COsdFxSetPosition(WIDTH(_OSD_SRC_DH_END), HEIGHT(_OSD_HINT_DV_END), (200), (200), 0x01);
#endif
*/
#if (_PANEL_TYPE == _PANEL_LQ092Y3DG01 || _PANEL_TYPE ==_PANEL_JIALUHUA ||_PANEL_TYPE == _PANEL_LQ104V1DG51)
// x.hu, show hint for 9.2" panel
COsdFxSetPosition(WIDTH(_OSD_SRC_DH_END), HEIGHT(_OSD_SRC_DV_END), (200), (200-20), 0x01);
#else
COsdFxSetPosition(WIDTH(_OSD_SRC_DH_END), HEIGHT(_OSD_HINT_DV_END), (200), (200), 0x01);
#endif
#elif (_CUSTOM_TYPE == _CUSTOM_NONE && _SOURCE_HINT_TEXT==_FALSE)
COsdDispPrevWork(_OSD_MAP6);
COsdFxCodeWrite(tOSD_SOURCE_HINT_ATB);
COsdFxLoadText(ROW(1), COL(4), 0, &tOSD_SOURCE_STR[GET_INPUTPORT_TYPE(stSystemData.InputSource)-1][0]);
COsdFxPWMCtlCommand(ADDRESS(3), _WRITE_BYTE1, 0x04); //set blending type
COsdFxAlphaBlendingLevel(0x04);
#if (_PANEL_TYPE == _PANEL_LQ092Y3DG01)
COsdFxSetPosition(WIDTH(_OSD_SRC_DH_END), HEIGHT(_OSD_SRC_DV_END), (170), (200), 0x01);
#else
COsdFxSetPosition(WIDTH(_OSD_SRC_DH_END), HEIGHT(_OSD_SRC_DV_END), (180), (200), 0x01);
#endif
#endif
COsdFxEnableOsd();
//x.hu, add for showing before no signal is shown
CPowerPanelOn(); //x.hu, cause white screen a little time while H/S power up
//CPowerLightPowerOn();
}
#endif
//--------------------------------------------------
// Description :
// Input Value :
// Output Value :
//--------------------------------------------------
void COsdDispNoCableProc(void)
{
CScalerLoadFont(tFONT_GLOBAL, ADDRESS(0x00), LENGTH(_GLOBAL_CHAR_NUM), _COMPRESS_FONT); //load 1-bit global font.
CScalerLoadFont(tFONT_ICON_OTHER, ADDRESS(0xd0), LENGTH(_OTHER_ICON_NUM), _COMPRESS_FONT);
if(stOsdUserData.Language == _CHINESE_S)
CScalerLoadFont(tFONT_SCHINESE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_SCHINESE_CHAR_NUM), _COMPRESS_FONT); //load 1-bit Simple Chinese font.
else
CScalerLoadFont(tFONT_EUROPE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_EUROPE_CHAR_NUM), _COMPRESS_FONT); //load 1-bit Europe font.
COsdDispPrevWork(_OSD_MAP2);
COsdFxCodeWrite(tOSD_SIGNAL_ATB);
COsdFxLoadText(ROW(3), COL(0), stOsdUserData.Language, tOSD_NOSIGNAL_STR);
COsdFxSetPosition(WIDTH(_OSD_HINT_DH_END), HEIGHT(_OSD_HINT_DV_END), (_OSD_HPOSITION_RANGE>>1), (_OSD_VPOSITION_RANGE>>1), 0x01);
COsdFxEnableOsd();
CPowerPanelOn();
}
//--------------------------------------------------
// Description :
// Input Value :
// Output Value :
//--------------------------------------------------
void COsdDispNoSupportProc(void)
{
CScalerLoadFont(tFONT_GLOBAL, ADDRESS(0x00), LENGTH(_GLOBAL_CHAR_NUM), _COMPRESS_FONT); //load 1-bit global font.
CScalerLoadFont(tFONT_ICON_OTHER, ADDRESS(0xd0), LENGTH(_OTHER_ICON_NUM), _COMPRESS_FONT);
if(stOsdUserData.Language == _CHINESE_S)
CScalerLoadFont(tFONT_SCHINESE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_SCHINESE_CHAR_NUM), _COMPRESS_FONT); //load 1-bit Simple Chinese font.
else
CScalerLoadFont(tFONT_EUROPE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_EUROPE_CHAR_NUM), _COMPRESS_FONT); //load 1-bit Europe font.
COsdDispPrevWork(_OSD_MAP2);
COsdFxCodeWrite(tOSD_SIGNAL_ATB);
COsdFxLoadText(ROW(3), COL(0), stOsdUserData.Language, tOSD_NOSUPPORT_STR);
COsdFxSetPosition(WIDTH(_OSD_HINT_DH_END), HEIGHT(_OSD_HINT_DV_END), (_OSD_HPOSITION_RANGE>>1), (_OSD_VPOSITION_RANGE>>1), 0x01);
COsdFxEnableOsd();
CPowerPanelOn();
}
//--------------------------------------------------
// Description :
// Input Value :
// Output Value :
//--------------------------------------------------
void COsdDispAutoProc(void)
{
if(GET_INPUTSOURCE_TYPE() == _SOURCE_VGA)
{
COsdDispPrevWork(_OSD_MAP2);
COsdFxCodeWrite(tOSD_HINT_ATB);
COsdFxLoadText(ROW(3), COL(0), stOsdUserData.Language, tOSD_AUTOCONFIG_STR);
COsdFxSetPosition(WIDTH(_OSD_AUTO_DH_END), HEIGHT(_OSD_AUTO_DV_END), (_OSD_HPOSITION_RANGE>>1), (_OSD_VPOSITION_RANGE>>1), 0x01);
COsdFxEnableOsd();
CAutoDoAutoConfig();
COsdFxDisableOsd();
}
}
void COsdDispPrevWork(BYTE ucOsdmaptype)
{
COsdFxDisableOsd();
COsdFxApplyMapSetting(ucOsdmaptype);
COsdFxCloseWindow(WINNO(0));
COsdFxCloseWindow(WINNO(1));
COsdFxCloseWindow(WINNO(2));
COsdFxCloseWindow(WINNO(3));
COsdFxCloseWindow(WINNO(4));
COsdFxCloseWindow(WINNO(5));
COsdFxCloseWindow(WINNO(6));
}
//--------------------------------------------------
// Description :
// Input Value :
// Output Value :
//--------------------------------------------------
void COsdDispAutoColorProc(void)
{
if(GET_INPUTSOURCE_TYPE() == _SOURCE_VGA)
{
COsdDispPrevWork(_OSD_MAP2);
COsdFxCodeWrite(tOSD_HINT_ATB);
COsdFxLoadText(ROW(3), COL(0), stOsdUserData.Language, tOSD_AUTOCOLOR_STR);
COsdFxSetPosition(WIDTH(_OSD_AUTO_DH_END), HEIGHT(_OSD_AUTO_DV_END), (_OSD_HPOSITION_RANGE>>1), (_OSD_VPOSITION_RANGE>>1), 0x01);
COsdFxEnableOsd();
CAutoDoWhiteBalance();
COsdFxDisableOsd();
}
}
//--------------------------------------------------
// Description : Show User Timer Menu
// Input Value : None
// Output Value : None
//--------------------------------------------------
void COsdDispUserTimerRemind(BYTE ucHour, BYTE ucMinute)
{
COsdDispPrevWork(_OSD_MAP3);
COsdFxCodeWrite(tOSD_USERTIMER_ATB);
COsdFxShowNumber2(ROW(3), COL(3), ucHour, _SHOW_2, 1);
COsdFxHLine(ROW(3), COL(5), LENGTH(1), _COLON_, _WRITE_BYTE1);
COsdFxShowNumber2(ROW(3), COL(6), ucMinute, _SHOW_2, 1);
COsdFxSetPosition(WIDTH(_OSD_HINT_DH_END), HEIGHT(_OSD_HINT_DV_END), (_OSD_HPOSITION_RANGE>>1), (_OSD_VPOSITION_RANGE>>1), 0x01);
COsdFxPWMCtlCommand(ADDRESS(3), _WRITE_BYTE2, 0x02); //global blinking enable
COsdFxHLine(ROW(3), COL(0), LENGTH(28), 0xCC, _WRITE_BYTE0); //enable 1-bit char blinking
COsdFxEnableOsd();
}
void COsdDispFullSlider(BYTE ucRow, BYTE ucCol, BYTE ucLength, WORD usValue, WORD usRange, WORD usMin, BYTE ucColor, BYTE ucNumColor, bit ucValueType)
{
COsdFxHLine(ucRow, ucCol, ucLength, ((ucColor & 0x0f) << 4), _WRITE_BYTE2);
COsdFxHLine(ucRow, ucCol, LENGTH(1), _SUBT_, _WRITE_BYTE1);
COsdFxHLine(ucRow, ucCol + ucLength - 1, LENGTH(1), _PLUS_, _WRITE_BYTE1);
COsdFxSlider(ucRow, ucCol + 1, ucLength - 2, usValue, usRange + usMin, usMin);
COsdFxHLine(ucRow, ucCol + ucLength+1, LENGTH(3), ((ucNumColor & 0x0f) << 4), _WRITE_BYTE2);
if(ucValueType == _SHOW_PERCENT)
{
usValue = (WORD)(usValue-usMin) * 100 / usRange; //show 100%
}
COsdFxShowNumber2(ucRow, ucCol + ucLength+1, usValue, _SHOW_3, _OFF);
}
///////////////////////////////////////////////////////////////////////////////////////////
void COsdDispFullSlider3(BYTE ucRow, BYTE ucCol, BYTE ucLength, WORD usValue, WORD usRange, WORD usMin, BYTE ucColor, BYTE ucNumColor, bit ucValueType)
{
COsdFxHLine(ucRow, ucCol, ucLength, ((ucColor & 0x0f) << 4), _WRITE_BYTE2);
COsdFxHLine(ucRow, ucCol, LENGTH(1), _SUBT_, _WRITE_BYTE1);
COsdFxHLine(ucRow, ucCol + ucLength - 1, LENGTH(1), _PLUS_, _WRITE_BYTE1);
COsdFxSlider(ucRow, ucCol + 1, ucLength - 2, usValue, usRange + usMin, usMin);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -