📄 osd_001.c
字号:
CTextOutEx(s4_3,COL(16),ROW(2));
if(GET_DISPLAYMODE() == _DISPMODE_FULL)
{
Gotoxy(4,2,BYTE_DISPLAY);
OutputChar(0x56);
}
else
{
Gotoxy(15,2,BYTE_DISPLAY);
OutputChar(0x56);
}
}
//------------------------------------------------------------------------------
/*
void DrawVolumeMenu(void)
{
Clear();
CCenterTextout(sVolume[GET_LANGUAGE()], ROW(1), 0, 23);
OSDSlider1(ROW(2), 3, 16, GET_VOLUME(), 100,0xe0);
}
*/
//------------------------------------------------------------------------------
void DrawResetMenu(void)
{
Clear();
CCenterTextout(sReset[GET_LANGUAGE()], ROW(0), 0, 25);
CTextOutEx(sYes,COL(6),ROW(2));
CTextOutEx(sNo,COL(16),ROW(2));
Gotoxy(14,2,BYTE_DISPLAY);
OutputChar(0x56);
}
//------------------------------------------------------------------------------
void DrawExitMenu(void)
{
Clear();
CCenterTextout(sExit[GET_LANGUAGE()], ROW(0), 0, 25);
}
//------------------------------------------------------------------------------
void Draw001MenuItem(BYTE ucItem,BYTE ucState)
{
ucState = ucState;
// draw menu item
switch(ucItem)
{
case _MI_001_BRIGHTNESS: DrawBrightnessMenu(); break;
case _MI_001_CONTRAST: DrawContrastMenu(); break;
case _MI_001_HUE: DrawHueMenu(); break;
case _MI_001_SATURATION: DrawSaturationMenu(); break;
case _MI_001_AV1_AV2: DrawSourceA1A2Menu(); break;
case _MI_001_LEFT_RIGHT: DrawLeftRightChangeMenu(); break;
case _MI_001_UP_DOWN: DrawUpDownChangeMenu(); break;
case _MI_001_DISPLAY_RATIO: DrawDisplayRadioMenu(); break;
case _MI_001_RESET: DrawResetMenu(); break;
case _MI_001_EXIT: DrawExitMenu(); break;
}
}
//------------------------------------------------------------------------------
void Adjust001Contrast(BYTE ucMode)
{
// ucMode : _INC or _DEC
SET_KEYREPEATENABLE();
stConBriData.Contrast = ValueInRangeChange(0, 100, stConBriData.Contrast, _NON_LOOP | ucMode);
CAdjustContrast();
ucOsdEventMsg = _SAVE_EE_COLORPROC0_MSG;
OSDSlider1(ROW(2), 3, 16, stConBriData.Contrast, 100,0xe0);
}
//------------------------------------------------------------------------------
void Adjust001Brightness(BYTE ucMode)
{
// ucMode : _INC or _DEC
SET_KEYREPEATENABLE();
stConBriData.Brightness = ValueInRangeChange(0, 100, stConBriData.Brightness, _NON_LOOP | ucMode);
CAdjustBrightness();
ucOsdEventMsg = _SAVE_EE_COLORPROC0_MSG;
OSDSlider1(ROW(2), 3, 16, stConBriData.Brightness, 100,0xe0);
}
//------------------------------------------------------------------------------
void Adjust001Hue(BYTE ucMode)
{
// ucMode : _INC or _DEC
SET_KEYREPEATENABLE();
stHueSatData.Hue = ValueInRangeChange(0, 100, stHueSatData.Hue, _NON_LOOP | ucMode);
if(bSourceVideo())
{
gmi_CAdjustVDCHue(GET_HUE());
}
else
{
CAdjustYpbprhue(GET_HUE());
}
ucOsdEventMsg = _SAVE_EE_HUE_SAT_DATA_MSG;
OSDSlider1(ROW(2), 3, 16, GET_HUE(), 100,0xe0);
}
//------------------------------------------------------------------------------
void Adjust001Saturation(BYTE ucMode)
{
// ucMode : _INC or _DEC
SET_KEYREPEATENABLE();
stHueSatData.Saturation = ValueInRangeChange(0, 100, stHueSatData.Saturation, _NON_LOOP | ucMode);
if(bSourceVideo())
{
CVideoSetSaturation(GET_SATURATION());
}
else
{
CAdjustYpbprSaturation(GET_SATURATION());
}
ucOsdEventMsg = _SAVE_EE_HUE_SAT_DATA_MSG;
OSDSlider1(ROW(2), 3, 16, GET_SATURATION(), 100,0xe0);
}
void Adjust001Source(BYTE ucMode)
{
// ucMode : _INC or _DEC
ucMode = ucMode;
CChangeSourceAvSv();
}
//------------------------------------------------------------------------------
void Adjust001LeftRight(ucMode)
{
ucMode = ucMode;
if(GET_SCREEN_LR())
{
bLR = 0;
SET_SCREEN_LR(0);
}
else
{
bLR = 1;
SET_SCREEN_LR(1);
}
CEepromSaveSystemData();
DrawLeftRightChangeMenu();
}
//------------------------------------------------------------------------------
void Adjust001UpDown(ucMode)
{
ucMode = ucMode;
if(GET_SCREEN_UD())
{
bUD = 0;
SET_SCREEN_UD(0);
}
else
{
bUD= 1;
SET_SCREEN_UD(1);
}
CEepromSaveSystemData();
DrawUpDownChangeMenu();
}
//------------------------------------------------------------------------------
void Adjust001DisplayRatio(ucMode)
{
ucMode = ucMode ;
switch(GET_DISPLAYMODE())
{
case _DISPMODE_FULL:
SET_DISPLAYMODE(_DISPMODE_43);
break;
case _DISPMODE_43:
SET_DISPLAYMODE(_DISPMODE_FULL);
break;
}
//CLR_CLEAR_OSD_EN();
COsdDispOsdTimerEvent();
CEepromSaveSystemData();
ucTVSyncFailCount = 250;
CModeResetMode();
DrawDisplayRadioMenu();
}
//------------------------------------------------------------------------------
void Exit001Menu(void)
{
COsdDispOsdTimerEvent();
bOSDTimeOut = 1;
}
//---------------------------------------------------------------------------
/*
void Adjust001Volume(BYTE ucMode)
{
// ucMode : _INC or _DEC
SET_KEYREPEATENABLE();
stAudioData.Volume = ValueInRangeChange(0, 100, stAudioData.Volume, _NON_LOOP | ucMode);
CSetVolume();
ucOsdEventMsg = _SAVE_EE_AUDIO_DATA_MSG;
OSDSlider1(ROW(2), 3, 16, stAudioData.Volume, 100,0xe0);
}
*/
//---------------------------------------------------------------------------
void OSDSlider1(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 + 8, color, THE_BYTE2); // Set Slider Attribute. 4 extra columns for space/numbers/space
bound = length * value;
Gotoxy(col,row,THE_BYTE1);
OutputChar(0x0f);
OutputChar(0x04); // Left Border
// OutputChar(0x21); // Left Border
for (i = 1; i <= length; i++)
{
if (bound)
{
if(bound >= range)
{
c = 0x0B;
bound = bound - range;
}
else
{
color = (bound << 4) / range;
bound = 0;
if (4 > color) c = 0x06;
else if (7 > color) c = 0x07;
else if (10 > color) c = 0x08;
else if (13 > color) c = 0x09;
else c = 0x0a;
}
}
else
{
c = 0x05;
}
OutputChar(c);
}
OutputChar(0x0C); // Right Border
CShowNumber2(value, 0); //值显示在右边
OutputChar(0x0D);
if (value < 100)
OutputChar(0x00);
}
//-----------------------------------------------------------
// ucNumber: 0~65535
// ucUserDefLong: 0 --> 自动计算ucNumber长度,有几位输出几位
// 1~5 --> 输出1~5位,不足用0补
// exp: ucNumber = 12
// ucUserDefLong = 0 Output: 12
// ucUserDefLong = 3 Output: 012
//-----------------------------------------------------------
void CShowNumber2(const WORD ucNumber, BYTE ucUserDefLong)
{
BYTE uctemp[5];
uctemp[4] = (ucNumber / 10000) % 10;
uctemp[3] = (ucNumber / 1000) % 10;
uctemp[2] = (ucNumber / 100) % 10;
uctemp[1] = (ucNumber / 10) % 10;
uctemp[0] = ucNumber % 10;
if (ucUserDefLong)
ucUserDefLong -= 1;
else
{
for(pData[15] = 4; pData[15]>0;pData[15]--)
{
if(uctemp[pData[15]] != 0)
break;
}
ucUserDefLong = pData[15];
}
CScalerSendAddr(_OSD_DATA_PORT_92 , _NON_AUTOINC);
do
{
*(&MCU_SCA_INF_DATA_FFF5) = (uctemp[ucUserDefLong]+'0');
}
while(ucUserDefLong--);
}
//---------------------------------------------------------------------------
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -