📄 osd.c
字号:
}
void COsdLanguagePageIRMessage(void)
{
}
//------------------------------------------
// Source Process
//------------------------------------------
void COsdSourcePageSelectMessage(void)
{
/* if(stSystemData.InputSource == ucOsd_Item_Index0-1) //save source, do nothing.
return;
stSystemData.InputSource = ucOsd_Item_Index0-1;
ucOsdEventMsg = _CHANGE_SOURCE_MSG;
//SET_INPUTSOURCE_TYPE(_SOURCE_VIDEO8);
switch(GET_INPUTPORT_TYPE(stSystemData.InputSource))
{
#if(_VIDEO_SUPPORT == _ON)
#if(_VIDEO_TYPE == _VIDEO_5147)
case _VIDEO_AV_PORT:
CVideoPowerState(_VIDEO_NORMAL);
CTimerDelayXms(20);
CVideoDataEnable(_ON);
break;
#endif
#endif
case _DSUB_A0_PORT:
case _DSUB_A1_PORT:
#if(_VIDEO_SUPPORT == _ON)
#if(_VIDEO_TYPE == _VIDEO_5147)
CVideoDataEnable(_OFF);
CVideoPowerState(_VIDEO_POWER_SAVING);
#endif
#endif
break;
default:
break;
}
*/
//x.hu, update for source switch
// if current source, redraw top level OSD page only:
if(stSystemData.InputSource == ucOsd_Item_Index0-1) { // if the select item is just the current source?
if (GET_INPUTPORT_TYPE(stSystemData.InputSource) == _DSUB_A0_PORT)
{
// if VGA, we will draw VGA page's sub-page(MISC)
SETOSDSTATE(_VGA_MENU_MISC);
// point to MISC page source item
SETOSDITEM0(_MISC_SOURCE);
}
else if (GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_AV_PORT || \
GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_AV2_PORT)
{
// if VIDEO, we will draw video page's sub-page(MISC)
SETOSDSTATE(_AV_MENU_MISC);
// point to MISC page source item
SETOSDITEM0(_MISC_SOURCE);
}
SETOSDITEM1(0);
COsdDispIconSelect();
COsdDispItemSelect();
return;
}
// else, if we request changing to a valid source, set status flag:
SET_SOURCESTATUS(ucOsd_Item_Index0); // see SET_SOURCESTATUS() for details
}
void COsdSourcePageItemAdjMessage(void)
{
COsdIconItemSelection(&ucOsd_Item_Index0, ucKeyMessage, _SOURCE_NUM+1, _SOURCE_NUM, _SOURCE_1, COsdDispItemSelect);
}
void COsdSourcePageValueAdjMessage(void)
{
}
void COsdSourcePageExitMessage(void)
{
/*
switch(GET_INPUTSOURCE_TYPE())
{
case _SOURCE_VGA:
SETOSDSTATE(_VGA_MENU_MISC);
COsdFxCodeWrite((BYTE code *)tVGA_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
break;
#if(_VIDEO_SUPPORT == _ON)
case _SOURCE_VIDEO8:
SETOSDSTATE(_AV_MENU_MISC);
COsdFxCodeWrite((BYTE code *)tAV_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
break;
#endif
default:
break;
}
*/
//x.hu, for No signal osd show
switch (GET_INPUTPORT_TYPE(stSystemData.InputSource))
{
case _DSUB_A0_PORT:
SETOSDSTATE(_VGA_MENU_MISC);
COsdFxCodeWrite((BYTE code *)tVGA_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
COsdFxChange1bitColor(ROW(5), COL(1), WIDTH(10), HEIGHT(1), FGCOLOR(_CP_GRAY), BGCOLOR(_CP_BLACK));//
break;
#if(_VIDEO_SUPPORT == _ON)
case _VIDEO_AV_PORT:
case _VIDEO_AV2_PORT:
SETOSDSTATE(_AV_MENU_MISC);
COsdFxCodeWrite((BYTE code *)tAV_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
break;
#endif
default:
break;
}
//SETOSDITEM0(_MISC_SOURCE);
SETOSDITEM0(_MISC_SOURCE);
SETOSDITEM1(_ITEM_NONE);
//COsdFxCodeWrite((BYTE code *)tVGA_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
COsdDispItemSelect();
}
void COsdSourcePageSwitchMessage(void)
{
}
void COsdSourcePageIRMessage(void)
{
}
//-----------------------------------------
// System Timer
//-----------------------------------------
void COsdSystemTimerPageExit(void)
{
CLR_KEYREPEATENABLE();
if(ucOsd_Item_Index1 == _ITEM_NONE)
{
switch(GET_INPUTSOURCE_TYPE())
{
case _SOURCE_VGA:
SETOSDSTATE(_VGA_MENU_MISC);
COsdFxCodeWrite((BYTE code *)tVGA_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
break;
#if(_VIDEO_SUPPORT == _ON)
case _SOURCE_VIDEO8:
SETOSDSTATE(_AV_MENU_MISC);
COsdFxCodeWrite((BYTE code *)tAV_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
break;
#endif
default:
break;
}
SETOSDITEM0(_MISC_TIMER);
SETOSDITEM1(_ITEM_NONE);
COsdDispItemSelect();
}
else
{
bValueAdj = 0;
COsdFxChange1bitColor(ROW(ucOsd_Item_Index0+4), COL(0), WIDTH(28), HEIGHT(1), FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));
SETOSDITEM1(_ITEM_NONE);
if(_SELECTED_MESSAGE == ucKeyMessage) //User confirmed!
{
//save current setting
stUserTimerData.Hour[ucOsd_Item_Index0-1] = stUserTimerData.Hour[3];
stUserTimerData.Minute[ucOsd_Item_Index0-1] = stUserTimerData.Minute[3];
//Initial time base
stUserTimerData.Hour[3] = 0;
stUserTimerData.Minute[3] = 0;
ucUserTimerCount = 0;
ucUserTimerCount2 = 0;
}
else if(_EXIT_MESSAGE == ucKeyMessage) //User abort!
{
//restore pre setting
COsdDispSystemTimer(ROW(ucOsd_Item_Index0+4), COL(21), stUserTimerData.Hour[ucOsd_Item_Index0-1]); //hour
COsdDispSystemTimer(ROW(ucOsd_Item_Index0+4), COL(24), stUserTimerData.Minute[ucOsd_Item_Index0-1]); //minute
}
}
}
void COsdSystemTimerPageSelectMessage(void)
{
if(ucOsd_Item_Index1 == _ITEM_NONE)
{
switch(ucOsd_Item_Index0)
{
case _TIMER_EXIT:
COsdSystemTimerPageExit();
break;
case _TIMER_POWERUP:
case _TIMER_POWERDOWN:
case _TIMER_REMIND:
bValueAdj = _TRUE;
SET_KEYREPEATENABLE(); //enable key repeat function
SETOSDITEM1(_ITEM_1);
bUserTimerEn = _FALSE; //Pause User Timer Counting
COsdFxChange1bitColor(ROW(ucOsd_Item_Index0+4), COL(21), WIDTH(5), HEIGHT(1), FGCOLOR(_CP_RED), BGCOLOR(_CP_BLACK));
//get current timer setting for preparing adjustment
stUserTimerData.Hour[3] = stUserTimerData.Hour[ucOsd_Item_Index0-1];
stUserTimerData.Minute[3] = stUserTimerData.Minute[ucOsd_Item_Index0-1];
break;
}
}
else
{
COsdSystemTimerPageExit();
}
}
void COsdSystemTimerPageItemAdjMessage(void)
{
COsdIconItemSelection(&ucOsd_Item_Index0, ucKeyMessage, _USER_TIMER_NUM+1, _USER_TIMER_NUM, _ITEM_1, COsdDispItemSelect);
}
void COsdSystemTimerPageValueAdjMessage(void)
{
BYTE temp0, temp1;
temp0 = stUserTimerData.Minute[3];
temp1 = stUserTimerData.Hour[3];
//check value is valid or not
temp0 = (temp0 >= 60) ? 0 : temp0;
temp1 = (temp1 >= _USER_TIMER_MAX) ? 0 : temp1;
//Do adjust
if(_VALUE_UP_MESSAGE == ucKeyMessage)
{
temp0 = (temp0+1 == 60) ? 0 : temp0+1;
if(temp0 == 0)
{
temp1 = (temp1+1 < _USER_TIMER_MAX) ? temp1+1 : 0;
}
}
else if(_VALUE_DOWN_MESSAGE == ucKeyMessage)
{
temp0 = (temp0-1 == 255) ? 59 : temp0-1;
if(temp0 == 59)
{
temp1 = (temp1-1 == 255) ? _USER_TIMER_MAX-1: temp1-1;
}
}
stUserTimerData.Minute[3] = temp0; //save in time base for temp;
stUserTimerData.Hour[3] = temp1; //save in time base for temp;
COsdDispSystemTimer(ROW(ucOsd_Item_Index0+4), COL(21), temp1); //hour
COsdDispSystemTimer(ROW(ucOsd_Item_Index0+4), COL(24), temp0); //minute
}
void COsdSystemTimerPageExitMessage(void)
{
COsdSystemTimerPageExit();
}
void COsdSystemTimerPageSwitchMessage(void)
{
}
void COsdSystemTimerPageIRMessage(void)
{
}
#if(_VIDEO_SUPPORT == _ON)
void COsdVideoColorPageSelectMessage(void)
{
//x.hu, add for prevent from operating while no signal mode
if (ucCurrState != _ACTIVE_STATE)
{
return;
}
if(ucOsd_Item_Index0 == _ITEM_NONE)
{
ucOsd_Item_Index0 = _ITEM_1;
COsdDispItemSelect();
}
else
{
switch(ucOsd_Item_Index0)
{
case _VIDEO_COLOR_EXIT:
COsdClearItemSelect();
SETOSDITEM0(_ITEM_NONE);
break;
case _VIDEO_COLOR_CONTRAST:
if(ucOsd_Item_Index1 == _ITEM_NONE)
{
//if enter contrast adjust,
SETOSDITEM1(1);
bValueAdj = _TRUE;
//show window
COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
//show bar
//COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.Contrast, 100 - 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.Contrast, _SLIDER_MAX_CONTRAST - 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
}
else
{
bValueAdj = _FALSE;
CLR_KEYREPEATENABLE();
COsdFxCloseWindow(WINNO(4));
COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1)); //Clear Bar
SETOSDITEM1(0);
}
break;
case _VIDEO_COLOR_BRIGHT:
if(ucOsd_Item_Index1 == _ITEM_NONE)
{
//if enter contrast adjust,
SETOSDITEM1(1);
bValueAdj = _TRUE;
//show window
COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
//show bar
//COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.Brightness, 100- 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.Brightness, _SLIDER_MAX_BRIGHTNESS- 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
}
else
{
bValueAdj = _FALSE;
CLR_KEYREPEATENABLE();
COsdFxCloseWindow(WINNO(4));
COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1)); //Clear Bar
SETOSDITEM1(0);
}
break;
case _VIDEO_COLOR_SATURATION:
if(ucOsd_Item_Index1 == _ITEM_NONE)
{
//if enter contrast adjust,
SETOSDITEM1(1);
bValueAdj = _TRUE;
//show window
COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
//show bar
//COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.Saturation, 100- 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.Saturation, _SLIDER_MAX_SATURATION- 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
}
else
{
bValueAdj = _FALSE;
CLR_KEYREPEATENABLE();
COsdFxCloseWindow(WINNO(4));
COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1)); //Clear Bar
SETOSDITEM1(0);
}
break;
case _VIDEO_COLOR_SHARPNESS:
if(ucOsd_Item_Index1 == _ITEM_NONE)
{
SETOSDITEM1((stVideoData.VSharpness)+1);
bValueAdj = _TRUE;
//show window
COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
//show current select(0, 1, 2, 3, 4)
//COsdFxCodeWrite(tOSD_NUM_ROW3);
//COsdFxChange1bitColor(ROW(12), COL(ucOsd_Item_Index1*5+1), WIDTH(1), HEIGHT(1), FGCOLOR(_CP_RED), BGCOLOR(_CP_BLACK));
//x.hu, update for sharpness
//COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.VSharpness, 3 - 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.VSharpness, _SLIDER_MAX_SHARPNESS- 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
}
else
{
bValueAdj = _FALSE;
CLR_KEYREPEATENABLE();
COsdFxCloseWindow(WINNO(4));
COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1)); //Clear Bar
SETOSDITEM1(0);
}
break;
case _VIDEO_COLOR_HUE:
if(ucOsd_Item_Index1 == _ITEM_NONE)
{
//if enter contrast adjust,
SETOSDITEM1(1);
bValueAdj = _TRUE;
//show window
COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
//show bar
//COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.Hue, 100- 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.Hue, _SLIDER_MAX_HUE- 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
}
else
{
bValueAdj = _FALSE;
CLR_KEYREPEATENABLE();
COsdFxCloseWindow(WINNO(4));
COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1)); //Clear Bar
SETOSDITEM1(0);
}
break;
default:
break;
}
}
}
void COsdVideoColorPageItemAdjMessage(void)
{
if(ucOsd_Item_Index0 == 0) //icon selection
{
BYTE temp;
/*
switch(GET_INPUTSOURCE_TYPE())
{
case _SOURCE_VIDEO8:
temp = _AV_MENU_NUM;
break;
default:
break;
}
*/
//x.hu, osd no signal show
switch(GET_INPUTPORT_TYPE(stSystemData.InputSource))
{
#if (_VIDEO_SUPPORT == _ON)
case _VIDEO_AV_PORT:
case _VIDEO_AV2_PORT:
temp = _AV_MENU_NUM;
break;
#endif
default:
break;
}
COsdIconItemSelection(&ucOsdState, ucKeyMessage, temp+1, temp, _MENU_1, COsdDispIconSelect);
}
else //item selection
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -