📄 osdpub903.c
字号:
#define __OSD903_LCD_OSD__
#include "Header\Include.h"
#if(_OSD_TYPE == _OSD903)
//-----------------------------------------------------------
void COsdHandler()
{
COsdEventMsgProc();
KeyMsgToOsdMsg();
COsdEventMsgProc();
if (ucCurrState == _ACTIVE_STATE)
{
COsdProc();
if((ucKeyMessage != VK_NONE) && (ucOsdState < FAC_AUTO_COLOR))
CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
}
else if(ucCurrState == _NOSIGNAL_STATE ||
ucCurrState == _NOSUPPORT_STATE )
{
if(GET_BURNIN_STATE() == BURNIN_ON)
{
BurnInRun();
}
else if(ucCurrState != _SLEEP_STATE && fMoveEn)
{
ucTimeTmp++;
if(ucTimeTmp >= 5)
{
ucTimeTmp = 0;
SetNoSingPos();
}
}
}
if(ucOsdState == 255)
NotUseFunc(); //mask
}
//-----------------------------------------------------------
void COsdProc()
{
OSDVGAProc();
#if(_FACTORY_MENU_EN)
COsdFacHandler();
#endif
}
//-----------------------------------------------------------
void COsdDispFirstTimeLoadFont(void)
{
COsdFxDisableOsd();
SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);
CScalerLoadFont(Font_Global,0x00,0xad,_COMPRESS_FONT);
LoadLanguageFont1();
}
//-----------------------------------------------------------
void LoadLanguageFont()
{
CScalerLoadFont(Font_MENUChi_S, 0xad,0x53,_COMPRESS_FONT);
}
//-----------------------------------------------------------
void LoadLanguageFont1()
{
CScalerLoadFont(Font_NMENUChi_S, 0xad,0x2c,_COMPRESS_FONT);
}
//-----------------------------------------------------------
void COsdDispOsdTimerEvent(void)
{
COsdFxDisableOsd();
ucOsdState = _MENU_NONE;
}
//-----------------------------------------------------------
void InitOsd()
{
COsdFxDisableOsd();
// SetOSDDouble(0);
SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS); // 1
SetRowCmds(ROW_COUNT,COL_WIDTH); // 2
COsdFxCodeWrite(ucCloseAllWindow); // Close all windows
// Init Char Cmd
OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x8c, BYTE_ATTRIB); //Byte 0
OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x00, BYTE_DISPLAY); //Byte 1
OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x10, BYTE_COLOR); //Byte 2
CAdjustColorPalette(tPALETTE_0);
}
//-----------------------------------------------------------
void InitDialog()
{
InitOsd();
OSDClear(0,ROW_COUNT,0,COL_WIDTH,0x8c,0x10); //Set Font as 1bit
OSDClear(0,ROW_COUNT,0,COL_WIDTH,0x00,0x50); //清空显示
OSDClear(0,ROW_COUNT,0,COL_WIDTH,0xc0,0x90); //设置颜色
COsdFxDrawWindow(XSTART(0), YSTART(0), XEND(400), YEND(136), tOSD_WINDOW2_STYLE);
COsdFxChangeWindowColor(COLOR00(12), tOSD_WINDOW2_STYLE);
COsdFxDrawWindow(XSTART(18), YSTART(12), XEND(382), YEND(128), tOSD_WINDOW3_STYLE);
COsdFxChangeWindowColor(COLOR00(6), tOSD_WINDOW3_STYLE);
COsdFxDrawWindow(XSTART(30), YSTART(20), XEND(370), YEND(120), tOSD_WINDOW4_STYLE);
COsdFxChangeWindowColor(COLOR00(1), tOSD_WINDOW4_STYLE);
}
//-----------------------------------------------------------
void COsdEventMsgProc(void)
{
switch(ucOsdEventMsg)
{
case _SHOW_NOSIGNAL_MSG:
case _SHOW_NOCABLE_MSG:
case _SHOW_NOSUPPORT_MSG:
#if(_BURNIN_EN)
if(GET_BURNIN_STATE() == BURNIN_ON)
InitBurnIn();
else
ShowHint();
#else
ShowHint();
#endif
break;
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_COLORPROC1_MSG:
CEepromSaveColorTempData();
break;
case _ENTER_FACTORY_MODE_MSG:
//stOsdUserData.OsdSettingFlag |= _BIT7;
break;
case _CHANGE_SOURCE_MSG:
CLR_SOURCE_AUTOCHANGE();
CEepromSaveSystemData();
CModeResetMode();
break;
case _DO_AUTO_CONFIG:
DoAuto();
break; //andy mask
case OE_DO_CHANGE_SOURCE:// 0x85 //改变模式
if(ChangeSource())
{
CLR_SOURCE_AUTOCHANGE();
CEepromSaveSystemData();
CModeResetMode();
}
break;
case _DO_SHOW_NOTE:
ShowNote();
break;
default:
break;
}
ucOsdEventMsg = _NONE_MSG;
}
//----------------------------------------------------------------------------------------------------
void ShowNote()
{
unsigned char w;
fMoveEn = 0;
LoadLanguageFont1();
CPowerPanelOn();
#if(_TV_CHIP != _TV_NONE)
if(stSystemData.InputSource == _SOURCE_VIDEO8_TV)
{
CShowTVNumber(stVDCColor.CurrentChannel,SHOW_CH_TV_NUMBER | SHOW_CH_TV_TYPE | SHOW_CH_SOUND_TYPE);
return;
}
#endif
CAdjustColorPalette(tPALETTE_0);
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, 0x30, THE_BYTE2);
OSDPosition(30,30,1,0,0x01);
OSDLine(1,1,8,0xa0,0x90);
switch(stSystemData.InputSource)
{
case _SOURCE_VGA:
CenterTextout((unsigned char code*)sVGA[GET_LANGUAGE],4,1);
w = 3;
break;
case _SOURCE_DVI:
CenterTextout((unsigned char code*)sDVI[GET_LANGUAGE],4,1);
w = 3;
break;
}
w = 90 + w * 12;
COsdFxDrawWindow(XSTART(0), YSTART(0), XEND(w), YEND(95), tOSD_WINDOW0_STYLE);
COsdFxChangeWindowColor(COLOR00(12), tOSD_WINDOW0_STYLE);
COsdFxDrawWindow(XSTART(8), YSTART(8), XEND(w-8), YEND(87), tOSD_WINDOW1_STYLE);
COsdFxChangeWindowColor(COLOR00(6), tOSD_WINDOW1_STYLE);
COsdFxDrawWindow(XSTART(12), YSTART(12), XEND(w-12), YEND(83), tOSD_WINDOW2_STYLE);
COsdFxChangeWindowColor(COLOR00(1), tOSD_WINDOW2_STYLE);
OSDLine(2,2,6,0xa0,0x90);
Gotoxy(2,2,BYTE_DISPLAY);
Textout(VgaIconUp);
OSDLine(3,3,5,0xa0,0x90);
Gotoxy(3,3,BYTE_DISPLAY);
Textout(VgaIconDown);
COsdFxEnableOsd();
CTimerReactiveTimerEvent(SEC(2),COsdDispOsdTimerEvent);
}
//---------------------------------------------------------------------------------------------------------------------
void InitDialog1()
{
InitOsd();
OSDClear(0,ROW_COUNT,0,COL_WIDTH,0x8c,0x10); //Set Font as 1bit
OSDClear(0,ROW_COUNT,0,COL_WIDTH,0x00,0x50); //清空显示
OSDClear(0,ROW_COUNT,0,COL_WIDTH,0xc0,0x90); //设置颜色
COsdFxDrawWindow(XSTART(0), YSTART(5), XEND(310), YEND(181), tOSD_WINDOW1_STYLE);
COsdFxChangeWindowColor(COLOR00(11), tOSD_WINDOW1_STYLE);
COsdFxDrawWindow(XSTART(10), YSTART(23), XEND(300), YEND(163), tOSD_WINDOW2_STYLE);
COsdFxChangeWindowColor(COLOR00(6), tOSD_WINDOW2_STYLE);
COsdFxDrawWindow(XSTART(16), YSTART(29), XEND(294), YEND(157), tOSD_WINDOW3_STYLE);
COsdFxChangeWindowColor(COLOR00(1), tOSD_WINDOW3_STYLE);
OSDLine(9, 6,15,0x10,0x90);
switch(stSystemData.InputSource)
{
case _SOURCE_VGA:
CenterTextout((unsigned char code*)sVGA[GET_LANGUAGE],11,9);
break;
case _SOURCE_DVI:
CenterTextout((unsigned char code*)sDVI[GET_LANGUAGE],11,9);
break;
}
}
//------------------------------------------------------------
void ShowHint()
{
switch(ucOsdEventMsg)
{
case _SHOW_NOSIGNAL_MSG:
InitDialog1();
NoConnect_Dialog();
SetNoSingPos();
fMoveEn = 1;
break;
case _SHOW_NOCABLE_MSG:
InitDialog1();
NoConnect_Dialog();
SetNoSingPos();
fMoveEn = 1;
break;
case _SHOW_NOSUPPORT_MSG:
InitDialog1();
COsdFxDrawWindow(XSTART(101), YSTART(110), XEND(151), YEND(154), tOSD_WINDOW4_STYLE);
COsdFxChangeWindowColor(COLOR00(15), tOSD_WINDOW4_STYLE);
COsdFxDrawWindow(XSTART(111), YSTART(118), XEND(141), YEND(146), tOSD_WINDOW5_STYLE);
COsdFxChangeWindowColor(COLOR00(1), tOSD_WINDOW5_STYLE);
NotSupport_Dialog();
fMoveEn = 0;
break;
}
CPowerPanelOn();
COsdFxEnableOsd();
CTimerCancelTimerEvent(COsdDispOsdTimerEvent);
}
//----------------------------------------------------------------------------------------------------
void NoConnect_Dialog()
{
unsigned char Len = StrLen((unsigned char code *)sCheck_Singnal_Cable[GET_LANGUAGE]);
Gotoxy((24 - Len)/2,3,0x50);
Textout_Lng(sCheck_Singnal_Cable);
OSDLine(5, 7,2,0xc2,0x90);
OSDLine(5,11,2,0xc7,0x90);
OSDLine(5,15,2,0xc3,0x90);
// CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
}
//----------------------------------------------------------------------------------------------------
void NotSupport_Dialog()
{
unsigned char Len = StrLen((unsigned char code *)sNotOptimumMode[GET_LANGUAGE]);
Gotoxy((22 - Len)/2,2,0x50);
Textout_Lng(sNotOptimumMode);
Gotoxy(3,3,0x50);
Textout_Lng(sRecommendedMode);
if(GET_LANGUAGE == LNG_ENG)
Gotoxy(4,5,0x50);
else Gotoxy(4,4,0x50);
OutputRecommendedMode();
OutputChar(0x00);
Textout(sRMode_Eng); //60HZ
OSDLine(7, 9,2,0xd0,0x90);
Gotoxy(9,7,0x50);
OutputChar(0x0d); //display ?
OSDPosition(372,324,50,50,0x01);
// CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
}
//----------------------------------------------------------------------------------------------------
void OutputRecommendedMode()
{
if(_DISP_WID / 1000) pData[3] = '1';
else pData[3] = 0;
pData[4] = (unsigned char)((_DISP_WID / 100) % 10) + '0';
pData[5] = (unsigned char)((_DISP_WID / 10) % 10) + '0';
pData[6] = (unsigned char)( _DISP_WID % 10) + '0';
pData[7] = ' ';
pData[8] = 0x58; // x
pData[9] = ' ';
if(_DISP_LEN / 1000)
{
pData[10] = '1';
pData[11] = (unsigned char)((_DISP_LEN / 100) % 10) + '0';
pData[12] = (unsigned char)((_DISP_LEN / 10) % 10) + '0';
pData[13] = (unsigned char)(_DISP_LEN % 10) + '0';
pData[14] = 0;
pData[0] = 14;
}
else
{
pData[10] = (unsigned char)((_DISP_LEN / 100) % 10) + '0';
pData[11] = (unsigned char)((_DISP_LEN / 10) % 10) + '0';
pData[12] = (unsigned char)(_DISP_LEN % 10) + '0';
pData[13] = 0;
pData[0] = 13;
}
CScalerWrite(_OSD_DATA_PORT_92,pData[0] - 3,&pData[3],_NON_AUTOINC);
}
//----------------------------------------------------------------------------------------------------
void SetNoSingPos()
{
static bit bDirectX = 1,bDirectY = 0;
if(bDirectX)
{
ucNoSngX += 3;
if(ucNoSngX >= HINT_POS_RIGHT)
{
ucNoSngX = HINT_POS_RIGHT;
bDirectX = 0;
}
}
else
{
ucNoSngX -= 3;
if(ucNoSngX <= HINT_POS_LEFT)
{
ucNoSngX = HINT_POS_LEFT;
bDirectX = 1;
}
}
if(bDirectY)
{
ucNoSngY += 3;
if(ucNoSngY >= HINT_POS_BOTTOM)
{
ucNoSngY = HINT_POS_BOTTOM;
bDirectY = 0;
}
}
else
{
ucNoSngY -= 3;
if(ucNoSngY <= HINT_POS_TOP)
{
ucNoSngY = HINT_POS_TOP;
bDirectY = 1;
}
}
RTDOsdPosition(ucNoSngX,ucNoSngY,0x03);
CTimerDelayXms(20);
}
//-----------------------------------------------------------
void RTDOsdPosition(unsigned int x,unsigned int y,unsigned char ucPar)
{
CScalerSetBit(_OSD_SCRAMBLE_93, 0xf8, 0x02);
pData[0] = CScalerGetBit(_OVERLAY_CTRL_6C, _BIT0);
pData[0] = (pData[0] == 0x00) ? 0xc0 : 0xe0;
pData[1] = 0x00;
CScalerWrite(_OSD_ADDR_MSB_90, 2, pData, _AUTOINC);
pData[0] = y >> 1;
pData[1] = (BYTE)(x >> 2);
pData[2] = ((BYTE)(x & 0x0003) << 6) | ((y & 0x01) << 5) | ucPar;
CScalerWrite(_OSD_DATA_PORT_92, 3, pData, _NON_AUTOINC);
CTimerWaitForEvent(_EVENT_DEN_STOP);
CTimerWaitForEvent(_EVENT_DEN_STOP);
CScalerSetBit(_OSD_SCRAMBLE_93, 0xf8, 0x05);
}
//---------------------------------------------------------------------------
void DrawMainPage()
{
switch(stSystemData.InputSource)
{
#if(_VGA_SUPPORT)
case _SOURCE_VGA:
case _SOURCE_DVI:
DrawVGAMainPage();
break;
#endif
}
}
//----------------------------------------------------------------------------------------------------
void DrawPicPage()
{
CLEAR_CLIENT;
DrawMenuItem1(sBrightness,3); //亮度
Gotoxy(24,3,0x50);
PrintfDec(BRIGHTNESS_GUAGE);
MENUITEM_STATE_NOMAL(3);
DrawMenuItem2(sContrast,5); //对比度
Gotoxy(24,5,0x50);
PrintfDec(CONTRAST_GUAGE);
MENUITEM_STATE_NOMAL(5);
DRAW_BOTTOMLINE(6); //底线
Show_MenuItem_State(_MENU_BRIGHT,ucOsdState,1);
Show_Tip1();
}
//------------------------------------------------------------
void Draw_Contrast_Page()
{
CLEAR_CLIENT;
Adj_Page_Title(sContrast);
NATAK_SLIDER(CONTRAST_GUAGE, 100);
Show_Tip4();
}
//------------------------------------------------------------
void Draw_Bright_Page()
{
CLEAR_CLIENT;
Adj_Page_Title(sBrightness);
NATAK_SLIDER(BRIGHTNESS_GUAGE, 100);
Show_Tip4();
}
//----------------------------------------------------------------------------------------------------
void DrawColorPage()
{
CLEAR_CLIENT;
DrawMenuItem1(MMagicColor,3);
MENUITEM_STATE_NOMAL(3);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -