📄 osddisp.c
字号:
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, usValue, _SHOW_3, _OFF);
}
////////////////////////////////////////////////////////////////////////////////////////
void COsdDispIconSelect(void)
{
//BYTE temp;
COsdFxChange2bitColor(ROW(2), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(2), COLOR00(_CP_BLACK), COLOR01(_CP_GRAY), COLOR10(_CP_GRAY), COLOR11(_CP_GRAY));
COsdFxChange2bitColor(ROW(2), COL(ucOsdState*4-1), WIDTH(3), HEIGHT(2), COLOR00(_CP_BLACK), COLOR01(_CP_WHITE), COLOR10(_CP_RED), COLOR11(_CP_GREEN));
//x.hu, osd no signal show
switch(GET_INPUTPORT_TYPE(stSystemData.InputSource))
{
case _DSUB_A0_PORT:
COsdFxCodeWrite((BYTE code *)tVGA_MENU_TABLE[ucOsdState-1][stOsdUserData.Language]);
COsdFxCodeWrite((BYTE code *)tVGA_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
if(ucOsdState==4)
COsdFxChange1bitColor(ROW(5), COL(1), WIDTH(10), HEIGHT(1), FGCOLOR(_CP_GRAY), BGCOLOR(_CP_BLACK));
else
COsdFxChange1bitColor(ROW(5), COL(1), WIDTH(10), HEIGHT(1), FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));
break;
#if (_VIDEO_SUPPORT == _ON)
case _VIDEO_AV_PORT:
case _VIDEO_AV2_PORT:
COsdFxCodeWrite((BYTE code *)tAV_MENU_TABLE[ucOsdState-1][stOsdUserData.Language]);
COsdFxCodeWrite((BYTE code *)tAV_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
break;
#endif
default:
break;
}
}
void COsdDispItemSelect(void)
{
COsdDispClearText(ROW(5), COL(1), WIDTH(1), HEIGHT(6)); //clear arrow point.
COsdFxHLine(ROW(ucOsd_Item_Index0+4), COL(1), LENGTH(1), _ARROW_, _WRITE_BYTE1);
}
//////////////////////////////////////////////////////////////////////
void COsdDispItemSelect2(void)
{
COsdDispClearText(ROW(5), COL(1), WIDTH(1), HEIGHT(6)); //clear arrow point.
COsdFxHLine(ROW(ucOsd_Item_Index0+4), COL(1), LENGTH(1), _ARROW_, _WRITE_BYTE1);
}
///////////////////////////////////////////////////////////
void COsdClearItemSelect(void)
{
COsdDispClearText(ROW(5), COL(1), WIDTH(1), HEIGHT(6)); //clear arrow point.
}
void COsdShowHFreq(BYTE ucRow, BYTE ucCol, BYTE ucPar)
{
COsdFxShowNumber(ROW(ucRow), COL(ucCol), stModeInfo.IHFreq/10, ucPar);
}
void COsdShowVFreq(BYTE ucRow, BYTE ucCol, BYTE ucPar)
{
COsdFxShowNumber(ROW(ucRow), COL(ucCol), stModeInfo.IVFreq/10, ucPar);
}
void COsdDispCurrVGAMode(BYTE ucFG_Color, BYTE ucBG_Color)
{
COsdFxChange1bitColor(ROW(13), COL(0), WIDTH(25), HEIGHT(1), FGCOLOR(ucFG_Color), BGCOLOR(ucBG_Color));
//x.hu, update for no signal osd show
if (stModeInfo.ModeCurr == _MODE_NOSIGNAL || \
stModeInfo.ModeCurr == _MODE_NOSUPPORT )
{
if (stModeInfo.ModeCurr == _MODE_NOSIGNAL)
COsdFxLoadText(ROW(13), COL(3), stOsdUserData.Language, tOSD_NOSIGNAL_STR);
else if (ucModeFound == _MODE_NOSUPPORT)
COsdFxLoadText(ROW(13), COL(3), stOsdUserData.Language, tOSD_NOSUPPORT_STR);
}
else {
// original code
//show resoluction
COsdFxShowNumber(ROW(13), COL(7), stModeInfo.IHWidth, (_ALIGN_RIGHT| _FORCE_SHOW_NUMBER_OFF | _SHOW_4));
COsdFxHLine(ROW(13), COL(8), LENGTH(1), _MULT_, _WRITE_BYTE1);
COsdFxShowNumber(ROW(13), COL(9), stModeInfo.IVHeight, (_ALIGN_LEFT| _FORCE_SHOW_NUMBER_OFF | _SHOW_3));
//show hfreq
COsdShowHFreq(ROW(13), COL(15), (_ALIGN_RIGHT|_FORCE_SHOW_NUMBER_OFF|_SHOW_2));
COsdFxHLine(ROW(13), COL(16), LENGTH(1), _K_, _WRITE_BYTE1);
COsdFxHLine(ROW(13), COL(17), LENGTH(1), _H_, _WRITE_BYTE1);
COsdFxHLine(ROW(13), COL(18), LENGTH(1), _z_, _WRITE_BYTE1);
//show vfreq
COsdShowVFreq(ROW(13), COL(22), (_ALIGN_RIGHT|_FORCE_SHOW_NUMBER_OFF|_SHOW_2));
COsdFxHLine(ROW(13), COL(23), LENGTH(1), _H_, _WRITE_BYTE1);
COsdFxHLine(ROW(13), COL(24), LENGTH(1), _z_, _WRITE_BYTE1);
}
}
#if (_VIDEO_SUPPORT == _ON)
//------------------------------------------
// Description : Show AV mode information
// InputValue : None
// OutputValue : None
//------------------------------------------
void COsdDispCurrAVMode(BYTE ucFG_Color, BYTE ucBG_Color)
{
COsdFxChange1bitColor(ROW(13), COL(0), WIDTH(25), HEIGHT(1), FGCOLOR(ucFG_Color), BGCOLOR(ucBG_Color));
//COsdFxLoadText(ROW(13), COL(6), ucModeFound, tOSD_VIDEOMODE_STR);
//COsdFxLoadText(ROW(13), COL(18),CHECKVIDEOTYPE(), tOSD_VIDEOTYPE_STR);
//x.hu, update for no signal osd show
if (ucModeFound>7) {
if (ucModeFound == _MODE_NOSIGNAL)
COsdFxLoadText(ROW(13), COL(0), stOsdUserData.Language, tOSD_NOSIGNAL_STR);
else if (ucModeFound == _MODE_NOSUPPORT)
COsdFxLoadText(ROW(13), COL(0), stOsdUserData.Language, tOSD_NOSUPPORT_STR);
else
COsdFxLoadText(ROW(13), COL(6), 0, tOSD_VIDEOMODE_STR);
}
else{
COsdFxLoadText(ROW(13), COL(6), ucModeFound, tOSD_VIDEOMODE_STR);
COsdFxLoadText(ROW(13), COL(18),CHECKVIDEOTYPE(), tOSD_VIDEOTYPE_STR);
}
}
#endif
void COsdDispVGAMenu(void)
{
BYTE temp;
//load 2-bit icon
//CScalerLoadFont(tFONT_ICON, 0xa0, 96, _COMPRESS_FONT); //load 2-bit icon. Address which below 0xa0 will save 1-bit chars.
//show 2-bit icon
COsdFxChange2bitColor(ROW(2), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(2), COLOR00(_CP_BLACK), COLOR01(_CP_GRAY), COLOR10(_CP_GRAY), COLOR11(_CP_GRAY));
COsdDispClearIcon(ROW(2), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(2));
COsdDispIconSelect();
for(temp=0; temp<_VGA_MENU_NUM; temp++)
{
COsdFxLoadIcon(ROW(2), COL(temp*4+3), tVGA_ICON_TABLE[temp]);
}
//show mode
COsdDispCurrVGAMode(FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));
}
#if (_VIDEO_SUPPORT == _ON)
//------------------------------------------------
// Description : Show AV OSD Main Page
// InputValue : None
// OutputValue : None
//------------------------------------------------
void COsdDispAVMenu(void)
{
BYTE temp;
//show 2-bit icon
COsdFxChange2bitColor(ROW(2), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(2), COLOR00(_CP_BLACK), COLOR01(_CP_GRAY), COLOR10(_CP_GRAY), COLOR11(_CP_GRAY));
COsdDispClearIcon(ROW(2), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(2));
COsdDispIconSelect();
for(temp=0; temp<_AV_MENU_NUM; temp++)
{
COsdFxLoadIcon(ROW(2), COL(temp*4+3), tAV_ICON_TABLE[temp]);
}
//show mode
COsdDispCurrAVMode(FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));
//COsdFxShowNumber2(6, 6, stVideoData.Saturation); //for debug
//COsdFxShowNumber2(7, 6, stVideoData.Hue); //for debug
}
#endif
void COsdDispPage(void)
{
/*
BYTE ucSource;
ucSource = GET_INPUTSOURCE_TYPE();
switch(ucSource)
{
case _SOURCE_VGA:
COsdDispVGAMenu();
break;
#if (_VIDEO_SUPPORT == _ON)
case _SOURCE_VIDEO8:
COsdDispAVMenu();
break;
#endif
default:
break;
}
CTimerDelayXms(20);
COsdFxEnableOsd();
//SET_KEYREPEATENABLE();
CLR_KEYREPEATENABLE();
*/
//x.hu, osd no signal show
switch(GET_INPUTPORT_TYPE(stSystemData.InputSource))
{
case _DSUB_A0_PORT:
COsdDispVGAMenu();
break;
#if (_VIDEO_SUPPORT == _ON)
case _VIDEO_AV_PORT:
case _VIDEO_AV2_PORT:
COsdDispAVMenu();
break;
#endif
default:
break;
}
CTimerDelayXms(20);
COsdFxEnableOsd();
CLR_KEYREPEATENABLE();
//x.hu, add for keep osd show while no signal state
if (ucCurrState == _SLEEP_STATE){
//we don't allow osd menu while _SLEEP_STATE
}
if (ucCurrState == _NOSIGNAL_STATE || ucCurrState == _NOSUPPORT_STATE) {
#if (_OSD_NOSIGNAL_OPTION == _TRUE)
CTimerCancelTimerEvent(CModeNoSignalEvent);
CTimerCancelTimerEvent(CModeNoCableEvent);
CTimerCancelTimerEvent(CModeNoSupportEvent);
CTimerCancelTimerEvent(CModePowerSavingEvent);
#else
//CTimerCancelTimerEvent(CModeNoSignalEvent);
CTimerCancelTimerEvent(CModePowerSavingEvent);
#endif
// set flag: OSD page is showing while no signal
SET_OSDPAGE_AT_NOSIGNAL();
}
}
void COsdDispSystemTimer(BYTE ucRow, BYTE ucCol, WORD usValue)
{
COsdFxShowNumber2(ucRow, ucCol, usValue, _SHOW_2, _ON);
}
void COsdDispClearIcon(BYTE ucRow, BYTE ucCol, BYTE ucWidth, BYTE ucHeight)
{
BYTE temp;
for(temp=0;temp<ucHeight;temp++)
{
COsdFxCalcStartAddress(ucRow+temp, ucCol, 1); //write byte1. note by zhang_dc
CScalerWriteAmount(_OSD_DATA_PORT_92, ucWidth, 0x80, _NON_AUTOINC);
}
}
void COsdDispClearText(BYTE ucRow,BYTE ucCol, BYTE ucWidth,BYTE ucHeight)
{
BYTE temp;
for(temp=0;temp<ucHeight;temp++)
{
COsdFxHLine(ROW(ucRow + temp), COL(ucCol), LENGTH(ucWidth), 0x10, _WRITE_BYTE2);
COsdFxHLine(ROW(ucRow + temp), COL(ucCol), LENGTH(ucWidth), 0x00, _WRITE_BYTE1);
COsdFxHLine(ROW(ucRow + temp), COL(ucCol), LENGTH(ucWidth), 0x8c, _WRITE_BYTE0);
}
}
//----------------------------------------------------------------------------------------------------
// OSD Event Functions
//----------------------------------------------------------------------------------------------------
void COsdDispOsdTimerEvent(void)
{
COsdFxDisableOsd();
ucOsdState = _MENU_NONE;
bValueAdj = _FALSE; //add here for fix key message error!
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -