📄 osdpub501.c
字号:
break;
case _INPUT_PORT_2: // Component port
Textout(sAV);
break;
case _INPUT_PORT_3: // sV port
Textout(sSV);
break;
case _INPUT_PORT_4: // YUV port
Textout(sYUV);
break;
case _INPUT_PORT_5: // TV port
Textout(sTV);
break;
case _INPUT_PORT_6: // YPBPR port
Textout(sYPBPR);
break;
case _INPUT_PORT_7: // YPBPR port
Textout(sAV2);
break;
}
}
//---------------------------------------------------------------------------
void ShowHint()
{
InitDialog();
OSDPosition(33 * 12,5 * 18, 65,65,0x01);
Gotoxy(15,1,BYTE_DISPLAY);
CShowInputSource(stSystemData.InputSource);
if(ucOsdEventMsg == _SHOW_NOSIGNAL_MSG)
CenterTextout((unsigned char code *)sNoSignal[GET_LANGUAGE],16,3);
else if(ucOsdEventMsg == _SHOW_NOCABLE_MSG)
CenterTextout((unsigned char code *)sNoCable[GET_LANGUAGE],16,3);
else CenterTextout((unsigned char code *)sNoSupport[GET_LANGUAGE],16,3);
COsdFxEnableOsd();
if(GET_PANELPOWERSTATUS() == _OFF)
CPowerPanelOn();
if (GET_LIGHTPOWERSTATUS() == _OFF)
CPowerLightPowerOn();
}
//---------------------------------------------------------------------------
void ShowNote()
{
unsigned char w;
bFirstShowNote = 0;
if(stSystemData.InputSource == _SOURCE_VIDEO8_TV)
{
CShowTVNumber(stVDCColor.CurrentChannel, _SHOW_CH_TV_NUMBER);
return;
}
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);
w = 3;
break;
case _INPUT_PORT_1: // DVI port --> not use
w = 3;
Textout(sDVI);
break;
case _INPUT_PORT_2: // Component port
w = 5;
Textout(sAV);
break;
case _INPUT_PORT_3: // sV port
Textout(sSV);
w = 2;
break;
case _INPUT_PORT_4: // YUV port
Textout(sYUV);
w = 3;
break;
case _INPUT_PORT_5: // TV port
Textout(sTV);
w = 2;
break;
case _INPUT_PORT_6: // YPBPR port
Textout(sYPBPR);
w = 5;
break;
case _INPUT_PORT_7: // YPBPR port
Textout(sAV2);
w = 6;
break;
}
w = 40 + w * 12;
COsdFxDrawWindow(XSTART(0), YSTART(10), XEND(w), YEND(45), tOSD_WINDOW0_STYLE);
COsdFxEnableOsd();
if(GET_PANELPOWERSTATUS() == _OFF)
CPowerPanelOn();
if (GET_LIGHTPOWERSTATUS() == _OFF)
CPowerLightPowerOn();
CTimerReactiveTimerEvent(SEC(10),COsdDispOsdTimerEvent);
}
//---------------------------------------------------------------------------
void DispIcon3x2(unsigned char x,unsigned char y,unsigned char Icon)
{
Gotoxy(x,y,BYTE_DISPLAY);
pData[0] = Icon;
pData[1] = Icon + 1;
pData[2] = Icon + 2;
CScalerWrite(_OSD_DATA_PORT_92,3,pData,_NON_AUTOINC);
Gotoxy(x,y + 1,BYTE_DISPLAY);
pData[0] = Icon + 3;
pData[1] = Icon + 4;
pData[2] = Icon + 5;
CScalerWrite(_OSD_DATA_PORT_92,3,pData,_NON_AUTOINC);
}
//---------------------------------------------------------------------------
void DrawMainIcon(unsigned char code * tMainIcon)
{
unsigned char i,x = 1;
unsigned char ucCount = tMainIcon[0];
for(i=0;i<ucCount;i++)
{
DispIcon3x2(x,1,tMainIcon[1 + i]);
x += 4;
}
}
//---------------------------------------------------------------------------
unsigned char code * GetTitle(unsigned int code * tMenuItem)
{
unsigned int code *p = (unsigned int code * )tMenuItem[1];
return (unsigned char code *)p[GET_LANGUAGE];
}
//---------------------------------------------------------------------------
unsigned char code * GetMenuItem(unsigned int code * tMenuItem,unsigned char Item)
{
unsigned int code *p = (unsigned int code * )tMenuItem[Item + 2];
return (unsigned char code *)p[GET_LANGUAGE];
}
//---------------------------------------------------------------------------
void DrawMenuItem(unsigned int code * tMenuItem)
{
unsigned char i;
unsigned char ucItemCount = (unsigned char )tMenuItem[0];
// Draw Title
CenterTextout(GetTitle(tMenuItem),16,3);
for(i=0;i<ucItemCount;i++)
{
Gotoxy(2,5 + i,BYTE_DISPLAY);
Textout(GetMenuItem(tMenuItem,i));
}
}
//---------------------------------------------------------------------------
unsigned char CurrMenuPos(unsigned char code *tMenuItem)
{
unsigned char i;
unsigned char ucCount = tMenuItem[0];
for(i=0;i<ucCount;i++)
{
if(tMenuItem[i + 1] == ucOsdState)
{
return i;
}
}
return ucCount;
}
//---------------------------------------------------------------------------
void NextMenuItem(unsigned char code *tMenuItem)
{
unsigned char ucCount = tMenuItem[0];
unsigned char ucPos = CurrMenuPos(tMenuItem);
if(ucPos >= ucCount) return;
else if(ucPos == ucCount - 1) ucOsdState = tMenuItem[1];
else ucOsdState = tMenuItem[ucPos + 2];
}
//---------------------------------------------------------------------------
void PrevMenuItem(unsigned char code *tMenuItem)
{
unsigned char ucCount = tMenuItem[0];
unsigned char ucPos = CurrMenuPos(tMenuItem);
if(ucPos >= ucCount) return;
else if(ucPos == 0) ucOsdState = tMenuItem[ucCount];
else ucOsdState = tMenuItem[ucPos];
}
//---------------------------------------------------------------------------
/*void MenuItemLR(unsigned char code *tMenuItem,unsigned char ucLR)
{
// 1 . clear old item
fClearCurrentLine(tMenuItem);
// 2. change item
if(ucLR)
{
NextMenuItem(tMenuItem);
}
else
{
PrevMenuItem(tMenuItem);
}
// 3. draw item
fDrawCurrentLine(tMenuItem);
}*/
//---------------------------------------------------------------------------
void ClearCurrentLine(unsigned char code *tMenuItem)
{
// unsigned char ucPos = CurrMenuPos(tMenuItem); //FENIX
unsigned char ucPos = fCurrMenuPos(tMenuItem); //FENIX
CLR_SLIDER(); //FENIX
OSDLine(ucPos + 5,1,31,0x1A,BYTE_COLOR);
}
//---------------------------------------------------------------------------
void DrawCurrentLine(unsigned char code *tMenuItem)
{
// unsigned char ucPos = CurrMenuPos(tMenuItem); //FENIX
unsigned char ucPos = fCurrMenuPos(tMenuItem); //FENIX
CLR_SLIDER(); //FENIX
OSDLine(ucPos + 5,1,31,0x49,BYTE_COLOR);
}
//---------------------------------------------------------------------------
// ucState
// 0 : Clear
// 1 : Select state
void MainMenuItemState(unsigned char ucItem,unsigned char ucState)
{
unsigned char x , w ,ucColor;
x = ucItem * 4 + 1;
if(ucItem == 0)
{
w = 4;
}
else
{
x -= 1;
w = 5;
}
if(ucState) ucColor = 0x49;
else ucColor = 0x13;
OSDClear(1, 2, x, w,ucColor, BYTE_COLOR);
}
//---------------------------------------------------------------------------
void DrawLanguagePage()
{
switch(stSystemData.InputSource)
{
case _SOURCE_VGA:
case _SOURCE_DVI:
DrawMenuItem(tVgaFeaturePage);
break;
case _SOURCE_VIDEO8_AV:
case _SOURCE_VIDEO8_AV2:
case _SOURCE_VIDEO8_SV:
case _SOURCE_VIDEO8_YUV:
case _SOURCE_VIDEO8_TV:
DrawMenuItem(tVideoFeaturePage);
break;
}
}
//---------------------------------------------------------------------------
void EnterSPVolume()
{
InitDialog();
OSDPosition(33 * 12,5 * 18, 65,55,0x01);
ucOsdState = _M_SP_VOLUME;
OSDClear(1, 2, 2, 3, 0x20, BYTE_COLOR);
DispIcon3x2(2,1,0x98);
SLIDER1(stOsdUserData.Volume);
COsdFxEnableOsd();
}
//---------------------------------------------------------------------------
//fenix disabl SPBright
/*void EnterSPBright()
{
InitDialog();
OSDPosition(33 * 12,5 * 18, 65,55,0x01);
OSDClear(1, 2, 2, 3, 0x20, BYTE_COLOR);
DispIcon3x2(2,1,0xb6);
ucOsdState = _M_SP_BRIGHTNESS;
SLIDER1(BRIGHTNESS_GUAGE);
COsdFxEnableOsd();
}*/
//----------------------------------------------------------------------------------------------------
void ShowChecksum(void)//cll
{
COsdFxDisableOsd();
// SetOSDDouble(OSD_DOUBLE_HEIGHT_ENABLE | OSD_DOUBLE_WIDTH_ENABLE);
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(10,10,10,10,0x01);
Gotoxy(0,0,BYTE_DISPLAY);
Textout(sCheckSum);//
//Textout(sVersion);
COsdFxEnableOsd();
CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
}
//---------------------------------------------------------------------------
/*
void DispIcon2x1(unsigned char x,unsigned char y,unsigned char Icon)
{
Gotoxy(x,y,BYTE_DISPLAY);
pData[0] = Icon;
pData[1] = Icon + 1;
CScalerWrite(_OSD_DATA_PORT_92,2,pData,_NON_AUTOINC);
}
*/
//---------------------------------------------------------------------------
//###########################################################################
//fenixadd
void MenuItemUD(unsigned char code *tMenuItem,unsigned char ucUD)
{
// 1 . clear old item
fClearCurrentLine(tMenuItem);
// 2. change item
if(ucUD)
{
fNextMenuItem(tMenuItem);
}
else
{
fPrevMenuItem(tMenuItem);
}
// 3. draw item
fDrawCurrentLine(tMenuItem);
}
//---------------------------------------------------------------------------
//fenix
void fPrevMenuItem(unsigned char code *tMenuItem)
{
unsigned char ucCount = tMenuItem[0];
unsigned char ucPos = fCurrMenuPos(tMenuItem);
if(ucPos >= ucCount) return;
else if(ucPos == 0) ucOsdState = tMenuItem[ucCount];
else ucOsdState = tMenuItem[ucPos];
}
//---------------------------------------------------------------------------
//fenix
void fNextMenuItem(unsigned char code *tMenuItem)
{
unsigned char ucCount = tMenuItem[0];
unsigned char ucPos = fCurrMenuPos(tMenuItem);
if(ucPos >= ucCount) return;
else if(ucPos == ucCount - 1) ucOsdState = tMenuItem[1];
else ucOsdState = tMenuItem[ucPos + 2];
}
//---------------------------------------------------------------------------
//fenix
void fClearCurrentLine(unsigned char code *tMenuItem)
{
unsigned char ucPos = fCurrMenuPos(tMenuItem);
CLR_SLIDER();
OSDLine(ucPos + 5,1,31,0x1A,BYTE_COLOR);
}
//---------------------------------------------------------------------------
//fenix
void fDrawCurrentLine(unsigned char code *tMenuItem)
{
unsigned char ucCount = tMenuItem[0];
unsigned char ucPos = fCurrMenuPos(tMenuItem);
if(ucPos == ucCount - 1) //FENIX
ucPos = ucPos;
else
OSDLine(ucPos + 5,1,31,0x49,BYTE_COLOR);
// OSDLine(ucPos + 3,5,12,0x4a,BYTE_COLOR);
if(menuFuncExtent[ucOsdState] != 0 && ucOsdState < 95)
ucOsdState = menuFuncExtent[ucOsdState];
// CLR_SLIDER(); //guanxi jiance
// Gotoxy(14,12,BYTE_DISPLAY);
// PrintfDec(ucPos);
// Gotoxy(14,14,BYTE_DISPLAY);
// PrintfDec(ucOsdState);
// Gotoxy(14,13,BYTE_DISPLAY);
// PrintfDec(menuFuncExtent[ucOsdState]);
}
//---------------------------------------------------------------------------
//fenix
unsigned char fCurrMenuPos(unsigned char code *tMenuItem)
{
unsigned char i;
unsigned char ucCount = tMenuItem[0];
if(menuFuncExtent[ucOsdState] != 0)
{
if(ucOsdState < 95)
fucOsdState = ucOsdState;
else
fucOsdState = menuFuncExtent[ucOsdState];
}
else
fucOsdState = ucOsdState;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -