📄 osdpub501.c
字号:
for(i=0;i<ucCount;i++)
{
if(tMenuItem[i + 1] == fucOsdState)
{
return i;
}
}
return ucCount;
}
//######################################################################
void OsdMenuExit()
{
unsigned int pageNum = 0;
pageNum = menuFuncEixt[ucOsdState];
if(pageNum == 0)
{
ucOsdState = menuItemEixt[ucOsdState];
COsdFxDisableOsd();
CCheckShowHinit();
}
else
{
CLEAR_CLIENTOSD();
CLEAR_CLIENTOSDCOLOR();
switch(pageNum)
{
case 1:
ucOsdState = menuItemEixt[ucOsdState];
if(stSystemData.InputSource == _SOURCE_VGA)
{
DrawMenuItem(tVgaColorPage);
}
if(stSystemData.InputSource == _SOURCE_VIDEO8_AV || stSystemData.InputSource == _SOURCE_VIDEO8_AV2)
{
DrawMenuItem(tVideoColorPage);
}
if(stSystemData.InputSource == _SOURCE_VIDEO8_TV)
{
DrawMenuItem(tTvColorPage);
}
break;
case 2:
ucOsdState = menuItemEixt[ucOsdState];
DrawMenuItem(tVgaPicturePage);
break;
case 3:
ucOsdState = menuItemEixt[ucOsdState];
DrawMenuItem(tVgaSoundPage);
break;
case 4:
ucOsdState = menuItemEixt[ucOsdState];
DrawMenuItem(tVgaFeaturePage);
break;
case 5:
ucOsdState = menuItemEixt[ucOsdState];
DrawMenuItem(tColorTempPage);
break;
case 9:
ucOsdState = menuItemEixt[ucOsdState];
DrawMenuItem(tInstallPage);
break;
case 7:
ucOsdState = menuItemEixt[ucOsdState];
DrawMenuItem(tVideoColorPage);
break;
default:
ucOsdState = menuItemEixt[ucOsdState];
COsdFxDisableOsd();
CCheckShowHinit();
break;
}
}
}
//######################################################################
#if(_IR_ENABLE)
//######################### Shortcut key proc ##########################
void CClearOsd()
{
ucOsdState = _MENU_NONE;
COsdFxDisableOsd();
CCheckShowHinit();
}
//######################################################################
void irSetChennel()
{
BYTE ucInputIrNumber = ucKeyMessage & 0x0f;
BYTE inputChSum = _GET_INPUTCH_STATE();
if(_GET_INPUTCHSWITCH_STATE())
{
// CShowTVNumber(stVDCColor.CurrentChannel, _SHOW_CH_TV_NUMBER);
if(inputChSum == 0)
pData[15] = 0;
if(inputChSum < _GET_NUM)
{
pData[15] = pData[15] * 10 + ucInputIrNumber;
_SET_INPUTCH_STATE(inputChSum + 1);
}
if(inputChSum == _GET_NUM)
{
pData[15] = pData[15] * 10 + ucInputIrNumber;
_SET_INPUTCH_STATE(0);
//_SET_INPUTCHSWITCH_STATE(0); //do not clear inputswitch
}
CShowTVNumber(pData[15], _SHOW_CH_TV_NUMBER | _SHOW_CH_INPUT_SWITCH_ON);
}
else
pData[15] = ucInputIrNumber;
if(pData[15] < 0)
pData[15] = 0;
if(pData[15] > 127)
pData[15] = 127;
if(_GET_INPUTCH_STATE() == 0)
{
ucPrevChannel = stVDCColor.CurrentChannel;
stVDCColor.CurrentChannel = pData[15];
SET_MUTE_STATE(STATE_MUTEON);
MUTE_ON();
CTimerDelayXms(80);
CTimerDelayXms(80);
CShowTVNumber(stVDCColor.CurrentChannel, _SHOW_CH_TV_NUMBER);
CEepromSaveVideoColor();
CSetTVChannel(stVDCColor.CurrentChannel);
SET_MUTE_STATE(STATE_MUTEOFF);
MUTE_OFF();
}
}
//######################################################################
void irGetMultiNumber() //only use for 2 or 3 number now
{
BYTE ucInputIrNumber = ucKeyMessage & 0x0f;
BYTE inputChSum = _GET_INPUTCH_STATE();
switch (inputChSum)
{
case _GET_ONE_NUM:
pData[14] = 0;
pData[15] = 0;
pData[15] += ucInputIrNumber;
_SET_INPUTCH_STATE(inputChSum + 1);
if(inputChSum == _GET_NUM)
_SET_INPUTCH_STATE(_GET_ONE_NUM);
break;
case _GET_TWO_NUM:
pData[15] = pData[15] * 10 + ucInputIrNumber;
_SET_INPUTCH_STATE(inputChSum + 1);
if(inputChSum == _GET_NUM)
_SET_INPUTCH_STATE(_GET_ONE_NUM);
break;
case _GET_THREE_NUM:
pData[14] += ucInputIrNumber;
_SET_INPUTCH_STATE(inputChSum + 1);
if(inputChSum == _GET_NUM)
_SET_INPUTCH_STATE(_GET_ONE_NUM);
break;
case _GET_FOUR_NUM:
pData[14] = pData[14] * 10 + ucInputIrNumber;
_SET_INPUTCH_STATE(inputChSum + 1);
if(inputChSum == _GET_NUM)
_SET_INPUTCH_STATE(_GET_ONE_NUM);
break;
}
CShowTVNumber((pData[14] * 100 + pData[15]), _SHOW_CH_TV_NUMBER);
}
//######################################################################
void STVInputCHSwitch()
{
int i;
switch (_GET_INPUTCHSWITCH_STATE())
{
case _ADV_IR_NUM_INPUT_DISENABLE:
_SET_INPUTCHSWITCH_STATE(1);
for(i = _GET_NUM;i >= 0; i--)
{
Gotoxy(i,0,BYTE_DISPLAY);
OutputChar('-');
}
break;
case _ADV_IR_NUM_INPUT_ENABLE:
_SET_INPUTCHSWITCH_STATE(0);
for(i = _GET_NUM;i > 0; i--)
{
Gotoxy(i,0,BYTE_DISPLAY);
OutputChar(0x20);
}
Gotoxy(0,0,BYTE_DISPLAY);
OutputChar('-');
// CShowTVNumber(stVDCColor.CurrentChannel, _SHOW_CH_TV_NUMBER);
break;
}
_SET_INPUTCH_STATE(0);
CEepromSaveOsdUserData();
}
//##############################################################################
void tvChannelSwap()
{
BYTE ucSound = 0;
WORD iFreq = _MIN_FREQ;
if(_GET_INPUTCH_STATE() == _GET_ONE_NUM)
{
ucSound = CLoadChannelSoundType(stVDCColor.CurrentChannel);
iFreq = CLoadChannelFreq(stVDCColor.CurrentChannel);
if(pData != 0)
{
CSaveChannelData(CLoadChannelFreq(pData[15]),CLoadChannelSoundType(pData[15]),stVDCColor.CurrentChannel);
CTimerDelayXms(5);
CSaveChannelData(iFreq,ucSound,pData[15]);
CSetTVChannel(pData[15]);
}
_SET_INPUTCHSWITCH_STATE(_OFF);
// _SET_INPUTCHSWITCH_STATE(_ON);
ucOsdState = _MENU_NONE;
}
//fenix do swap;
}
//######################################################################
void CShowMuteIcon(void)
{
Gotoxy(1,1,BYTE_DISPLAY);
OutputChar(0x1e);
}
//######################################################################
void CShowMuteState(void)
{
COsdFxDisableOsd();
SetOSDDouble(3);
SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);
SetRowCmds(ROW_COUNT,COL_WIDTH);
COsdFxCodeWrite(ucCloseAllWindow);
OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x8C, THE_BYTE0);
OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x00, THE_BYTE1);
OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x20, THE_BYTE2);
OSDPosition(0,0,0,0,0x01);
bMuteOnScreen = 1;
COsdFxEnableOsd();
CTimerReactiveTimerEvent(SEC(10),COsdDispOsdTimerEvent);
}
//#####################################################################
void CSetMuteState(void)
{
CShowMuteState();
if (STATE_MUTEON == GET_MUTE_STATE())
{
SET_MUTE_STATE(STATE_MUTEOFF);
MUTE_OFF(); //FENIX
Gotoxy(1,1,BYTE_DISPLAY);
OutputChar(0x1f);
}
else
{
SET_MUTE_STATE(STATE_MUTEON);
MUTE_ON(); //FENIX
ucOsdEventMsg = _DO_SHOW_MUTE;
// CShowMuteIcon();
}
CEepromSaveOsdUserData();
}
//#####################################################################
void tvChannelRecall()
{
SET_MUTE_STATE(STATE_MUTEON);
MUTE_ON();
CTimerDelayXms(80);
CTimerDelayXms(80);
pData[15] = stVDCColor.CurrentChannel;
stVDCColor.CurrentChannel = ucPrevChannel;
ucPrevChannel = pData[15];
CSetTVChannel(stVDCColor.CurrentChannel);
CShowTVNumber(stVDCColor.CurrentChannel,_SHOW_CH_TV_NUMBER);
// ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;
CEepromSaveOsdUserData();
SET_MUTE_STATE(STATE_MUTEOFF);
MUTE_OFF();
}
#endif
//######################################################################
//void osdFatherPage(unsigned int code * tMenuItem)
//######################################################################
void NotUseFunc()
{
SetOSDRamAddress(0,0,0);
DirectWOSDRam(0,0,0,0);
SetRowCmds(0,0);
Gotoxy(0,0,0);
OutputChar(0);
Textout(0);
PrintfDec(0);
PrintfHex(0);
OSDPosition(0,0,0,0,0);
OSDLine(0,0,0,0,0);
OSDClear(0,0,0, 0,0,0);
OutputDisplaySize(); //在当前的位置输出显示尺寸
OutputRefrushRate(); //在当前的位置输出刷新频率
OutputHSync(); //在当前的位置输出HSync
COsdFxCodeWrite(0);
COsdFxDisableOsd();
COsdFxDrawWindow(0,0,0,0,0);
COsdFxChangeWindowColor(0,0);
OutputDisplaySize();
OutputRefrushRate();
OutputHSync();
StrLen(0);
ValueInRangeChange(0,0,0,0,0);
SetRTDPWM(0,0);
CAutoDoAutoConfig();
CAutoDoWhiteBalance();
CEepromSaveOsdUserData();
CEepromSaveBriConData();
CEepromSaveColorTempData();
// CScalerLoadFont(0, 0, 0, 0);
ShowMode();
OSDSlider(0, 0, 0, 0, 0,0);
GetLanguegeCount();
GetNextLanguage(0);
GetPrevLanguage(0);
CheckLanguage();
FirstLanguage();
LastLanguage();
PrintfInt(0);
COsdFxEnableOsd();
DoReset();
VPosGuage();
HPosGuage();
ClockGuage();
CenterTextout(0,0,0);
RightAlignTextOut(0,0,0);
ChangeSource();
SetOSDDouble(0);
GetCurrLanguagePos();
IndexofLanuguage(0);
// COsdFxCloseWindow(0);
CShowFiveNumber(0, 0);
CShowAutoSearchSlider(0);
CStopAutoSearch();
CheckSum(); //fenix
DrawHex(); //fenix
InitVolume(); //fenix
MuteVolume(); //fenix
CDrawChannel(); //FENIX
CClearOsd(); //fenix
//CSetBlackBackGround(0); //FENIX
/*
#if(_VIDEO_TV_SUPPORT)
CEepromSaveVideoColor(); //target
#endif
*/
#if(_VIDEO_TV_SUPPORT && _TV_CHIP != _TV_NONE)
CSaveChannelFreq(0,0);
CSaveChannelColorType(0,0);
CSaveChannelSkip(0,0);
CSaveChannelSoundType(0, 0);
CPrevChannel();
CNextChannel();
CTvAutoSearch();
CManualSearch(0,0);
CTuningCurrentChannel(0, 0);
#endif
}
//----------------------------------------------------------------------------------------------------
#endif //#if(OSD_TYPE == OSD01)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -