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

📄 osdpub501.c

📁 LCD TV,uVision2 Project, (C) Keil Software
💻 C
📖 第 1 页 / 共 3 页
字号:
             break;
        case _INPUT_PORT_2:  // Component port
             Textout(sAV);
             break;
        case _INPUT_PORT_3:  // sV port
             Textout(sSV);
             break;
        case _INPUT_PORT_4:  // YUV port
             Textout(sYUV);
             break;
        case _INPUT_PORT_5:  // TV port
             Textout(sTV);
             break;
        case _INPUT_PORT_6:  // YPBPR port
             Textout(sYPBPR);
             break;
        case _INPUT_PORT_7:  // YPBPR port
             Textout(sAV2);
             break;
    }
}

//---------------------------------------------------------------------------
void ShowHint()
{
     InitDialog();
     OSDPosition(33 * 12,5 * 18, 65,65,0x01);

     Gotoxy(15,1,BYTE_DISPLAY);
     CShowInputSource(stSystemData.InputSource);

     if(ucOsdEventMsg == _SHOW_NOSIGNAL_MSG)
           CenterTextout((unsigned char code *)sNoSignal[GET_LANGUAGE],16,3);
     else if(ucOsdEventMsg == _SHOW_NOCABLE_MSG)
           CenterTextout((unsigned char code *)sNoCable[GET_LANGUAGE],16,3);
     else  CenterTextout((unsigned char code *)sNoSupport[GET_LANGUAGE],16,3);
     COsdFxEnableOsd();

     if(GET_PANELPOWERSTATUS() == _OFF)
         CPowerPanelOn();
     if (GET_LIGHTPOWERSTATUS() == _OFF)  
         CPowerLightPowerOn();
}
//---------------------------------------------------------------------------
void ShowNote()
{
    unsigned char w;

    bFirstShowNote = 0;

    if(stSystemData.InputSource == _SOURCE_VIDEO8_TV)
    {
          CShowTVNumber(stVDCColor.CurrentChannel, _SHOW_CH_TV_NUMBER);
          return;
    }

    COsdFxDisableOsd();
    SetOSDDouble(0);
    SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);
    SetRowCmds(ROW_COUNT,COL_WIDTH);
    COsdFxCodeWrite(ucCloseAllWindow);

    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x8C, THE_BYTE0);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x00, THE_BYTE1);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x20, THE_BYTE2);
    OSDPosition(30,30,4,2,0x01);
    Gotoxy(1,1,BYTE_DISPLAY);
    switch(stSystemData.InputSource)
    {
        case _INPUT_PORT_0: // VGA port
             Textout(sVGA);
             w = 3;
             break;
        case _INPUT_PORT_1:  // DVI port  --> not use
             w = 3;
             Textout(sDVI);
             break;
        case _INPUT_PORT_2:  // Component port
             w = 5;
             Textout(sAV);
             break;
        case _INPUT_PORT_3:  // sV port
             Textout(sSV);
             w = 2;
             break;
        case _INPUT_PORT_4:  // YUV port
             Textout(sYUV);
             w = 3;
             break;
        case _INPUT_PORT_5:  // TV port
             Textout(sTV);
             w = 2;
             break;
        case _INPUT_PORT_6:  // YPBPR port
             Textout(sYPBPR);
             w = 5;
             break;
        case _INPUT_PORT_7:  // YPBPR port
             Textout(sAV2);
             w = 6;
             break;
    }
    w = 40 + w * 12;
    COsdFxDrawWindow(XSTART(0), YSTART(10), XEND(w), YEND(45), tOSD_WINDOW0_STYLE);

    COsdFxEnableOsd();

    if(GET_PANELPOWERSTATUS() == _OFF)
        CPowerPanelOn();
    if (GET_LIGHTPOWERSTATUS() == _OFF)  
        CPowerLightPowerOn(); 

    CTimerReactiveTimerEvent(SEC(10),COsdDispOsdTimerEvent);
}
//---------------------------------------------------------------------------
void DispIcon3x2(unsigned char x,unsigned char y,unsigned char Icon)
{
     Gotoxy(x,y,BYTE_DISPLAY);
     pData[0] = Icon;
     pData[1] = Icon + 1;
     pData[2] = Icon + 2;
     CScalerWrite(_OSD_DATA_PORT_92,3,pData,_NON_AUTOINC);

     Gotoxy(x,y + 1,BYTE_DISPLAY);
     pData[0] = Icon + 3;
     pData[1] = Icon + 4;
     pData[2] = Icon + 5;
     CScalerWrite(_OSD_DATA_PORT_92,3,pData,_NON_AUTOINC);
}
//---------------------------------------------------------------------------
void DrawMainIcon(unsigned char code * tMainIcon)
{
     unsigned char i,x = 1;
     unsigned char ucCount = tMainIcon[0];
     for(i=0;i<ucCount;i++)
     {
          DispIcon3x2(x,1,tMainIcon[1 + i]);
          x += 4;
     }
}
//---------------------------------------------------------------------------
unsigned char code * GetTitle(unsigned int code * tMenuItem)
{
     unsigned int code *p = (unsigned int code * )tMenuItem[1];
     return (unsigned char code *)p[GET_LANGUAGE];
}
//---------------------------------------------------------------------------
unsigned char code * GetMenuItem(unsigned int code * tMenuItem,unsigned char Item)
{
     unsigned int code *p = (unsigned int code * )tMenuItem[Item + 2];
     return (unsigned char code *)p[GET_LANGUAGE];
}
//---------------------------------------------------------------------------
void DrawMenuItem(unsigned int code * tMenuItem)
{
     unsigned char i;
     unsigned char ucItemCount = (unsigned char )tMenuItem[0];

     // Draw Title
     CenterTextout(GetTitle(tMenuItem),16,3);

     for(i=0;i<ucItemCount;i++)
     {
         Gotoxy(2,5 + i,BYTE_DISPLAY);
         Textout(GetMenuItem(tMenuItem,i));
     }     
}
//---------------------------------------------------------------------------
unsigned char CurrMenuPos(unsigned char code *tMenuItem)
{
     unsigned char i;
     unsigned char ucCount = tMenuItem[0];
     for(i=0;i<ucCount;i++)
     {
         if(tMenuItem[i + 1] == ucOsdState)
         {
              return i;
         }
     }
     return ucCount;

}
//---------------------------------------------------------------------------
void NextMenuItem(unsigned char code *tMenuItem)
{

     unsigned char ucCount = tMenuItem[0];
     unsigned char ucPos = CurrMenuPos(tMenuItem);

     if(ucPos >= ucCount)           return;
     else if(ucPos == ucCount - 1)  ucOsdState = tMenuItem[1];
     else                           ucOsdState = tMenuItem[ucPos + 2];
}
//---------------------------------------------------------------------------
void PrevMenuItem(unsigned char code *tMenuItem)
{
     unsigned char ucCount = tMenuItem[0];
     unsigned char ucPos = CurrMenuPos(tMenuItem);

     if(ucPos >= ucCount)           return;
     else if(ucPos == 0)            ucOsdState = tMenuItem[ucCount];
     else                           ucOsdState = tMenuItem[ucPos];
}
//---------------------------------------------------------------------------
/*void MenuItemLR(unsigned char code *tMenuItem,unsigned char ucLR)
{
    // 1 . clear old item
    fClearCurrentLine(tMenuItem);

    // 2. change item
    if(ucLR)
    {
        NextMenuItem(tMenuItem);
    }
    else
    {
        PrevMenuItem(tMenuItem);
    }
    // 3. draw item
    fDrawCurrentLine(tMenuItem);
}*/
//---------------------------------------------------------------------------
void ClearCurrentLine(unsigned char code *tMenuItem)
{
//    unsigned char ucPos = CurrMenuPos(tMenuItem);		//FENIX
    unsigned char ucPos = fCurrMenuPos(tMenuItem);		//FENIX
	CLR_SLIDER();										//FENIX
    OSDLine(ucPos + 5,1,31,0x1A,BYTE_COLOR);
}
//---------------------------------------------------------------------------
void DrawCurrentLine(unsigned char code *tMenuItem)
{
//    unsigned char ucPos = CurrMenuPos(tMenuItem);		//FENIX
    unsigned char ucPos = fCurrMenuPos(tMenuItem);		//FENIX
	CLR_SLIDER();										//FENIX
    OSDLine(ucPos + 5,1,31,0x49,BYTE_COLOR);
}
//---------------------------------------------------------------------------
// ucState
// 0 : Clear
// 1 : Select state
void MainMenuItemState(unsigned char ucItem,unsigned char ucState)
{
   unsigned char x , w ,ucColor;
   x = ucItem * 4 + 1;
   if(ucItem == 0)
   {
      w = 4;
   }
   else
   {
      x -= 1;
      w = 5;
   }
   if(ucState)  ucColor = 0x49;
   else         ucColor = 0x13;
   OSDClear(1, 2, x, w,ucColor, BYTE_COLOR);
}
//---------------------------------------------------------------------------
void DrawLanguagePage()
{
     switch(stSystemData.InputSource)
     {
         case _SOURCE_VGA:
         case _SOURCE_DVI:
              DrawMenuItem(tVgaFeaturePage);
              break;

         case _SOURCE_VIDEO8_AV:
         case _SOURCE_VIDEO8_AV2:
         case _SOURCE_VIDEO8_SV:
         case _SOURCE_VIDEO8_YUV:
         case _SOURCE_VIDEO8_TV:
              DrawMenuItem(tVideoFeaturePage);
              break;
     }
}
//---------------------------------------------------------------------------
void EnterSPVolume()
{
     InitDialog();
     OSDPosition(33 * 12,5 * 18, 65,55,0x01);
     ucOsdState = _M_SP_VOLUME;
     OSDClear(1, 2, 2, 3, 0x20, BYTE_COLOR);
     DispIcon3x2(2,1,0x98);
     SLIDER1(stOsdUserData.Volume);
     COsdFxEnableOsd();
}
//---------------------------------------------------------------------------
//fenix disabl SPBright
/*void EnterSPBright()
{
     InitDialog();
     OSDPosition(33 * 12,5 * 18, 65,55,0x01);
     OSDClear(1, 2, 2, 3, 0x20, BYTE_COLOR);
     DispIcon3x2(2,1,0xb6);
     ucOsdState = _M_SP_BRIGHTNESS;
     SLIDER1(BRIGHTNESS_GUAGE);
     COsdFxEnableOsd();
}*/
//----------------------------------------------------------------------------------------------------
void ShowChecksum(void)//cll
{
	COsdFxDisableOsd();
//    SetOSDDouble(OSD_DOUBLE_HEIGHT_ENABLE | OSD_DOUBLE_WIDTH_ENABLE);
    SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);
    SetRowCmds(ROW_COUNT,COL_WIDTH);
    COsdFxCodeWrite(ucCloseAllWindow);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x8C, THE_BYTE0);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x00, THE_BYTE1);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x20, THE_BYTE2);
    OSDPosition(10,10,10,10,0x01);
    Gotoxy(0,0,BYTE_DISPLAY);
	
	Textout(sCheckSum);//
	//Textout(sVersion);	
 	COsdFxEnableOsd();
    CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
}
//---------------------------------------------------------------------------
/*
void DispIcon2x1(unsigned char x,unsigned char y,unsigned char Icon)
{
     Gotoxy(x,y,BYTE_DISPLAY);
     pData[0] = Icon;
     pData[1] = Icon + 1;
     CScalerWrite(_OSD_DATA_PORT_92,2,pData,_NON_AUTOINC);
}
*/
//---------------------------------------------------------------------------
//###########################################################################
//fenixadd
void MenuItemUD(unsigned char code *tMenuItem,unsigned char ucUD)
{
    // 1 . clear old item
    fClearCurrentLine(tMenuItem);
	// 2. change item
    if(ucUD)
    {
        fNextMenuItem(tMenuItem);
    }
    else
    {
        fPrevMenuItem(tMenuItem);
    }
    // 3. draw item
    fDrawCurrentLine(tMenuItem);
}
//---------------------------------------------------------------------------
//fenix
void fPrevMenuItem(unsigned char code *tMenuItem)
{  
	 unsigned char ucCount = tMenuItem[0];
     unsigned char ucPos = fCurrMenuPos(tMenuItem);
	 
     if(ucPos >= ucCount)           return;
     else if(ucPos == 0)            ucOsdState = tMenuItem[ucCount];
     else                           ucOsdState = tMenuItem[ucPos];
}
//---------------------------------------------------------------------------
//fenix
void fNextMenuItem(unsigned char code *tMenuItem)
{	 

	unsigned char ucCount = tMenuItem[0];
    unsigned char ucPos = fCurrMenuPos(tMenuItem);


     if(ucPos >= ucCount)           return;
     else if(ucPos == ucCount - 1)  ucOsdState = tMenuItem[1];
     else                           ucOsdState = tMenuItem[ucPos + 2];
}
//---------------------------------------------------------------------------
//fenix
void fClearCurrentLine(unsigned char code *tMenuItem)
{	
    unsigned char ucPos = fCurrMenuPos(tMenuItem);
	CLR_SLIDER();
    OSDLine(ucPos + 5,1,31,0x1A,BYTE_COLOR);
}
//---------------------------------------------------------------------------
//fenix
void fDrawCurrentLine(unsigned char code *tMenuItem)
{
	unsigned char ucCount = tMenuItem[0];
    unsigned char ucPos = fCurrMenuPos(tMenuItem);
	
	if(ucPos == ucCount - 1)											//FENIX
    		ucPos = ucPos;
	else
	OSDLine(ucPos + 5,1,31,0x49,BYTE_COLOR);
//    OSDLine(ucPos + 3,5,12,0x4a,BYTE_COLOR);
	if(menuFuncExtent[ucOsdState] != 0 && ucOsdState < 95)
		ucOsdState = menuFuncExtent[ucOsdState];
	
//	CLR_SLIDER();	//guanxi jiance
//    Gotoxy(14,12,BYTE_DISPLAY);
//    PrintfDec(ucPos);	
//    Gotoxy(14,14,BYTE_DISPLAY);
//    PrintfDec(ucOsdState);
//   Gotoxy(14,13,BYTE_DISPLAY);
//	PrintfDec(menuFuncExtent[ucOsdState]);
}
//---------------------------------------------------------------------------
//fenix
unsigned char fCurrMenuPos(unsigned char code *tMenuItem)
{
     unsigned char i;
     unsigned char ucCount = tMenuItem[0];
	 if(menuFuncExtent[ucOsdState] != 0)
	 {
	 	if(ucOsdState < 95)
	  	 fucOsdState = ucOsdState;
		else
	  	 fucOsdState = menuFuncExtent[ucOsdState];
	}
	 else
	 	 fucOsdState = ucOsdState;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -