📄 lcd_osdfac.c
字号:
#define __FAC_LCD_OSD__
#include "Header\Include.h"
#if(FACTORY_MENU_EN)
//-----------------------------------------------------------
void COsdFacHandler()
{
switch(ucOsdState)
{
case FAC_AUTO_COLOR:
case FAC_RESET:
case FAC_ADC_OFFSET:
case FAC_ADC_GAIN:
case FAC_9300K:
case FAC_6500K:
case FAC_5800K:
case FAC_SRGB:
case FAC_USER:
case FAC_BRIGHTNESS:
case FAC_CONTRAST:
case FAC_BURIN_IN:
case FAC_AUTO_CONFIG:
case FAC_EXIT:
FMMainProc();
break;
case FAC_OFFSET_R:
case FAC_OFFSET_G:
case FAC_OFFSET_B:
case FAC_OFFSET_RETURN:
case FAC_GAIN_R:
case FAC_GAIN_G:
case FAC_GAIN_B:
case FAC_GAIN_RETURN:
case FAC_9300_R:
case FAC_9300_G:
case FAC_9300_B:
case FAC_9300_RETURN:
case FAC_6500_R:
case FAC_6500_G:
case FAC_6500_B:
case FAC_6500_RETURN:
case FAC_5800_R:
case FAC_5800_G:
case FAC_5800_B:
case FAC_5800_RETURN:
case FAC_SRGB_R:
case FAC_SRGB_G:
case FAC_SRGB_B:
case FAC_SRGB_RETURN:
case FAC_USER_R:
case FAC_USER_G:
case FAC_USER_B:
case FAC_USER_RETURN:
FMColorProc();
break;
case FAC_OFFSET_R_ADJ:
case FAC_OFFSET_G_ADJ:
case FAC_OFFSET_B_ADJ:
case FAC_GAIN_R_ADJ:
case FAC_GAIN_G_ADJ:
case FAC_GAIN_B_ADJ:
case FAC_9300_R_ADJ:
case FAC_9300_G_ADJ:
case FAC_9300_B_ADJ:
case FAC_6500_R_ADJ:
case FAC_6500_G_ADJ:
case FAC_6500_B_ADJ:
case FAC_5800_R_ADJ:
case FAC_5800_G_ADJ:
case FAC_5800_B_ADJ:
case FAC_SRGB_R_ADJ:
case FAC_SRGB_G_ADJ:
case FAC_SRGB_B_ADJ:
case FAC_USER_R_ADJ:
case FAC_USER_G_ADJ:
case FAC_USER_B_ADJ:
FMColorAdjProc();
break;
case FAC_SUB_BRIGHT_ADJ:
FMBrightAdjProc();
break;
case FAC_SUB_CONTRAST_ADJ:
FMContrastAdjProc();
break;
case FAC_SUB_BURNIN_ADJ:
FMBurnInAdjProc();
break;
}
// In factory mode : not clear osd
if(ucOsdState >= FAC_AUTO_COLOR)
CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
}
//-----------------------------------------------------------
void EnterFactoryMenu()
{
ucOsdState = FAC_AUTO_COLOR;
CAdjustColorPalette(tFacPALETTE_0);
//Draw
SetOSDRamAddress(FAC_ROW_COUNT,FAC_COL_WIDTH,FONT_BASE_ADDRESS);
SetRowCmds(FAC_ROW_COUNT,FAC_COL_WIDTH);
COsdFxCodeWrite(ucCloseAllWindow);
// Init OSD Attrib & Clear Display & Set Color
OSDClear(0, FAC_ROW_COUNT, 0, FAC_COL_WIDTH, 0x8C, BYTE_ATTRIB); // Set as 1bit
OSDClear(0, FAC_ROW_COUNT, 0, FAC_COL_WIDTH, 0x00, BYTE_DISPLAY); // Clear Display
OSDClear(0, FAC_ROW_COUNT, 0, 12, 0x71, BYTE_COLOR);
OSDClear(0, FAC_ROW_COUNT, 12,18, 0x7B, BYTE_COLOR);
// Output Menu Item
Gotoxy(1,0,BYTE_DISPLAY);
Textout(sFacAutoColor);
Gotoxy(1,1,BYTE_DISPLAY);
Textout(sFacReset);
Gotoxy(1,3,BYTE_DISPLAY);
Textout(sFacADCOffset);
Gotoxy(1,4,BYTE_DISPLAY);
Textout(sFacADCGain);
Gotoxy(1,5,BYTE_DISPLAY);
Textout(sFac9300K);
Gotoxy(1,6,BYTE_DISPLAY);
Textout(sFac6500K);
Gotoxy(1,7,BYTE_DISPLAY);
Textout(sFac5800K);
Gotoxy(1,8,BYTE_DISPLAY);
Textout(sFacsRGB);
Gotoxy(1,9,BYTE_DISPLAY);
Textout(sFacUser);
Gotoxy(1,10,BYTE_DISPLAY);
Textout(sFacBright);
Gotoxy(1,11,BYTE_DISPLAY);
Textout(sFacContrast);
Gotoxy(1,12,BYTE_DISPLAY);
Textout(sFacBurinIn);
Gotoxy(1,13,BYTE_DISPLAY);
Textout(sFacAutoConfig);
Gotoxy(1,14,BYTE_DISPLAY);
Textout(sFacExit);
Gotoxy(12,2,BYTE_DISPLAY);
OutputChar('R');
Gotoxy(16,2,BYTE_DISPLAY);
OutputChar('G');
Gotoxy(20,2,BYTE_DISPLAY);
OutputChar('B');
Gotoxy(24,3,BYTE_DISPLAY);
Textout(sFacReturn);
Gotoxy(24,4,BYTE_DISPLAY);
Textout(sFacReturn);
Gotoxy(24,5,BYTE_DISPLAY);
Textout(sFacReturn);
Gotoxy(24,6,BYTE_DISPLAY);
Textout(sFacReturn);
Gotoxy(24,7,BYTE_DISPLAY);
Textout(sFacReturn);
Gotoxy(24,8,BYTE_DISPLAY);
Textout(sFacReturn);
Gotoxy(24,9,BYTE_DISPLAY);
Textout(sFacReturn);
FMOutputAllData();
FMItemState(1);
OSDPosition(30 * 12,15 * 18,5,5,0x01);
COsdFxEnableOsd();
}
//-----------------------------------------------------------
void FMOutputBurnInState()
{
OSDLine(12, 12, 5, 0x00, BYTE_DISPLAY);
Gotoxy(12,12,BYTE_DISPLAY);
if(GET_BURNIN_STATE() == BURNIN_ON) Textout(sFacOn);
else Textout(sFacOff);
}
//-----------------------------------------------------------
void FMOutputAllData()
{
unsigned char i;
//output adc data
OUTPUT_OFFSET_R();
OUTPUT_OFFSET_G();
OUTPUT_OFFSET_B();
OUTPUT_GAIN_R();
OUTPUT_GAIN_G();
OUTPUT_GAIN_B();
// output color tmep value
for(i=0;i<5;i++)
{
SET_COLOR_TEMP_TYPE(i);
CEepromLoadColorTempData();
Gotoxy(12,5 + i,BYTE_DISPLAY);
PrintfDec(stColorTempData.ColorTemp[_RED]);
Gotoxy(16,5 + i,BYTE_DISPLAY);
PrintfDec(stColorTempData.ColorTemp[_GREEN]);
Gotoxy(20,5 + i,BYTE_DISPLAY);
PrintfDec(stColorTempData.ColorTemp[_BLUE]);
}
OUTPUT_BIRGHT();
OUTPUT_CONTRAST();
FMOutputBurnInState();
}
//-----------------------------------------------------------
void FMItemState(unsigned char state) // 1 : select state
{
unsigned char y;
unsigned char color;
y = ucOsdState - FAC_AUTO_COLOR;
if(ucOsdState >= FAC_ADC_OFFSET) y++;
if(state) color = 0x74;
else color = 0x71;
OSDLine(y, 0, 12, color, BYTE_COLOR);
}
//-----------------------------------------------------------
void FMMainProc()
{
switch(ucKeyMessage)
{
case VK_MENU: FMMainMenu(); break;
case VK_LEFT: FMMainLR(1); break;
case VK_RIGHT: FMMainLR(0); break;
}
}
//-----------------------------------------------------------
void FMMainMenu()
{
FMItemState(0); // clear select state
// Enter Sub Item
switch(ucOsdState)
{
case FAC_AUTO_COLOR:
CAutoDoWhiteBalance();
FMOutputAllData();
FMItemState(1);
break;
case FAC_RESET:
DoReset();
//ucOsdState = FAC_RESET;
FMOutputAllData();
FMItemState(1);
break;
case FAC_ADC_OFFSET:
ucOsdState = FAC_OFFSET_R;
SUBITEM_STATE1(COL(12),ROW(3),3);
break;
case FAC_ADC_GAIN:
ucOsdState = FAC_GAIN_R;
SUBITEM_STATE1(COL(12),ROW(4),3);
break;
case FAC_9300K:
FMLoadColorTmp();
ucOsdState = FAC_9300_R;
SUBITEM_STATE1(COL(12),ROW(5),3);
break;
case FAC_6500K:
FMLoadColorTmp();
ucOsdState = FAC_6500_R;
SUBITEM_STATE1(COL(12),ROW(6),3);
break;
case FAC_5800K:
FMLoadColorTmp();
ucOsdState = FAC_5800_R;
SUBITEM_STATE1(COL(12),ROW(7),3);
break;
case FAC_SRGB:
FMLoadColorTmp();
ucOsdState = FAC_SRGB_R;
SUBITEM_STATE1(COL(12),ROW(8),3);
break;
case FAC_USER:
FMLoadColorTmp();
ucOsdState = FAC_USER_R;
SUBITEM_STATE1(COL(12),ROW(9),3);
break;
case FAC_BRIGHTNESS:
ucOsdState = FAC_SUB_BRIGHT_ADJ;
SUBITEM_STATE2(COL(12),ROW(10),3);
break;
case FAC_CONTRAST:
ucOsdState = FAC_SUB_CONTRAST_ADJ;
SUBITEM_STATE2(COL(12),ROW(11),3);
break;
case FAC_BURIN_IN:
ucOsdState = FAC_SUB_BURNIN_ADJ;
SUBITEM_STATE2(COL(12),ROW(12),3);
break;
case FAC_AUTO_CONFIG:
CAutoDoAutoConfig();
FMItemState(1);
break;
case FAC_EXIT:
ucOsdState = _MENU_NONE;
COsdFxDisableOsd(); // Clear OSD
break;
}
}
//-----------------------------------------------------------
void FMMainLR(unsigned char LR)
{
// Before select item change clear select
FMItemState(0);
// change
ucOsdState = ValueInRangeChange(FAC_AUTO_COLOR,FAC_EXIT,ucOsdState,LR,1);
//after select item change draw select
FMItemState(1);
FMLoadColorTmp();
}
//-----------------------------------------------------------
void FMLoadColorTmp()
{
switch(ucOsdState)
{
case FAC_9300K:
SET_COLOR_TEMP_TYPE(_CT_9300);
CEepromLoadColorTempData();
CAdjustContrast();
break;
case FAC_6500K:
SET_COLOR_TEMP_TYPE(_CT_6500);
CEepromLoadColorTempData();
CAdjustContrast();
break;
case FAC_5800K:
SET_COLOR_TEMP_TYPE(_CT_5800);
CEepromLoadColorTempData();
CAdjustContrast();
break;
case FAC_SRGB:
SET_COLOR_TEMP_TYPE(_CT_SRGB);
CEepromLoadColorTempData();
CAdjustContrast();
break;
case FAC_USER:
SET_COLOR_TEMP_TYPE(_CT_USER);
CEepromLoadColorTempData();
CAdjustContrast();
break;
}
}
//-----------------------------------------------------------
void FMColorProc()
{
switch(ucKeyMessage)
{
case VK_MENU: FMColorMenu(); break;
case VK_LEFT: FMColorLR(1); break;
case VK_RIGHT: FMColorLR(0); break;
}
}
//-----------------------------------------------------------
void FMColorMenu()
{
// Enter Adjust page
switch(ucOsdState)
{
case FAC_OFFSET_R:
SUBITEM_STATE2(12,3,3);
ucOsdState = FAC_OFFSET_R_ADJ;
break;
case FAC_OFFSET_G:
SUBITEM_STATE2(16,3,3);
ucOsdState = FAC_OFFSET_G_ADJ;
break;
case FAC_OFFSET_B:
SUBITEM_STATE2(20,3,3);
ucOsdState = FAC_OFFSET_B_ADJ;
break;
case FAC_OFFSET_RETURN:
CLR_SUBITEM(24,3,6);
ucOsdState = FAC_ADC_OFFSET;
FMItemState(1);
break;
case FAC_GAIN_R:
SUBITEM_STATE2(12,4,3);
ucOsdState = FAC_GAIN_R_ADJ;
break;
case FAC_GAIN_G:
SUBITEM_STATE2(16,4,3);
ucOsdState = FAC_GAIN_G_ADJ;
break;
case FAC_GAIN_B:
SUBITEM_STATE2(20,4,3);
ucOsdState = FAC_GAIN_B_ADJ;
break;
case FAC_GAIN_RETURN:
CLR_SUBITEM(24,4,6);
ucOsdState = FAC_ADC_GAIN;
FMItemState(1);
break;
case FAC_9300_R:
SUBITEM_STATE2(12,5,3);
ucOsdState = FAC_9300_R_ADJ;
break;
case FAC_9300_G:
SUBITEM_STATE2(16,5,3);
ucOsdState = FAC_9300_G_ADJ;
break;
case FAC_9300_B:
SUBITEM_STATE2(20,5,3);
ucOsdState = FAC_9300_B_ADJ;
break;
case FAC_9300_RETURN:
CLR_SUBITEM(24,5,6);
ucOsdState = FAC_9300K;
FMItemState(1);
break;
case FAC_6500_R:
SUBITEM_STATE2(12,6,3);
ucOsdState = FAC_6500_R_ADJ;
break;
case FAC_6500_G:
SUBITEM_STATE2(16,6,3);
ucOsdState = FAC_6500_G_ADJ;
break;
case FAC_6500_B:
SUBITEM_STATE2(20,6,3);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -