📄 osdpub501.c
字号:
#define __OSD501_LCD_OSD__
#include "Header\Include.h"
#if(_OSD_TYPE == _OSD501)
//-----------------------------------------------------------
void COsdHandler()
{
COsdEventMsgProc();
switch (ucKeyMessage)
{
case _IR_INPUTCH_KEY_MESSAGE:
ucOsdEventMsg = _CHANGE_SOURCE_MSG; break;
case _EXIT_KEY_MESSAGE:
OsdMenuExit(); break;
//#############################################################################
#if(_PANEL_LR_UD_SURPORT)
case _IR_RED_KEY_MESSAGE: _SET_PANEL_LR(); break;
case _IR_GREEN_KEY_MESSAGE: _SET_PANEL_UD(); break;
#endif //end of _PANEL_LR_UD_SURPORT
}
//#############################################################################
if(stSystemData.InputSource == _SOURCE_VIDEO8_AV || stSystemData.InputSource == _SOURCE_VIDEO8_AV2 || stSystemData.InputSource == _SOURCE_VIDEO8_TV)
{
if(GET_MUTE_STATE() && (!CScalerGetBit(_OVERLAY_CTRL_6C,_BIT0)))
{
ucOsdEventMsg = _DO_SHOW_MUTE;
}
// COsdFxEnableOsd(); //gg
}
if (ucCurrState == _ACTIVE_STATE) // eric 0902 mark for no signal use OSD
{
COsdProc();
if(ucKeyMessage != _NONE_KEY_MESSAGE)
CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
}
if(ucOsdState == 255)
NotUseFunc(); //mask
}
//##############################################################################
//-----------------------------------------------------------
void COsdProc()
{
SET_KEYREPEATENABLE(); //fenix
switch(stSystemData.InputSource)
{
#if(_VGA_SUPPORT)
case _SOURCE_VGA:
case _SOURCE_DVI:
case _SOURCE_YPBPR:
OSDVGAProc();
break;
#endif
#if(_VIDEO_SUPPORT)
case _SOURCE_VIDEO8_AV:
case _SOURCE_VIDEO8_AV2:
case _SOURCE_VIDEO8_SV:
case _SOURCE_VIDEO8_YUV:
OSDAVProc();
break;
#endif
#if(_TV_CHIP != _TV_NONE)
case _SOURCE_VIDEO8_TV:
OSDTVProc();
break;
#endif
}
#if(_FACTORY_MENU_EN)
COsdFacHandler();
#endif
}
//-----------------------------------------------------------
void COsdDispFirstTimeLoadFont(void)
{
//Andy Before First Time Load Font Disable OSD
COsdFxDisableOsd();
printMsg("Load Font"); //fenix
SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS); // 1
CScalerLoadFont(FntGlobal, 0x00,99,_COMPRESS_FONT);
CScalerLoadFont(FntIcon, 0x80,60,_COMPRESS_FONT);
}
//-----------------------------------------------------------
void COsdDispFirstInit(void)
{
CScalerSetBit(_OVERLAY_CTRL_6C, 0xe7, 0x01 << 2);
}
//-----------------------------------------------------------
void COsdDispOsdTimerEvent(void)
{
COsdFxDisableOsd();
ucOsdState = _MENU_NONE;
}
//-----------------------------------------------------------
void COsdEventMsgProc(void)
{
switch(ucOsdEventMsg)
{
case _SHOW_NOSIGNAL_MSG:
case _SHOW_NOCABLE_MSG:
case _SHOW_NOSUPPORT_MSG:
ShowHint();
break;
/* case _SHOW_SYSTEM_MSG: //fenix
CShowCurrentSystemMessage();
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_VIDEOCOLOR_MSG:
CEepromSaveVideoColor();
break;
case _SAVE_EE_COLORPROC1_MSG:
CEepromSaveColorTempData();
break;
case _ENTER_FACTORY_MODE_MSG:
//stOsdUserData.OsdSettingFlag |= _BIT7;
break;
case _CHANGE_SOURCE_MSG:
CSetBlackBackGround(1); //fenix add heiping
CLR_SOURCE_AUTOCHANGE(); //GG
ChangeSource();//
CEepromSaveSystemData();
CModeResetMode();
bFirstShowNote = 1;
// CSetBlackBackGround(0);
break;
case _DO_AUTO_CONFIG:
DoAutoConfig();
case _DO_SHOW_NOTE:
ShowNote();
break;
case _DO_SHOW_MUTE:
CShowMuteState();
CShowMuteIcon();
break;
default:
break;
}
ucOsdEventMsg = _NONE_MSG;
}
//----------------------------------------------------------------------------------------------------
void CShowDisplaySize(void)
{
OutputDisplaySize();
OutputChar(' ');
OutputRefrushRate();
}
//----------------------------------------------------------------------------------------------------
/*void CShowYPbPrMode(void)
{
if (stModeInfo.ModeCurr < 7)
{
Textout((BYTE code *)sYPbPrMode[stModeInfo.ModeCurr]);
}
}*/
//----------------------------------------------------------------------------------------------------
void ShowMode(void)
{
switch(stSystemData.InputSource)
{
case _SOURCE_VGA:
case _SOURCE_DVI:
//display display size
Gotoxy(9,17,BYTE_DISPLAY);
CShowDisplaySize();
break;
case _SOURCE_VIDEO8_AV:
case _SOURCE_VIDEO8_AV2:
case _SOURCE_VIDEO8_SV:
case _SOURCE_VIDEO8_YUV:
case _SOURCE_VIDEO8_TV:
Gotoxy(15,17,BYTE_DISPLAY);
CShowVideoMode();
break;
/* case _SOURCE_YPBPR:
Gotoxy(9,17,BYTE_DISPLAY);
CShowYPbPrMode();
break;
*/ }
}
//---------------------------------------------------------------------------------------------------------------------
void OSDSlider(unsigned char row, unsigned char col, unsigned char length, unsigned char value, unsigned char range,
unsigned char color)
{
unsigned int bound;
unsigned char i,c;
OSDLine(row, col, length + 6, color, THE_BYTE2); // Set Slider Attribute. 4 extra columns for space/numbers/space
bound = length * value;
Gotoxy(col,row,THE_BYTE1);
OutputChar(0x3b);
OutputChar(0x21); // Left Border
for (i = 1; i <= length; i++)
{
if (bound)
{
if(bound >= range)
{
c = 0x28;
bound = bound - range;
}
else
{
color = (bound << 4) / range;
bound = 0;
if (4 > color) c = 0x23;
else if (7 > color) c = 0x24;
else if (10 > color) c = 0x25;
else if (13 > color) c = 0x26;
else c = 0x27;
}
}
else
{
c = 0x22;
}
OutputChar(c);
}
OutputChar(0x29); // Right Border
OutputChar(0x3c);
PrintfDec(value); //值显示在右边
OutputChar(0x2a); //值显示在右边
OutputChar(0x20); //值显示在右边
}
//---------------------------------------------------------------------------
void InitOSD()
{
COsdFxDisableOsd();
SetOSDDouble(OSD_ALL_BLENDING);
SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS); // 1
SetRowCmds(ROW_COUNT,COL_WIDTH); // 2
COsdFxCodeWrite(ucCloseAllWindow);
// Init Char Cmd
OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x8c, BYTE_ATTRIB);
OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x00, BYTE_DISPLAY);
}
//---------------------------------------------------------------------------
void InitOSDFrame()
{
InitOSD();
OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x18, BYTE_COLOR);
OSDClear(1, 2, 1 , 31, 0x13, BYTE_COLOR);
//OSDClear(3, 1, 1 , 31, 0x19, BYTE_COLOR);
OSDLine(3, 1 , 31, 0x29, BYTE_COLOR);
OSDClear(4, 13,1 , 31, 0x1a, BYTE_COLOR);
OSDPosition(33 * 12,18 * 18, 65,65,0x01);
ShowMode();
}
//---------------------------------------------------------------------------
void InitDialog()
{
InitOSD();
OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x10, BYTE_COLOR);
COsdFxDrawWindow(XSTART(0), YSTART(0), XEND(33 * 12), YEND(5 * 18), tOSD_WINDOW0_STYLE);
}
//---------------------------------------------------------------------------
void DoAutoConfig()
{
InitDialog();
OSDPosition(33 * 12,5 * 18, 65,65,0x01);
CenterTextout((unsigned char code *)sAutoConfig[GET_LANGUAGE],16,2);
COsdFxEnableOsd();
CAutoDoAutoConfig();
COsdFxDisableOsd();
}
//---------------------------------------------------------------------------
void CShowVideoMode(void)
{
#if _YPBPR_SUPPORT
if (GET_INPUTSOURCE_TYPE() == _SOURCE_YPBPR)
Textout((_YPBPR_MODE_480I == stModeInfo.ModeCurr) ? sVideoNTSC : sVideoPAL);
else
Textout((CHECK60HZ()) ? sVideoNTSC : sVideoPAL);
#else
Textout((CHECK60HZ()) ? sVideoNTSC : sVideoPAL);
#endif
}
/*
void CShowCurrentSystemMessage(void)
{
BYTE w;
COsdFxDisableOsd();
SetOSDDouble(0);
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(30,30,4,2,0x01);
Gotoxy(1,1,BYTE_DISPLAY);
switch(stSystemData.InputSource)
{
case _INPUT_PORT_0: // VGA port
Textout(sVGA);
Gotoxy(1,3,BYTE_DISPLAY);
CShowDisplaySize();
w = 166;
break;
case _INPUT_PORT_1: // DVI port --> not use
Textout(sDVI);
Gotoxy(1,3,BYTE_DISPLAY);
CShowDisplaySize();
w = 166;
break;
case _INPUT_PORT_2: // Component port
Textout(sYPBPR);
Gotoxy(1,3,BYTE_DISPLAY);
CShowYPbPrMode();
w = 54;
break;
case _INPUT_PORT_3: // AV port
Textout(sAV);
Gotoxy(1,3,BYTE_DISPLAY);
CShowVideoMode();
w = 26;
break;
case _INPUT_PORT_4: // SV port
Textout(sSV);
Gotoxy(1,3,BYTE_DISPLAY);
CShowVideoMode();
w = 26;
break
;
case _INPUT_PORT_5: // TV port
Textout(sTV);
Gotoxy(1,3,BYTE_DISPLAY);
CShowVideoMode();
w = 26;
break;
}
w = 40 + w * 12;
COsdFxDrawWindow(XSTART(0), YSTART(10), XEND(w), YEND(86), tOSD_WINDOW0_STYLE);
COsdFxEnableOsd();
if(GET_PANELPOWERSTATUS() == _OFF)
CPowerPanelOn();
if (GET_LIGHTPOWERSTATUS() == _OFF)
CPowerLightPowerOn();
CTimerReactiveTimerEvent(SEC(10),COsdDispOsdTimerEvent);
}
*/
//---------------------------------------------------------------------------
void CCheckShowHinit(void)
{
if (_NOSIGNAL_STATE == ucCurrState)
SET_READYFORDISPLAY();
}
//---------------------------------------------------------------------------
void CShowInputSource(BYTE ucInputSource)
{
switch(ucInputSource)
{
case _INPUT_PORT_0: // VGA port
Textout(sVGA);
break;
case _INPUT_PORT_1: // DVI port --> not use
Textout(sDVI);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -