⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_osdfac.c

📁 LCD TV,uVision2 Project, (C) Keil Software
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -