📄 osdproc003.c
字号:
OSDPosition(6 * 12-39, 4 * 18, 10, 0, 0x03);
if (GET_AUDIO_MUTE()) // Mute on
COsdLoad1BitFont(FntMute, 0x7A, 6, tFntVolumeCharWidth);
else
COsdLoad1BitFont(FntVolume, 0x7A, 6, tFntVolumeCharWidth);
// Display Volume/Mute icon
Gotoxy(0, 1, BYTE_DISPLAY);
OutputChar(0x7A);
OutputChar(0x7B);
OutputChar(0x7C);
Gotoxy(0, 2, BYTE_DISPLAY);
OutputChar(0x7D);
OutputChar(0x7E);
OutputChar(0x7F);
COsdFxDrawWindow(0,16, //WORD usXStart,WORD usYStart,
54,52, //WORD usXEnd,WORD usYEnd,
tMainWindowStyle); //BYTE *pStyle)
COsdFxEnableOsd();
bOSDTimeOut = 0;
// ucAudioState = 1;
if (GET_AUDIO_MUTE()) // Mute on
{
CTimerCancelTimerEvent(COsdDispOsdTimerEvent);
}
else
{
CTimerReactiveTimerEvent(SEC(5), COsdDispOsdTimerEvent);
}
bOSDTimeOut = 0;
bOSDOnScreen = 1;
}
//-----------------------------------------------------------------------
#if(_VIDEO_TV_SUPPORT)
#if(_SHOW_TV_NO_SIGNAL)
#define _H_POS_MAX ((DWORD)((Panel[ucPanelSelect]->DHWidth - _DIALOG_WIDTH)/4 - 12))
#define _V_POS_MAX ((DWORD)((Panel[ucPanelSelect]->DVHeight - _DIALOG_HEIGHT)/4 - 6))
#define _H_DOUBLE_POS_MAX ((DWORD)((Panel[ucPanelSelect]->DHWidth - _OSD_DOUBLE_WIDTH(_DIALOG_WIDTH))/4 - 12))
#define _V_DOUBLE_POS_MAX ((DWORD)((Panel[ucPanelSelect]->DVHeight - _OSD_DOUBLE_HEIGHT(_DIALOG_HEIGHT))/4 - 6))
void OSDMove(WORD usOsdActWidth, WORD usOsdActHeight, WORD ucHPos, WORD ucVPos, BYTE ucPar)
{
usOsdActWidth = _OSD_HPOSITION_OFFSET +
(DWORD)(Panel[ucPanelSelect]->DHStartPos / 4) + ucHPos;
usOsdActHeight = _OSD_VPOSITION_OFFSET +
(DWORD)(Panel[ucPanelSelect]->DVStartPos / 4) + ucVPos;
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] = usOsdActHeight >> 1;
pData[1] = (UINT8) (usOsdActWidth >> 2);
pData[2] = ((UINT8) (usOsdActWidth & 0x0003) << 6) | ((usOsdActHeight & 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 DispIcon(BYTE x, BYTE y, BYTE ucIconBaseAddr)
{
Gotoxy(x,y,BYTE_DISPLAY);
pData[0] = ucIconBaseAddr;
pData[1] = ucIconBaseAddr + 1;
pData[2] = ucIconBaseAddr + 2;
CScalerWrite(_OSD_DATA_PORT_92,3,pData,_NON_AUTOINC);
Gotoxy(x,y + 1,BYTE_DISPLAY);
pData[0] = ucIconBaseAddr + 3;
pData[1] = ucIconBaseAddr + 4;
pData[2] = ucIconBaseAddr + 5;
CScalerWrite(_OSD_DATA_PORT_92,3,pData,_NON_AUTOINC);
}
//-----------------------------------------------------------------------
#define _ON_SCREEN_STATE 1
#define _MOVE_STATE 2
void CCheckTVSignal(void)
{
static WORD ucPosX = 0;
static WORD ucPosY = 0;
static BYTE ucCount = 0;
static BYTE ucDir = 0;
ucCount++;
if (ucCount > 50)
ucCount = 0;
else
return;
if (_GET_INPUT_SOURCE() != _SOURCE_VIDEO_TV || bOSDOnScreen == 1 || ucOsdState != _MI_MENU_NONE)
return;
if (bTVNoSignal)
{
switch(ucSignalOSDState)
{
case 0:
LoadCHIFont(_LF_OTHER);
CShowNoSignal();
CTimerCancelTimerEvent(COsdDispOsdTimerEvent);
ucSignalOSDState = _ON_SCREEN_STATE;
break;
case _ON_SCREEN_STATE:
if (GET_OSD_SIZE())
{
ucPosX = _H_DOUBLE_POS_MAX/2;
ucPosY = _V_DOUBLE_POS_MAX/2;
}
else
{
ucPosX = _H_POS_MAX/2;
ucPosY = _V_POS_MAX/2;
}
ucDir = _BIT1;
ucDir |= _BIT5;
ucSignalOSDState = _MOVE_STATE;
break;
case _MOVE_STATE:
if (GET_OSD_SIZE())
{
if (ucPosX >= _H_DOUBLE_POS_MAX) ucDir = (ucDir & 0xf0) | _BIT0; // --
if (ucPosY >= _V_DOUBLE_POS_MAX) ucDir = (ucDir & 0x0f) | _BIT4; // --
}
else
{
if (ucPosX >= _H_POS_MAX) ucDir = (ucDir & 0xf0) | _BIT0; // --
if (ucPosY >= _V_POS_MAX) ucDir = (ucDir & 0x0f) | _BIT4; // --
}
if (ucPosX == 0) ucDir = (ucDir & 0xf0) | _BIT1; // ++
if (ucPosY == 0) ucDir = (ucDir & 0x0f) | _BIT5; // ++
if (ucDir & _BIT0) ucPosX--;
if (ucDir & _BIT1) ucPosX++;
if (ucPosY < 2) ucPosY = 2;
if (ucDir & _BIT4) ucPosY-=2;
if (ucDir & _BIT5) ucPosY+=2;
if (GET_OSD_SIZE())
OSDMove(_OSD_DOUBLE_WIDTH(_DIALOG_WIDTH), _OSD_DOUBLE_HEIGHT(_DIALOG_HEIGHT), ucPosX, ucPosY, 0x03);
else
OSDMove(_DIALOG_WIDTH, _DIALOG_HEIGHT, ucPosX, ucPosY, 0x03);
break;
}
}
else
{
if (ucSignalOSDState)
COsdFxDisableOsd();
}
}
#endif // #if(_SHOW_TV_NO_SIGNAL)
#endif // #if(_VIDEO_TV_SUPPORT)
//$$ Added by AndyLiu20080619
/*
#if(_LOGO_ENABLE)
BYTE code tLogoOsdMap[] =
{
10, // Row Count
LOBYTE(0x300),HIBYTE(0x300),
36, // Row 1 char count
36, // Row 2 char count
36, // Row 3 char count
36, // Row 4 char count
36, // Row 5 char count
36, // Row 6 char count
36, // Row 7 char count
36, // Row 8 char count
36, // Row 9 char count
36, // Row 10 char count
};
//----------------------------------------------------------------
BYTE code tLogo[] =
{
//Charcter command Byte 1
0x50,0x0B, //Row : 0
0x00,0x01,0x02,0x00,_bb_,33,_nn_, // 1_02_0
0x50,0x2F, //Row : 1
0x00,0x03,0x04,0x05,0x00,0x06,0x07,0x79,0x08,0x00,_bb_,27,_nn_, // 1_12_13_1 5_16_1NONE8_1
0x50,0x53, //Row : 2
0x00,0x00,0x09,0x0A,0x00,0x00,0x0B,0x79,0x08,0x00,_bb_,27,_nn_, // 2_23_2 6_2NONE8_1
0x50,0x77, //Row : 3
0x00,_bb_,6,0x0B,0x79,0x08,0x00,_bb_,27,_nn_, // 6_2NONE8_1
0x50,0x9B, //Row : 4
0x0C,0x0D,0x0E,0x0F,0x00,0x00,0x0B,0x79,0x08,0x10,0x11,0x12,0x13,0x14,0x15,0x00,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x00,0x00,_nn_, //0_41_42_43_4 6_2NONE8_19_410_411_412_413_414_4 16_417_418_419_420_421_422_423_424_424_426_427_428_429_430_431_432_433_4
0x50,0xBF, //Row : 5
0x00,0x00,0x27,0x28,0x00,0x00,0x0B,0x79,0x08,0x29,0x2A,0x2B,0x2C,0x00,0x00,0x00,0x2D,0x2E,0x2F,0x00,0x00,0x30,0x31,0x00,_bb_,4,0x79,0x32,0x33,0x00,0x34,0x35,0x36,0x00,0x00,_nn_, // 2_53_5 6_2NONE8_19_510_511_512_5 16_517_518_5 21_522_5 NONE28_529_5 31_532_533_5
0x50,0xE3, //Row : 6
0x00,0x00,0x37,0x28,0x00,0x00,0x0B,0x79,0x38,0x39,0x3A,0x3B,0x00,_bb_,4,0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x00,_bb_,4,0x79,0x43,0x00,0x00,0x00,0x44,0x45,0x00,0x00,_nn_, // 2_63_5 6_2NONE8_69_610_611_6 16_617_618_619_620_621_622_6 NONE28_6 32_633_6
0x51,0x07, //Row : 7
0x00,0x00,0x37,0x28,0x00,0x00,0x0B,0x79,0x46,0x47,0x48,0x49,0x4A,0x00,0x00,0x00,0x4B,0x4C,0x4D,0x4E,0x00,0x4F,0x42,0x00,_bb_,4,0x79,0x50,0x00,0x00,0x00,0x44,0x79,0x00,0x00,_nn_, // 2_63_5 6_2NONE8_79_710_711_712_7 16_717_718_719_7 21_722_6 NONE28_7 32_6NONE
0x51,0x2B, //Row : 8
0x00,0x00,0x37,0x28,0x00,0x00,0x0B,0x79,0x08,0x00,0x51,0x52,0x53,0x54,0x00,0x00,0x55,0x56,0x00,0x00,0x57,0x58,0x59,0x00,_bb_,4,0x79,0x5A,0x00,0x00,0x00,0x44,0x79,0x00,0x00,_nn_, // 2_63_5 6_2NONE8_1 10_811_812_813_8 16_817_8 20_821_822_8 NONE28_8 32_6NONE
0x51,0x4F, //Row : 9
0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x62,0x67,0x68,0x60,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x5B,0x72,0x62,0x73,0x74,0x00,0x75,0x76,0x62,0x77,0x78,_nn_, //0_91_92_93_94_95_96_97_98_99_910_911_97_913_914_95_916_917_918_919_920_921_922_923_924_90_926_97_928_929_9 31_932_97_934_935_9
0x51,0x73, //Row : 21
0x00,_bb_,52, //
_end_,
};
//----------------------------------------------------------------
void CDrawLogo(BYTE ucDouble)
{
// BYTE x;
// BYTE y;
BYTE ucFont = 0x00;
COsdFxDisableOsd();
CAdjustBackgroundColor(0x00,0x00,0xff);
SetOsdMap(tLogoOsdMap);
COsdColorPalette(tPALETTE_0);
COsdFxCodeWrite(ucCloseAllWindow);
COsdLoad1BitFontWidth12(FntLogo, 0x00, 0x80);
CScalerSetBit(_OVERLAY_CTRL_6C, 0x23, ((0x00) << 2));
// Init osd
// insert code to here
OSDClear(ROW(0), HEIGHT(10), COL(0), WIDTH(36), 0x8C, BYTE_ATTRIB);
OSDClear(ROW(0), HEIGHT(10), COL(0), WIDTH(36), 0x80, BYTE_COLOR);
OSDPosition(_LOGO_WIDTH, _LOGO_HEIGHT, 45, 54, 0x03);
COsdFxCodeWrite(tLogo);
COsdFxEnableOsd();
CPowerPanelOn();
CTimerCancelTimerEvent(COsdDispOsdTimerEvent); //andy 080604
//CPowerLightPowerOn();
//CTimerDelayXms(100);
// CTimerDelayXms(1000);
// CTimerDelayXms(1000);
// CTimerDelayXms(1000);
// CTimerDelayXms(1000);
}
//-------------------------------------------------------------------------------------------------------------
void CPattenChange(void)
{
BYTE ucPatten[9];
BYTE ucTemp;
// 0x0A
ucPatten[0] = tPALETTE_0[30];//0x33;
ucPatten[1] = tPALETTE_0[31];//0x6A;
ucPatten[2] = tPALETTE_0[32];//0xA5;
// 0x0B
ucPatten[3] = tPALETTE_0[33];//0x94;
ucPatten[4] = tPALETTE_0[34];//0xBD;
ucPatten[5] = tPALETTE_0[35];//0x35;
// 0x0C
ucPatten[6] = tPALETTE_0[36];//0xF3;
ucPatten[7] = tPALETTE_0[37];//0x94;
ucPatten[8] = tPALETTE_0[38];//0x28;
for(ucTemp = 0; ucTemp < 9; ucTemp++)
{
ucPatten[ucTemp] -= 0x28;
}
while(ucPatten[6] != 0xFF)
{
CScalerSetByte(_OVERLAY_LUT_ADDR_6E, 0x80 | 0x1E);
CScalerWrite(_COLOR_LUT_PORT_6F, 3, &ucPatten, _NON_AUTOINC);
CScalerSetByte(_OVERLAY_LUT_ADDR_6E, 0x00);
CTimerDelayXms(30);
for(ucTemp = 0; ucTemp < 9; ucTemp++)
{
ucPatten[ucTemp]++;
}
}
while(ucPatten[8])
{
CScalerSetByte(_OVERLAY_LUT_ADDR_6E, 0x80 | 0x1E);
CScalerWrite(_COLOR_LUT_PORT_6F, 3, &ucPatten, _NON_AUTOINC);
CScalerSetByte(_OVERLAY_LUT_ADDR_6E, 0x00);
CTimerDelayXms(30);
for(ucTemp = 0; ucTemp < 9; ucTemp++)
{
ucPatten[ucTemp]--;
}
}
}
#endif
*/
//$$ Added by AndyLiu20080619
//----------------------------------------------------------------------------------------------------
void CNotUse(void)
{
CChangeSourceAvSv();
CAdjustMZHueSat(0);
CEepromSaveHueSatData();
CKeyScanReadyTimerEvent();
CKeyRepeatEnableTimerEvent();
CAutoDoAutoConfig();
CAutoDoWhiteBalance();
CVdcIsLocked();
CEepromSaveOsdUserData();
CEepromSaveBriConData();
CEepromSaveColorTempData();
CEepromSaveTvData();
CScalerWriteAmount(0,0,0,0);
SetOsdMap(0);
SetOSDRamAddress();
DirectWOSDRam(0, 0, 0, 0);
SetRowCmds();
Gotoxy(0, 0, 0);
OutputChar(0);
COsdFxCloseWindow(0);
ValueInRangeChange(0, 0, 0, 0);
Textout(0);
StrLen(0);
OSDPosition(0, 0, 0, 0, 0);
OSDClear(0, 0, 0, 0, 0,0);
COsdFxCodeWrite(0);
COsdFxEnableOsd();
COsdFxDisableOsd();
COsdFxDrawWindow(0, 0, 0, 0, 0);
COsdFxGetAdcClockRange(0);
InitBurnIn();
BurnInRun();
CKeyScanReady();
ChangeSourceHandler();
CSetPWM(0, 0);
CTextOutRightAlign(0,0,0);
//OSDSlider(0, 0, 0, 0, 0,0);
COsdCtrlGetHPosition();
COsdCtrlGetVPosition();
COsdCtrlGetClock();
COsdCtrlGetPhase();
GetNextLanguage(0);
GetPrevLanguage(0);
//CDoReset();
AdjustMenuItem(0,0,0);
CEnable();
CVideoEnable();
CVgaEnable();
CHDMIEnable();
CDviEnable();
CTVEnable();
Draw2bit3x2Icon(0,0,0);
#if(_VIDEO_TV_SUPPORT)
CSaveChannelSkip(0,0);
CSaveChannelColorType(0,0);
CChangeChannel(0);
CTuningCurrentChannel(0,0);
CTvAutoSearch();
CManualSearch(0,0);
#if(_FM_DEVICE)
CChangeFM();
#endif
CShowTimer();
CSaveChannelSoundType(stTvInfo.CurChn, 0);
CSaveChannelSoundType(stTvInfo.CurChn, 0);
#endif
CCenterTextout(0,ROW(1),COL(0),0);
//COsdLoad1BitFont(0, 0x00, 123, 0);
CYPbPrPorch_LevelCheck();
//CShowNumber(0,0,0);
MMenuNoneEnterSubMenu();
Exit001Menu();
DrawSourceMenu();
CShortCutBright();
Draw001MainMenu();
DispIcon(0,0,0);
}
//--------------------------------------------------
#endif //#if(_OSD_TYPE == _OSD003)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -