📄 osdproc003.c
字号:
CShowNote();
break;
case _OE_PIC_CHANGE_U_D:
ChangePicUD();
break;
case _OE_PIC_CHANGE_L_R:
ChangePicLR();
break;
case _OE_SC_TIMER_CHANGE:
COsdDispOsdTimerEvent();
if(_GET_POWER_DOWN_TIME() == 0x04)
{
_SET_POWER_DOWN_TIME(0x00);
}
else
{
_SET_POWER_DOWN_TIME(_GET_POWER_DOWN_TIME()+1);
}
CEepromSaveTvData();//ucOsdEventMsg = _SAVE_EE_TV_DATA_MSG;
ucAutoPowerDownTime = _GET_POWER_DOWN_TIME() * 30;//andyliu
if (0 == ucAutoPowerDownTime) // Auto power down time off
{
ucAutoPowerDownTime = 0xff;
}
CShowTimerMode();
ucMinuteCount = 0; // Reset count
break;
default:
break;
}
ucOsdEventMsg = _NONE_MSG;
}
//----------------------------------------------------------------------------------------------------
void COsdDispFirstTimeLoadFont(void)
{
COsdFxDisableOsd();
COsdColorPalette(tPALETTE_0);
SetOsdMap(tUserMenuOsdMap);
// Load global font
// insert code to here
COsdLoad1BitFont(FntGlobal,0x00,0x5F,tGlobalCharWidth);
CScalerLoadHardwareVLCFont(FntMainIcon,0x80 * 2);
//Load Languege Font
LoadLanguageFont();
}
//----------------------------------------------------------
void LoadLanguageFont()
{
// load language font
switch(GET_LANGUAGE())
{
/*#if(LNG_CHI_S_EN)
//if(GET_LANGUAGE() == LNG_CHI_S)
case LNG_CHI_S:
COsdLoad1BitFontWidth12(FntCH_S,0x80,44);
break;
#endif*/
#if(LNG_JAP_EN)
case LNG_JAP:
COsdLoad1BitFont(FntJap,0x80,0x57,tFntJapCharWidth);
break;
#endif
#if(LNG_KOR_EN)
case LNG_KOR:
COsdLoad1BitFont(FntKor,0x80,0x69,tFntKorCharWidth);
break;
#endif
#if(LNG_RUS_EN)
case LNG_RUS:
COsdLoad1BitFont(FntRus,0x80,0x21,tFntRusCharWidth);
break;
#endif
}
}
//-----------------------------------------------------------
void COsdLoad1BitFontWidth12(BYTE *pFont,WORD usOffset,BYTE ucFntCount)
{
BYTE i;
CScalerLoadHardwareVLCFont(pFont, usOffset);
if(usOffset > 0x100) return;
if(usOffset + ucFntCount > 0x100)
ucFntCount = 0x100 - usOffset;
for(i=0;i<ucFntCount;i++)
{
SetCharWdith(usOffset,12);
usOffset ++;
}
}
//---------------------------------------------------------------------------
void LoadCHI_S_Font(BYTE ucPage)
{
BYTE *pFont;
COsdLoad1BitFontWidth12(FntPublic_CHI_S,0x80,0x20);
switch(ucPage)
{
case _LF_COLOR_PAGE: pFont = FntColorPage_S; break;
case _LF_ADJUST_PAGE: pFont = FntAdjustPage_S; break;
case _LF_TV_PAGE: pFont = FntTVPage_S; break;
case _LF_OSD_PAGE: pFont = FntOSDPage_S; break;
case _LF_FUNC_PAGE: pFont = FntFuncPage_S; break;
case _LF_SOUND_PAGE: pFont = FntSoundPage_S; break;
case _LF_OTHER: pFont = FntOther_CHI_S; break;
}
COsdLoad1BitFontWidth12(pFont,0xA0,0x22);
}
//-----------------------------------------------------------
void LoadCHI_T_Font(BYTE ucPage)
{
BYTE *pFont;
COsdLoad1BitFontWidth12(FntPublic_CHI_T,0x80,0x20);
switch(ucPage)
{
case _LF_COLOR_PAGE: pFont = FntColorPage_T; break;
case _LF_ADJUST_PAGE: pFont = FntAdjustPage_T; break;
case _LF_TV_PAGE: pFont = FntTVPage_T; break;
case _LF_OSD_PAGE: pFont = FntOSDPage_T; break;
case _LF_FUNC_PAGE: pFont = FntFuncPage_T; break;
case _LF_SOUND_PAGE: pFont = FntSoundPage_T; break;
case _LF_OTHER: pFont = FntOther_CHI_T; break;
}
COsdLoad1BitFontWidth12(pFont,0xA0,0x22);
}
//-----------------------------------------------------------
void LoadCHIFont(BYTE ucPage)
{
if(GET_LANGUAGE() == LNG_CHI_S)
{
LoadCHI_S_Font(ucPage);
}
else if(GET_LANGUAGE() == LNG_CHI_T)
{
LoadCHI_T_Font(ucPage);
}
}
//-----------------------------------------------------------
void COsdDispOsdTimerEvent(void)
{
COsdFxDisableOsd();
ucOsdState = _MI_MENU_NONE;
#if(_VIDEO_TV_SUPPORT)
#if(_SLEEP_FUNC)
bOSDOnScreen = 0;
#endif
#if(_SLEEP_FUNC)
if(_ACTIVE_STATE == ucCurrState && (0xff == ucAutoPowerDownTime) || (0 == _GET_POWER_DOWN_TIME()))
#endif
#else
if(_ACTIVE_STATE == ucCurrState)
#endif
{
bDrawMute = 1;
}
}
//-----------------------------------------------------------
BYTE CFoundKeyMsgToOsdEvent(SKeyToOsdEvent *tMsgTable)
{
BYTE i;
if(ucKeyMessage == _NONE_KEY_MESSAGE)
{
//ucOsdEventMsg = _NONE_MSG;
return 0;
}
i = 0;
while(1)
{
if(tMsgTable[i].KeyMessage == _NONE_KEY_MESSAGE)
{
//ucOsdEventMsg = _NONE_MSG;
// End flag
return 1;
}
if(ucKeyMessage == tMsgTable[i].KeyMessage)
{
ucOsdEventMsg = tMsgTable[i].OsdEvent;
return 0;
}
i++;
}
return 1;
}
//---------------------------------------------------------------------------
void CShortCutKeyMsg(void)
{
if (ucOsdEventMsg >= _OE_CHANGE_SOURCE)
{
if (!CTVEnable() && ucOsdEventMsg >= _OE_SC_CH_DEC) // Only for TV
ucOsdEventMsg = _NONE_MSG;
else
COsdDispOsdTimerEvent();
}
}
//---------------------------------------------------------------------------
void CCoverKeyMsgToOsdEvent(SKeyToOsdEvent *tMsgTable,BYTE bUserPublicKeyEvnet)
{
bit bFoundPublic = 1;
if(tMsgTable != NULL)
bFoundPublic = CFoundKeyMsgToOsdEvent(tMsgTable);
if(bFoundPublic && bUserPublicKeyEvnet)
{
CFoundKeyMsgToOsdEvent(tKOPublic);
CShortCutKeyMsg();
}
}
//---------------------------------------------------------------------------
void InitOsdFrame(void)
{
COsdFxDisableOsd();
SetOsdMap(tUserMenuOsdMap);
COsdFxCodeWrite(ucCloseAllWindow);
CScalerSetBit(_OVERLAY_CTRL_6C, 0x23, ((stOsdUserData.OsdBlending & 0x07) << 2));
// Init osd
// insert code to here
OSDClear(ROW(0), HEIGHT(18), COL(0), WIDTH(46), 0x8C, BYTE_ATTRIB);
OSDClear(ROW(0), HEIGHT(18), COL(0), WIDTH(46), 0x00, BYTE_DISPLAY);
OSDClear(ROW(0), HEIGHT(18), COL(0), WIDTH(46), 0x40, BYTE_COLOR);
}
//----------------------------------------------------------------------------------------------------
#define _SLIDER_BEGIN 0x04
void OSDSlider(BYTE row, BYTE col, BYTE length, BYTE value, BYTE range,BYTE 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(_SLIDER_BEGIN); // Left Border
for (i = 1; i <= length; i++)
{
if (bound)
{
if(bound >= range)
{
c = _SLIDER_BEGIN + 7;
bound = bound - range;
}
else
{
color = (bound << 4) / range;
bound = 0;
if (4 > color) c = _SLIDER_BEGIN + 2;
else if (7 > color) c = _SLIDER_BEGIN + 3;
else if (10 > color) c = _SLIDER_BEGIN + 4;
else if (13 > color) c = _SLIDER_BEGIN + 5;
else c = _SLIDER_BEGIN + 6;
}
}
else
{
c = _SLIDER_BEGIN + 1;
}
OutputChar(c);
}
OutputChar(_SLIDER_BEGIN + 8); // Right Border
CShowNumber(col + length + 2, row,value);
}
//---------------------------------------------------------------------------
void CShowNoSignal(void)
{
COsdFxDisableOsd();
SetOSDDouble(0);
COsdFxCodeWrite(ucCloseAllWindow);
COsdFxDrawWindow(XSTART(0), YSTART(0), XEND(348), YEND(72), tOSD_WINDOW0_STYLE);
OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x8c, BYTE_ATTRIB);
OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x00, BYTE_DISPLAY);
OSDClear(0,ROW_COUNT,0,COL_WIDTH,0x00,BYTE_COLOR);
OSDClear(1,1,0,COL_WIDTH,0xF0,BYTE_COLOR);
OSDPosition(348,72,50,50,0x01);
CCenterTextout(sNoSignal[GET_LANGUAGE()], ROW(1), 1, 24);
COsdFxDrawWindow(XSTART(0), YSTART(0), XEND(348), YEND(72), tOSD_WINDOW7_STYLE);
OSDPosition(344, 122, 53, 55, 0x03);
COsdFxEnableOsd();
//$$ Added by AndyLiu20080619
// COsdFxDisableOsd();
// COsdDispFirstTimeLoadFont();
// CDrawLogo(0x03);
// COsdFxEnableOsd();
//$$ Added by AndyLiu20080619
}
//---------------------------------------------------------------------------
/*
void CShowReset(void)
{
InitOsdFrame();
SetOSDDouble((GET_OSD_SIZE() ? 0x03 : 0x00) | OSD_WINDOWCHAR_BLENDING);
// Draw Top Line
OSDLine(ROW(1), COL(1), LENGTH(25), 0xA6, THE_BYTE0);
OSDLine(ROW(1), COL(1), LENGTH(25), 0xA4, THE_BYTE1);
OSDLine(ROW(1), COL(1), LENGTH(25), 0x11, THE_BYTE2);
// Draw Bottom Line
OSDLine(ROW(5), COL(1), LENGTH(25), 0xA6, THE_BYTE0);
OSDLine(ROW(5), COL(1), LENGTH(25), 0xA4, THE_BYTE1);
OSDLine(ROW(5), COL(1), LENGTH(25), 0x11, THE_BYTE2);
OSDLine(ROW(3), COL(1), LENGTH(45), 0x10, BYTE_COLOR);
// Draw Window
COsdFxDrawWindow(0,0, //WORD usXStart,WORD usYStart,
_DIALOG_WIDTH,_DIALOG_HEIGHT, //WORD usXEnd,WORD usYEnd,
tMainWindowStyle); //BYTE *pStyle)
// OSDPosition(_DIALOG_WIDTH,_DIALOG_HEIGHT,50,50,0x03);
if (GET_OSD_SIZE())
OSDPosition(_OSD_DOUBLE_WIDTH(_DIALOG_WIDTH), _OSD_DOUBLE_HEIGHT(_DIALOG_HEIGHT), 50, 50, 0x03);
else
OSDPosition(_DIALOG_WIDTH, _DIALOG_HEIGHT, 50, 50, 0x03);
CCenterTextout(sReset[GET_LANGUAGE()],ROW(3),1,25);
COsdFxEnableOsd();
COsdFxDisableOsd();
SetOSDDouble((GET_OSD_SIZE() ? 0x03 : 0x00) | OSD_WINDOWCHAR_BLENDING);
SetOsdMap(t001MenuOsdMap);
COsdFxCodeWrite(ucCloseAllWindow);
OSDClear(ROW(0), HEIGHT(4), COL(0), WIDTH(25), 0x8C, BYTE_ATTRIB);
OSDClear(ROW(0), HEIGHT(4), COL(0), WIDTH(25), 0x00, BYTE_DISPLAY);
OSDClear(ROW(0), HEIGHT(4), COL(0), WIDTH(25), 0x40, BYTE_COLOR);
CTextOutEx(sReset[GET_LANGUAGE()],COL(10),ROW(1));
COsdFxDrawWindow(0,0, //0,0, //WORD usXStart,WORD usYStart,
300,65, //450,150, //WORD usXEnd,WORD usYEnd,
tMainWindowStyle); //BYTE *pStyle)
OSDPosition(70,20,31,83,0x03);
COsdFxEnableOsd();
bOSDTimeOut = 0;
CTimerReactiveTimerEvent(SEC(1), COsdDispOsdTimerEvent);
}
*/
void CShowAutoAdjust(void)
{
InitOsdFrame();
SetOSDDouble((GET_OSD_SIZE() ? 0x03 : 0x00) | OSD_WINDOWCHAR_BLENDING);
// Draw nosignal & set osd position
// Draw Top Line
OSDLine(ROW(1), COL(1), LENGTH(25), 0xA6, THE_BYTE0);
OSDLine(ROW(1), COL(1), LENGTH(25), 0xA4, THE_BYTE1);
OSDLine(ROW(1), COL(1), LENGTH(25), 0x11, THE_BYTE2);
// Draw Bottom Line
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -