📄 lcd_osd.~c
字号:
ucOSD_Item_Index0 = (1 == ucOSD_Item_Index0) ? Item_Num : (ucOSD_Item_Index0 - 1);
// Move window 6
OSD_Window( 6, 150, 282, (54 + (ucOSD_Item_Index0-1)*(29+4)), (84 + (ucOSD_Item_Index0-1)*(29+4))
, 1, 1, 14, 251, 0, 1, 25);
}
else
{
// Change to next/previous main page
//OSD_Window( 5, 150, 282, (54 + (ucOSD_Page_Index-1)*(29+4)), (84 + (ucOSD_Page_Index-1)*(29+4))
// , 0, 0, 14, 251, 0, 1, 0);
if (NOTIFY_RIGHT_KEY == Pess_Key)
ucOSD_Page_Index = GetNextPageIdx(ucOSD_Page_Index);
else
ucOSD_Page_Index = GetPrevPageIdx(ucOSD_Page_Index);
}
}
void Show_Mode(void)
{
unsigned int idata usStart_Addr;
unsigned char idata ucTemp;
OSD_Line(3, 12, 15, 0, 1); // Attribute
usStart_Addr = FONT_SELECT_ADDRESS;
//The address of the first character Cn1 in Row n = FONT_SELECT_ADDRESS + Row0_length + Row1_length +...+Row(n-1)_length
for(ucTemp = 1; ucTemp < 3+1; ucTemp ++)
usStart_Addr += Row_Info[0][ucTemp];
Data[0] = 5;
Data[1] = Y_INC;
Data[2] = OSD_ADDR_MSB_90;
Data[3] = (unsigned char)( (((usStart_Addr + 12) & 0x0fff) >> 8 ) | 0x50);
Data[4] = (unsigned char)( (usStart_Addr + 12) & 0x00ff);
Data[5] = 0;
RTDWrite(Data);
switch (ucMode_Curr)
{
/*
case MODE_NOSIGNAL: // NO SIGNAL
OSD_Line(11, 2, 24, CHINESE_T <= (stGUD1.FUNCTION & 0x07) ? 0x80 | COLOR_BLUE : COLOR_BLUE, 0);
if ((SOURCE_VGA == (stGUD1.INPUT_SOURCE & 0x07)) && (VGA_ONLINE != bVGA_CONNECT))
RTDOSDW(OSD_REMK_TABLE[0][stGUD1.FUNCTION & 0x07]);
else
RTDOSDW(OSD_REMK_TABLE[1][stGUD1.FUNCTION & 0x07]);
break;
case MODE_UNDEFINED0:
case MODE_UNDEFINED1:
case MODE_NOSUPPORT:
OSD_Line(11, 2, 24, CHINESE_T <= (stGUD1.FUNCTION & 0x07) ? 0x80 | COLOR_BLUE : COLOR_BLUE, 0);
RTDOSDW(OSD_REMK_TABLE[2][stGUD1.FUNCTION & 0x07]);
break;
case MODE_VIDEO60HZ: // NTSC 60HZ
OSD_Line(11, 2, 24, COLOR_BLUE, 0); // Set characters to blue
RTDCodeW(Remark_Mode);
switch(ucAV_Mode)
{
case 0x01: RTDCodeW(Remark_V60_0); break;
case 0x11: RTDCodeW(Remark_V60_1); break;
case 0x21: RTDCodeW(Remark_V60_2); break;
case 0x31: RTDCodeW(Remark_V60_3); break;
case 0x41: RTDCodeW(Remark_V60_4); break;
case 0x03: RTDCodeW(Remark_V60_5); break;
}
break;
case MODE_VIDEO50HZ: // PAL 50HZ
OSD_Line(11, 2, 24, COLOR_BLUE, 0); // Set characters to blue
RTDCodeW(Remark_Mode);
switch(ucAV_Mode)
{
case 0x02: RTDCodeW(Remark_V50_0); break;
case 0x12: RTDCodeW(Remark_V50_1); break;
case 0x22: RTDCodeW(Remark_V50_2); break;
case 0x32: RTDCodeW(Remark_V50_3); break;
case 0x03: RTDCodeW(Remark_V50_5); break;
}
break;
case MODE_YUV60HZ:
case MODE_YUV50HZ:
break;
*/
default :
//OSD_Line(11, 2, 24, COLOR_BLUE, 0); // Set characters to blue
{
unsigned int usHwid;
unsigned char ucTemp;
usHwid = usIPH_ACT_WID;
if (SOURCE_VGA == (stGUD1.INPUT_SOURCE & 0x07))
{
if (MODE_1600x1200x60HZ == ucMode_Curr)
{
usHwid = 1600;
}
else
{
if (MODE_1600x1200x60HZ > ucMode_Curr)
{
if (MODE_1280x0960x60HZ <= ucMode_Curr)
usHwid = 1280;
else if (MODE_1152x0864x75HZ <= ucMode_Curr)
usHwid = 1152;
}
else
{
if (MODE_USER1600x1200 == ucMode_Curr)
usHwid = 1600;
else if (MODE_USER1280x960 <= ucMode_Curr)
usHwid = 1280;
else if (MODE_USER1152x864 <= ucMode_Curr)
usHwid = 1152;
}
}
}
//RTDCodeW(Remark_Mode);
Data[0] = 12;
Data[1] = N_INC;
Data[2] = OSD_DATA_92;
ucTemp = usHwid / 100;
if (10 <= ucTemp)
{
Data[3] = _1_;
Data[4] = ucTemp - 10 + _0_;
}
else
{
Data[3] = 0;
Data[4] = ucTemp + _0_;
}
ucTemp = usHwid - ((unsigned int)100 * ucTemp);
Data[5] = ucTemp / 10;
Data[6] = ucTemp - (10 * Data[5]) + _0_;
Data[5] = Data[5] + _0_;
Data[7] = 0x0e;
ucTemp = usIPV_ACT_LEN / 100;
Data[12] = usIPV_ACT_LEN - ((unsigned int)100 * ucTemp);
if (10 <= ucTemp)
{
Data[0] = 13;
Data[8] = _1_;
Data[9] = ucTemp - 10 + _0_;
Data[10] = Data[12] / 10;
Data[11] = Data[12] - (10 * Data[10]) + _0_;
Data[10] = Data[10] + _0_;
Data[12] = 0x00;
Data[13] = 0;
}
else
{
Data[8] = ucTemp + _0_;
Data[9] = Data[12] / 10;
Data[10] = Data[12] - (10 * Data[9]) + _0_;
Data[9] = Data[9] + _0_;
Data[11] = 0x00;
Data[12] = 0;
}
Data[12] = 0;
RTDWrite(Data);
// Show Refresh Rate
//RTDCodeW(Remark_Rate);
Data[0] = 7;
Data[1] = N_INC;
Data[2] = OSD_DATA_92;
Data[3] = ucRefresh / 10;
Data[4] = ucRefresh - (Data[3] * 10) + _0_;
Data[3] = Data[3] + _0_;
Data[5] = 0x27;
Data[6] = 0x59;
Data[7] = 0;
RTDWrite(Data);
if (10 <= ucTemp)
OSD_Line( 3, 21, 1, 0x8c, 0);
else
OSD_Line( 3, 20, 1, 0x8c, 0);
}
break;
}
}
void Page0_Left_Right_Key(unsigned char Key)
{
if(NOTIFY_RIGHT_KEY == Key)
{
if (SOURCE_VGA == (stGUD1.INPUT_SOURCE & 0x07) && MODE_NOSIGNAL != ucMode_Curr && MODE_NOSUPPORT != ucMode_Curr)
{
if (MODE_0640x0350x70HZ <= ucMode_Curr && MODE_0720x0400x70HZ >= ucMode_Curr)
{
stMUD.CLOCK = 128;
Set_H_Position();
Set_Clock();
Save_MUD(ucMode_Curr);
if (ERROR_INPUT == Auto_Phase())
ucMode_Curr = MODE_OSDFORCE;
if (ERROR_INPUT == Auto_Position()) ucMode_Curr = MODE_OSDFORCE;
}
else
{
if (ERROR_INPUT == Auto_Config()) ucMode_Curr = MODE_OSDFORCE;
//if (ERROR_INPUT == Auto_Phase()) ucMode_Curr = MODE_OSDFORCE;
}
}
}
}
void Page0_Enter_Key(void)
{
// Change to OSD Main Page 1 and Main Program will show it
ucOSD_Page_Index = 1;
ucOSD_Item_Index0 = 0;
ucOSD_Item_Index1 = 0;
ucOSD_Item_Index2 = 0;
}
void Page0_LR_Key(void)
{
// Go to Hidden Function Page
if (SOURCE_VGA == (stGUD1.INPUT_SOURCE & 0x07))
{
ucOSD_Page_Index = 8;
ucOSD_Item_Index0 = 1;
ucOSD_Item_Index1 = 0;
ucOSD_Item_Index2 = 0;
}
}
void Page1_Enter_Key(void)
{
if (0 == ucOSD_Item_Index0)
{
if (MODE_NOSIGNAL != ucMode_Curr && MODE_NOSUPPORT != ucMode_Curr)
{
// Select and highlight the first item
ucOSD_Item_Index0 = PAGE1_ITEM_CONTRAST;
ucOSD_Item_Index1 = 0;
//Enable window 6 and draw it
OSD_Window( 6, 150, 282, 54, 84, 1, 1, 14, 251, 0, 1, 25);
}
}
else
{
if (ucOSD_Item_Index1)
{
// Leave the item and reset text color
switch (ucOSD_Item_Index0)
{
case PAGE1_ITEM_CONTRAST :
// Redraw slider and make the number become black.
OSD_Slider(5, 31, 17, stGUD0.CONTRAST, 100, 4, 14);
break;
case PAGE1_ITEM_BRIGHT :
// Redraw slider and make the number become black.
OSD_Slider(7, 31, 17, stGUD0.BRIGHT, 100, 4, 14);
break;
case PAGE1_ITEM_COLORTEMP :
//Set words color to black
OSD_Line( 11, 36 + (ucOSD_Item_Index1-1)*(4+1), 4, 0x40, 2);
break;
case PAGE1_ITEM_GAMMA :
//Set words color to black
OSD_Line( 9, 36 + (ucOSD_Item_Index1-1)*(2+1), 1, 0x40, 2);
break;
}
ucOSD_Item_Index1 = 0;
}
else
{
if (PAGE1_ITEM_EXIT == ucOSD_Item_Index0)
{
// Disable highlight window 6
OSD_Window( 6, 150, 282, (54 + (ucOSD_Item_Index0-1)*(29+4)), (84 + (ucOSD_Item_Index0-1)*(29+4))
, 0, 0, 14, 251, 0, 1, 0);
// De-select the page item and disable the hightlight window
ucOSD_Item_Index0 = 0;
ucOSD_Item_Index1 = 0;
}
else if (MODE_NOSIGNAL != ucMode_Curr && MODE_NOSUPPORT != ucMode_Curr)
{
switch (ucOSD_Item_Index0)
{
case PAGE1_ITEM_CONTRAST :
ucOSD_Item_Index1 = 1;
// Redraw slider and make the number become Red.
OSD_Slider(5, 31, 17, stGUD0.CONTRAST, 100, 2, 14);
break;
case PAGE1_ITEM_BRIGHT :
ucOSD_Item_Index1 = 1;
// Redraw slider and make the number become Red.
OSD_Slider(7, 31, 17, stGUD0.BRIGHT, 100, 2, 14);
break;
case PAGE1_ITEM_COLORTEMP :
ucOSD_Item_Index1 = ((stGUD1.INPUT_SOURCE & 0x18) >> 3) + 1;
//Here we can only change the color in Byte 2 for necessary words
OSD_Line( 11, 36 + (ucOSD_Item_Index1-1)*(4+1), 4, 0x20, 2);
break;
case PAGE1_ITEM_GAMMA :
ucOSD_Item_Index1 = ((stGUD1.FUNCTION >> 5) & 0x03) + 1;
//Here we can only change the color in Byte 2 for necessary words
OSD_Line( 9, 36 + (ucOSD_Item_Index1-1)*(2+1), 1, 0x20, 2);
break;
case PAGE1_ITEM_RGBADJ :
OSD_Window( 6, 150, 282, (54 + (ucOSD_Item_Index0-1)*(29+4)), (84 + (ucOSD_Item_Index0-1)*(29+4))
, 0, 0, 14, 251, 0, 1, 0);
ucOSD_Item_Index1 = PAGE1B_ITEM_RED;
ucOSD_Item_Index2 = 0;
OSD_Proc_B(NOTIFY_SHOW); // Show the sub-page
break;
}
}
}
}
}
void Page1_Left_Right_Key(unsigned char Key)
{
if (ucOSD_Item_Index1)
{
switch (ucOSD_Item_Index0)
{
case PAGE1_ITEM_CONTRAST :
Bright_Contrast_Adjust(&stGUD0.CONTRAST,Key);
OSD_Slider(5, 31, 17, stGUD0.CONTRAST, 100, 2, 14);
#if(ANALOG_CONTRAST)
if((stGUD1.INPUT_SOURCE & 0x07) == SOURCE_VGA)
SetADC_Gain();
else
Set_Bright_Contrast();
#else
Set_Bright_Contrast();
#endif
Save_GUD0();
break;
case PAGE1_ITEM_BRIGHT :
Bright_Contrast_Adjust(&stGUD0.BRIGHT,Key);
OSD_Slider(7, 31, 17, stGUD0.BRIGHT, 100, 2, 14);
Set_Bright_Contrast();
Save_GUD0();
break;
case PAGE1_ITEM_COLORTEMP:
if(NOTIFY_RIGHT_KEY == Key)
ucOSD_Item_Index1 = (ucOSD_Item_Index1 == 4) ? 4 : ucOSD_Item_Index1 + 1;
else
ucOSD_Item_Index1 = (ucOSD_Item_Index1 == 1) ? 1 : ucOSD_Item_Index1 - 1;
stGUD1.INPUT_SOURCE = (stGUD1.INPUT_SOURCE & 0xe7 ) | ((ucOSD_Item_Index1 - 1) << 3);
//Here we can only change the color in Byte 2 for necessary words
OSD_Line( 11, 36, 20, 0x40, 2); //Set color to black
OSD_Line( 11, 36 + (ucOSD_Item_Index1-1)*(4+1), 4, 0x20, 2);
Set_Bright_Contrast();
Save_GUD1();
break;
case PAGE1_ITEM_GAMMA :
if (NOTIFY_RIGHT_KEY == Key)
{
if (4 <= ucOSD_Item_Index1)
break;
ucOSD_Item_Index1 = ucOSD_Item_Index1 + 1;
}
else
{
if (1 >= ucOSD_Item_Index1)
break;
ucOSD_Item_Index1 = ucOSD_Item_Index1 - 1;
}
stGUD1.FUNCTION = (stGUD1.FUNCTION & 0x9f) | ((ucOSD_Item_Index1 - 1) << 5);
//Here we can only change the color in Byte 2 for necessary words
OSD_Line( 9, 36, 14, 0x40, 2); //Set color to black
OSD_Line( 9, 36 + (ucOSD_Item_Index1-1)*(2+1), 1, 0x20, 2);
Set_Gamma();
Save_GUD1();
break;
}
}
else
{
Osd_Change_Item(Key,PAGE1_ITEM_NUM);
}
}
void Page1_Show(void)
{
Show_Osd_Page(0,Page1_Atb,0);
//Set Window 5 to select "Colour"
OSD_Window( 5, 10, 136, 54, 84, 1, 1, 14, 251, 0, 1, 25);
if (MODE_NOSIGNAL == ucMode_Curr || MODE_NOSUPPORT == ucMode_Curr)
{
ucOSD_Item_Index0 = 0;
ucOSD_Item_Index1 = 0;
}
OSD_Slider(5, 31, 17, stGUD0.CONTRAST, 100, 4, 14);
OSD_Slider(7, 31, 17, stGUD0.BRIGHT, 100, 4, 14);
switch (ucOSD_Item_Index0)
{
case PAGE1_ITEM_CONTRAST :
break;
case PAGE1_ITEM_BRIGHT :
break;
case PAGE1_ITEM_GAMMA :
break;
case PAGE1_ITEM_RGBADJ :
OSD_Window( 6, 150, 282, (54 + (ucOSD_Item_Index0-1)*(29+4)), (84 + (ucOSD_Item_Index0-1)*(29+4))
, 1, 1, 14, 251, 0, 1, 25);
break;
}
}
void Page1B_Enter_Key(void)
{
ucOSD_Page_Index = 7;
if (PAGE1B_ITEM_EXIT == ucOSD_Item_Index1)
{
// De-select the page item and disable the hightlight window
OSD_Window( 6, 150, 282, (54 + (ucOSD_Item_Index0-1)*(29+4)), (84 + (ucOSD_Item_Index0-1)*(29+4))
, 0, 0, 14, 251, 0, 1, 0);
ucOSD_Item_Index1 = 0;
ucOSD_Item_Index2 = 0;
}
else
{
if (ucOSD_Item_Index2)
{
ucOSD_Item_Index2 = 0; // Leave the item
switch (ucOSD_Item_Index1)
{
case PAGE1B_ITEM_RED :
OSD_Slider(5, 31, 17, stGUD0.RTD_R_CONTRAST, 100, 4, 2);
break;
case PAGE1B_ITEM_GREEN :
OSD_Slider(7, 31, 17, stGUD0.RTD_G_CONTRAST, 100, 4, 12);
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -