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

📄 osdproc003.c

📁 RTD2662板卡源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
	OSDLine(ROW(5), COL(1), LENGTH(25), 0xA6, THE_BYTE0);
	OSDLine(ROW(5), COL(1), LENGTH(25), 0xA4, THE_BYTE1);
	OSDLine(ROW(5), COL(1), LENGTH(25), 0x11, THE_BYTE2);

	OSDLine(ROW(3), COL(1), LENGTH(45), 0x10, BYTE_COLOR);

	// Draw Window
	COsdFxDrawWindow(0,0,								//WORD usXStart,WORD usYStart,  
					_DIALOG_WIDTH,_DIALOG_HEIGHT,		//WORD usXEnd,WORD usYEnd,  
					tMainWindowStyle);					//BYTE *pStyle)

    if (GET_OSD_SIZE())
        OSDPosition(_OSD_DOUBLE_WIDTH(_DIALOG_WIDTH), _OSD_DOUBLE_HEIGHT(_DIALOG_HEIGHT), 50, 50, 0x03);
    else
        OSDPosition(_DIALOG_WIDTH, _DIALOG_HEIGHT, 50, 50, 0x03);
	
	LoadCHIFont(_LF_ADJUST_PAGE);

	CCenterTextout(sAutoConfig[GET_LANGUAGE()],ROW(3),1,25);
	
	COsdFxEnableOsd();

	CAutoDoAutoConfig();

	COsdFxDisableOsd();	
}
//---------------------------------------------------------------------------
#define _NOTE_WIDTH						(8 * 13)//(8 * 12)	
#define _NOTE_HEIGHT					(4 * 18)

void CShowNote(void)
{
	BYTE code *pStr; 
    
    ucOsdState = _MI_MENU_NONE;
    InitOsdFrame();
    SetOSDDouble(0x01);   


	// TextOut
	switch(stSystemData.InputSource)
	{
		case _SOURCE_VGA:			pStr = sVGA;		break;
		case _SOURCE_DVI:			pStr = sDVI;		break;
		case _SOURCE_HDMI:			pStr = sHDMI;		break;
        case _SOURCE_YPBPR:         pStr = sYPBPR;      break;
		case _SOURCE_VIDEO_SV:		pStr = sSVideo;		break;
		case _SOURCE_VIDEO_AV:		pStr = sAV;			break;
		case _SOURCE_VIDEO_TV:		pStr = sTV;			break;
	}
	
	CCenterTextout(pStr,ROW(0),0,10);   
    if (GET_OSD_SIZE())
        OSDPosition(_OSD_DOUBLE_WIDTH(_NOTE_WIDTH), _OSD_DOUBLE_HEIGHT(_NOTE_HEIGHT), 0, 0, 0x03);
    else
        OSDPosition(_NOTE_WIDTH, _NOTE_HEIGHT, 0, 0, 0x03);  	
	
    COsdFxEnableOsd();
    CPowerPanelOn();  

    CTimerReactiveTimerEvent(SEC(5), COsdDispOsdTimerEvent);
    bOSDTimeOut = 0;
#if(_SLEEP_FUNC)
    bOSDOnScreen = 1;
#endif
}
//---------------------------------------------------------------------------



#if(_VIDEO_TV_SUPPORT)
//---------------------------------------------------------------------------
void CShowTVNumber(BYTE ucNumber, BYTE ucOption)
{ 
    BYTE PosX = 0;

    ucOsdState     = _MI_MENU_NONE;
    bChangeChannel = 0;
    COsdFxDisableOsd();
    SetOSDDouble(0x03);
    SetOsdMap(tMsgOsdMap);
                         
    // Init OSD Ram
    OSDClear(0, 8, 0, 30, 0x8C, BYTE_ATTRIB);
    OSDClear(0, 8, 0, 30, 0x00, BYTE_DISPLAY);
    OSDClear(0, 8, 0, 30, 0xF0, BYTE_COLOR);
    
    COsdFxCodeWrite(ucCloseAllWindow);

    OSDPosition(_MAINMENU_WIDTH,_MAINMENU_HEIGHT,64,1,0x03);
                        
    if (ucOption & _SHOW_CH_TV_NUMBER) 
        CShowNumber(0, 0, ucNumber);


    if (_SHOW_CH_TV_TYPE & ucOption)
    {
    	BYTE *pStr;

    	switch(ucTVType)
    	{
    		case _TV_NTSC_M:		pStr = sNTSC_M;			break;
    		case _TV_NTSC_4_BG:		pStr = sNTSC_4_BG;		break;
    		case _TV_NTSC_4_DK:		pStr = sNTSC_4_DK;		break;
    		case _TV_NTSC_4_I:		pStr = sNTSC_4_I;		break;
    		case _TV_PAL_M:		    pStr = sPAL_M;			break;
    		case _TV_PAL_BG:		pStr = sPAL_BG;			break;
    		case _TV_PAL_I:			pStr = sPAL_I;			break;
    		case _TV_PAL_DK:		pStr = sPAL_DK;			break;
    		case _TV_PAL_N:			pStr = sPAL_N;			break;
    		case _TV_SECAM_BG:		pStr = sSECAM_BG;		break;
    		case _TV_SECAM_DK:		pStr = sSECAM_DK;		break;
    		case _TV_SECAM_L:		pStr = sSECAM_L;		break;
    		case _TV_SECAM_LL:		pStr = sSECAM_L;		break;
        }

        CTextOutEx(pStr, 0, 1);  
    }

   
    COsdFxEnableOsd();
    CTimerReactiveTimerEvent(SEC(5), COsdDispOsdTimerEvent);
    bOSDTimeOut  = 0;
#if(_SLEEP_FUNC)
    bOSDOnScreen = 1;
#endif

}
#endif // #if(_VIDEO_TV_SUPPORT)

//---------------------------------------------------------------------------

void CShowPictureMode()
{	
	BYTE *pStr;
	//ucOsdState = _MI_MENU_NONE;
    COsdFxDisableOsd();

    InitOsdFrame(); 
    SetOSDDouble(0x03);

    OSDClear(0, 8, 0, 30, 0x8C, BYTE_ATTRIB);
    OSDClear(0, 8, 0, 30, 0x00, BYTE_DISPLAY);
    OSDClear(0, 1, 0, 30, 0xc0, BYTE_COLOR);
    
    COsdFxCodeWrite(ucCloseAllWindow);

	// TextOut
	switch(GET_Picture_Mode())
	{
		case 0:			pStr = sStandard_Eng;		break;
		case 1:			pStr = sSoft_Eng;			break;
		case 2:			pStr = sVivid_Eng;		   break;
        case 3:         pStr = sPersonal_Eng;      break;
	}
	
	
	CCenterTextout(pStr,0,0,8);
    OSDClear(0, 8, 0, 30, 0xc0, BYTE_COLOR);
	
	// Draw Window
	//COsdFxDrawWindow(0,8,								//WORD usXStart,WORD usYStart,  
	//				_NOTE_WIDTH,_NOTE_HEIGHT,		//WORD usXEnd,WORD usYEnd,  
	//				tMainWindowStyle);					//BYTE *pStyle)
	 
    //if (GET_OSD_SIZE())
      //  OSDPosition(_OSD_DOUBLE_WIDTH(_NOTE_WIDTH), _OSD_DOUBLE_HEIGHT(_NOTE_HEIGHT), 0, 0, 0x03);
    //else
    OSDPosition(_NOTE_WIDTH, _NOTE_HEIGHT, 41, 0, 0x03);   
	CTimerReactiveTimerEvent(SEC(5), COsdDispOsdTimerEvent);
    COsdFxEnableOsd();
    bOSDTimeOut = 0;
    bOSDOnScreen = 1;

    CTimerReactiveTimerEvent(SEC(5), COsdDispOsdTimerEvent);
    bOSDTimeOut  = 0;
//    bOSDOnScreen = 0;
    
    
}



//---------------------------------------------------------------------------
void Draw2bit3x2Icon(BYTE *tIcon,BYTE x,BYTE y)
{

     Gotoxy(x,y,ALL_BYTE);

     pData[0] = tIcon[0]; 
     pData[1] = tIcon[1];
     pData[2] = tIcon[2];
     
     pData[3] = tIcon[0];
     pData[4] = tIcon[1] + 1;
     pData[5] = tIcon[2];

     pData[6] = tIcon[0];
     pData[7] = tIcon[1] + 2;
     pData[8] = tIcon[2];     
     
     CScalerWrite(_OSD_DATA_PORT_92, 9, pData, _NON_AUTOINC);
   

     Gotoxy(x,y + 1,ALL_BYTE);

     pData[0] = tIcon[0]; 
     pData[1] = tIcon[1] + 3;
     pData[2] = tIcon[2];
     
     pData[3] = tIcon[0];
     pData[4] = tIcon[1] + 4;
     pData[5] = tIcon[2];

     pData[6] = tIcon[0];
     pData[7] = tIcon[1] + 5;
     pData[8] = tIcon[2];
     
     CScalerWrite(_OSD_DATA_PORT_92, 9, pData, _NON_AUTOINC);
}

       
//---------------------------------------------------------------------------
BYTE AdjustMenuItem(BYTE ucBeginItem,BYTE ucEndItem,BYTE ucMode)
{
     BYTE i;
     BYTE ucCount;
     BYTE ucNewItem;

     CLR_KEYREPEATENABLE();

     //如果菜单只有一项,直接返回
     ucCount = ucEndItem - ucBeginItem;
     if(ucCount < 1)
     {
          return ucOsdState;
     }

     // 计算下一项菜单,或是上一菜单
     i = 0;

     ucNewItem = ucOsdState;

     while(i < ucCount)
     {

         ucNewItem = ValueInRangeChange(ucBeginItem, ucEndItem, ucNewItem, ucMode | _LOOP);

         if(g_tMenuItem[ucNewItem].Enable())
         {
             break;
         }

         i++;
     }

     return ucNewItem;

}
//----------------------------------------------------------------------------------------------------
BYTE GetShowIndex(BYTE ucMenuItem,BYTE ucBeginItem,BYTE ucEndItem)
{
     BYTE Index;

     bit fEnable;
     bit fDisableNoShow;

     Index = 0;

     while(ucBeginItem <= ucEndItem)
     {
     	fEnable = g_tMenuItem[ucBeginItem].Enable();
		if((g_tMenuItem[ucBeginItem].Option & _DISABLE_NOT_SHOW) != _DISABLE_NOT_SHOW)
			fDisableNoShow = 0;
		else
			fDisableNoShow = 1;

			
     	if(ucBeginItem == ucMenuItem)
     	{
     		if(fEnable)		
     		{
     			return Index;
     		}
     		else
     		{
				if(fDisableNoShow)
					return _NOT_SHOW;
				else
					return Index;
     		}
     	}

     	if(ucBeginItem > ucMenuItem)
     		return _NOT_SHOW;
     		
       	if(!fDisableNoShow)
       	{	
        	Index++;
        }
        else
        {
        	if(fEnable)
        	{
            	Index++;
            }
		}
        ucBeginItem++;
     }

     return _NOT_SHOW;     
}
//----------------------------------------------------------------------------------------------------
BYTE GetShowCount(BYTE ucBeginItem,BYTE ucEndItem)
{
     BYTE ucCount;

     bit fEnable;
     bit fDisableNoShow;


     ucCount = 0;

     while(ucBeginItem <= ucEndItem)
     {
     	fEnable = g_tMenuItem[ucBeginItem].Enable();
     	
		if((g_tMenuItem[ucBeginItem].Option & _DISABLE_NOT_SHOW) != _DISABLE_NOT_SHOW)
			fDisableNoShow = 0;
		else
			fDisableNoShow = 1;
     		
       	if(!fDisableNoShow)
       	{	
        	ucCount++;
        }
        else
        {
        	if(fEnable)
        	{
            	ucCount++;
            }
		}
        ucBeginItem++;
     }

     return ucCount;     
}
//----------------------------------------------------------------------------------------------------
void TextOutCalcWidth(BYTE *pStr,BYTE row,BYTE col,BYTE ucMaxLength,BYTE ucDisplayPixcel)
{
     BYTE ucPixLen = CTextOutBase(pStr, col, row);
     BYTE i = StrLen(pStr);

     ucMaxLength -= 1;

     CScalerSendAddr(_OSD_DATA_PORT_92, _NON_AUTOINC);

     for(;i<ucMaxLength;i++)
     {
         *(&MCU_SCA_INF_DATA_FFF5) = (0x80 | 4);
         ucPixLen += 4;
     }
     
     //CScalerSendWriteStop();

     // 计算 Blank 宽度
     ucPixLen = ucDisplayPixcel - ucPixLen;

     //设置 Blank                                                       
     Gotoxy(col + ucMaxLength,row,ALL_BYTE);

     pData[0] = 0x00;
     pData[1] = ucPixLen;
     //pData[2] = ucBlankColor;
     CScalerWrite(_OSD_DATA_PORT_92, 2, pData, _NON_AUTOINC);
}
//---------------------------------------------------------------------------


void CSetMuteState(void)
{
    if (GET_AUDIO_MUTE()) // Mute on 
        CLR_AUDIO_MUTE();
    else
        SET_AUDIO_MUTE();

    CDrawMuteState();

#if(_VIDEO_TV_SUPPORT)
 #if(_IF_PLL_DE_CHIP == _IF_PLL_DE_1338)
    if ((_GET_INPUT_SOURCE() == _SOURCE_VIDEO_TV && gmi_CModeLocked()) || _GET_INPUT_SOURCE() != _SOURCE_VIDEO_TV)
 #endif
#endif

       CSetVolume();
    ucOsdEventMsg = _SAVE_EE_AUDIO_DATA_MSG;
}

//-----------------------------------------------------------------------
void CDrawMuteState(void)
{           
    ucOsdState     = _MI_MENU_NONE;
#if(_VIDEO_TV_SUPPORT)
        bChangeChannel = 0;
#endif
    COsdFxDisableOsd();
    //SetOSDDouble(0x03);
    SetOSDDouble((GET_OSD_SIZE() ? 0x03 : 0x00)  | OSD_WINDOWCHAR_BLENDING);
    SetOsdMap(tMsgOsdMap);
                         
    // Init OSD Ram
    OSDClear(0, 8, 0, 30, 0x8C, BYTE_ATTRIB);
    OSDClear(0, 8, 0, 30, 0x00, BYTE_DISPLAY);
    OSDClear(0, 8, 0, 30, 0xF0, BYTE_COLOR);
    
    COsdFxCodeWrite(ucCloseAllWindow); 

⌨️ 快捷键说明

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