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

📄 osdproc003.c

📁 RTD2662板卡源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
            CShowNote();
            break;
            
        case _OE_PIC_CHANGE_U_D:
            ChangePicUD();
            break;
        
        case _OE_PIC_CHANGE_L_R:
            ChangePicLR();
            break;
            
		case _OE_SC_TIMER_CHANGE:
		    COsdDispOsdTimerEvent();
		    if(_GET_POWER_DOWN_TIME() == 0x04)
		    {
		        _SET_POWER_DOWN_TIME(0x00);
		    }
		    else
		    {
		        _SET_POWER_DOWN_TIME(_GET_POWER_DOWN_TIME()+1);
		    }   
		    CEepromSaveTvData();//ucOsdEventMsg = _SAVE_EE_TV_DATA_MSG;
		    
		    ucAutoPowerDownTime = _GET_POWER_DOWN_TIME() * 30;//andyliu
		    if (0 == ucAutoPowerDownTime) // Auto power down time off
		    {
		        ucAutoPowerDownTime = 0xff;
		    }

		    CShowTimerMode();
		    ucMinuteCount = 0;  // Reset count
		    break;


        default:
            break;
    }
    
    ucOsdEventMsg = _NONE_MSG;
}

//----------------------------------------------------------------------------------------------------
void COsdDispFirstTimeLoadFont(void)
{       
    COsdFxDisableOsd();
    COsdColorPalette(tPALETTE_0);
    
    SetOsdMap(tUserMenuOsdMap);
    
    // Load global font 
    // insert code to here 
    COsdLoad1BitFont(FntGlobal,0x00,0x5F,tGlobalCharWidth);
    CScalerLoadHardwareVLCFont(FntMainIcon,0x80 * 2);
    
	//Load Languege Font
	LoadLanguageFont();

}
//----------------------------------------------------------
void LoadLanguageFont()
{
    // load language font

	switch(GET_LANGUAGE())
	{
/*#if(LNG_CHI_S_EN)
            //if(GET_LANGUAGE() == LNG_CHI_S)
    case LNG_CHI_S:
    	COsdLoad1BitFontWidth12(FntCH_S,0x80,44);
        break;
#endif*/

#if(LNG_JAP_EN)
	case LNG_JAP:
        COsdLoad1BitFont(FntJap,0x80,0x57,tFntJapCharWidth);
        break;
#endif
#if(LNG_KOR_EN)
    case LNG_KOR:
        COsdLoad1BitFont(FntKor,0x80,0x69,tFntKorCharWidth);
        break;
#endif
#if(LNG_RUS_EN)
	case LNG_RUS:
		COsdLoad1BitFont(FntRus,0x80,0x21,tFntRusCharWidth);
        break;
#endif
	}
	

}  

//-----------------------------------------------------------
void COsdLoad1BitFontWidth12(BYTE *pFont,WORD usOffset,BYTE ucFntCount)
{
     BYTE i;
     CScalerLoadHardwareVLCFont(pFont, usOffset);

     if(usOffset > 0x100)		return;

     if(usOffset + ucFntCount > 0x100)
        ucFntCount = 0x100 - usOffset; 


     for(i=0;i<ucFntCount;i++)
     {
         SetCharWdith(usOffset,12);
         usOffset ++;
     }
     
}

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

void LoadCHI_S_Font(BYTE ucPage)
{

	BYTE *pFont;
	COsdLoad1BitFontWidth12(FntPublic_CHI_S,0x80,0x20);	
	switch(ucPage)
	{

		case _LF_COLOR_PAGE:		pFont = FntColorPage_S;		break;
		case _LF_ADJUST_PAGE:		pFont = FntAdjustPage_S;	break;
		case _LF_TV_PAGE:			pFont = FntTVPage_S;		break;
		case _LF_OSD_PAGE:			pFont = FntOSDPage_S;		break;
		case _LF_FUNC_PAGE:			pFont = FntFuncPage_S;		break;
		case _LF_SOUND_PAGE:		pFont = FntSoundPage_S;		break;
		case _LF_OTHER:				pFont = FntOther_CHI_S;		break;
	}

	COsdLoad1BitFontWidth12(pFont,0xA0,0x22);	

}
//-----------------------------------------------------------

void LoadCHI_T_Font(BYTE ucPage)
{

	BYTE *pFont;
	COsdLoad1BitFontWidth12(FntPublic_CHI_T,0x80,0x20);	
	
	switch(ucPage)
	{

		case _LF_COLOR_PAGE:		pFont = FntColorPage_T;		break;
		case _LF_ADJUST_PAGE:		pFont = FntAdjustPage_T;	break;
		case _LF_TV_PAGE:			pFont = FntTVPage_T;		break;
		case _LF_OSD_PAGE:			pFont = FntOSDPage_T;		break;
		case _LF_FUNC_PAGE:			pFont = FntFuncPage_T;		break;
		case _LF_SOUND_PAGE:		pFont = FntSoundPage_T;		break;
		case _LF_OTHER:				pFont = FntOther_CHI_T;		break;
	}
	COsdLoad1BitFontWidth12(pFont,0xA0,0x22);


}
//-----------------------------------------------------------
void LoadCHIFont(BYTE ucPage)
{
	if(GET_LANGUAGE() == LNG_CHI_S)
	{
		LoadCHI_S_Font(ucPage);
	}
	else if(GET_LANGUAGE() == LNG_CHI_T)
	{
		LoadCHI_T_Font(ucPage);
	}

}
//-----------------------------------------------------------
void COsdDispOsdTimerEvent(void)
{

        COsdFxDisableOsd();
        ucOsdState = _MI_MENU_NONE;
            
#if(_VIDEO_TV_SUPPORT)
 #if(_SLEEP_FUNC)
        bOSDOnScreen = 0;
 #endif
             
 #if(_SLEEP_FUNC)
        if(_ACTIVE_STATE == ucCurrState && (0xff == ucAutoPowerDownTime) || (0 == _GET_POWER_DOWN_TIME()))
 #endif 
#else
        if(_ACTIVE_STATE == ucCurrState)
#endif 
        {
             bDrawMute = 1;
        }

}

//-----------------------------------------------------------
BYTE CFoundKeyMsgToOsdEvent(SKeyToOsdEvent *tMsgTable)
{
     BYTE i;

     if(ucKeyMessage == _NONE_KEY_MESSAGE)
     {
          //ucOsdEventMsg = _NONE_MSG;
          return 0;
     }
                        
     i = 0;
     while(1)
     {
         if(tMsgTable[i].KeyMessage == _NONE_KEY_MESSAGE)
         {
              //ucOsdEventMsg = _NONE_MSG;
              // End flag
              return 1;
         }
         if(ucKeyMessage == tMsgTable[i].KeyMessage)
         {
              ucOsdEventMsg = tMsgTable[i].OsdEvent;
              return 0;
         }

         i++;
     }
     return 1;
}                                        
//---------------------------------------------------------------------------

void CShortCutKeyMsg(void)
{
    if (ucOsdEventMsg >= _OE_CHANGE_SOURCE)
    {
        if (!CTVEnable() && ucOsdEventMsg >= _OE_SC_CH_DEC) // Only for TV
            ucOsdEventMsg = _NONE_MSG;
        else
            COsdDispOsdTimerEvent();
    }
}

//---------------------------------------------------------------------------
void CCoverKeyMsgToOsdEvent(SKeyToOsdEvent *tMsgTable,BYTE bUserPublicKeyEvnet)
{
     bit bFoundPublic = 1;

     if(tMsgTable != NULL)
         bFoundPublic = CFoundKeyMsgToOsdEvent(tMsgTable);

     if(bFoundPublic && bUserPublicKeyEvnet)
     {
         CFoundKeyMsgToOsdEvent(tKOPublic);
         CShortCutKeyMsg();
     }
}
//---------------------------------------------------------------------------
void InitOsdFrame(void)
{
    COsdFxDisableOsd();

    SetOsdMap(tUserMenuOsdMap);
    COsdFxCodeWrite(ucCloseAllWindow);

	CScalerSetBit(_OVERLAY_CTRL_6C, 0x23, ((stOsdUserData.OsdBlending & 0x07) << 2));
    
    // Init osd
    // insert code to here
    OSDClear(ROW(0), HEIGHT(18), COL(0), WIDTH(46), 0x8C, BYTE_ATTRIB);
    OSDClear(ROW(0), HEIGHT(18), COL(0), WIDTH(46), 0x00, BYTE_DISPLAY);
	OSDClear(ROW(0), HEIGHT(18), COL(0), WIDTH(46), 0x40, BYTE_COLOR);
}     

//----------------------------------------------------------------------------------------------------
#define _SLIDER_BEGIN				0x04
void OSDSlider(BYTE row, BYTE col, BYTE length, BYTE value, BYTE range,BYTE color)
{
    unsigned int bound;
    unsigned char i,c;
    OSDLine(row, col, length + 6, color, THE_BYTE2);   // Set Slider Attribute. 4 extra columns for space/numbers/space
    bound   = length * value;
    
    Gotoxy(col,row,THE_BYTE1);
    OutputChar(_SLIDER_BEGIN);          // Left Border
    for (i = 1; i <= length; i++)
    {
        if (bound)
        {
            if(bound >= range)
            {
                c       = _SLIDER_BEGIN + 7;
                bound   = bound - range;
            }
            else
            {
                color   = (bound << 4) / range;
                bound   = 0;
                if (4 > color)                    c = _SLIDER_BEGIN + 2;
                else if (7 > color)               c = _SLIDER_BEGIN + 3;
                else if (10 > color)              c = _SLIDER_BEGIN + 4;
                else if (13 > color)              c = _SLIDER_BEGIN + 5;
                else                              c = _SLIDER_BEGIN + 6;
            }
        }
        else
        {
            c = _SLIDER_BEGIN + 1;
        }
        OutputChar(c);
    }
    OutputChar(_SLIDER_BEGIN + 8);    // Right Border
    CShowNumber(col + length + 2, row,value);
}

//---------------------------------------------------------------------------
void CShowNoSignal(void)
{
    COsdFxDisableOsd();
    SetOSDDouble(0);
    COsdFxCodeWrite(ucCloseAllWindow);
    COsdFxDrawWindow(XSTART(0), YSTART(0), XEND(348), YEND(72), tOSD_WINDOW0_STYLE);
    OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x8c, BYTE_ATTRIB);
    OSDClear(0, ROW_COUNT, 0 , COL_WIDTH, 0x00, BYTE_DISPLAY);
    OSDClear(0,ROW_COUNT,0,COL_WIDTH,0x00,BYTE_COLOR);
    OSDClear(1,1,0,COL_WIDTH,0xF0,BYTE_COLOR);
    OSDPosition(348,72,50,50,0x01);

    


    CCenterTextout(sNoSignal[GET_LANGUAGE()], ROW(1), 1, 24);

    COsdFxDrawWindow(XSTART(0), YSTART(0), XEND(348), YEND(72), tOSD_WINDOW7_STYLE);
    OSDPosition(344, 122, 53, 55, 0x03);

	COsdFxEnableOsd();

//$$ Added by AndyLiu20080619
//    COsdFxDisableOsd();
//    COsdDispFirstTimeLoadFont();
//    CDrawLogo(0x03);
//    COsdFxEnableOsd();
//$$ Added by AndyLiu20080619

}
//---------------------------------------------------------------------------
/*
void CShowReset(void)
{
	InitOsdFrame();
	SetOSDDouble((GET_OSD_SIZE() ? 0x03 : 0x00)  | OSD_WINDOWCHAR_BLENDING);   

	// Draw Top Line
	OSDLine(ROW(1), COL(1), LENGTH(25), 0xA6, THE_BYTE0);
	OSDLine(ROW(1), COL(1), LENGTH(25), 0xA4, THE_BYTE1);
	OSDLine(ROW(1), COL(1), LENGTH(25), 0x11, THE_BYTE2);

	// Draw Bottom Line
	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)
	 
	//  OSDPosition(_DIALOG_WIDTH,_DIALOG_HEIGHT,50,50,0x03);
	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);

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

	COsdFxEnableOsd();


	COsdFxDisableOsd();

	SetOSDDouble((GET_OSD_SIZE() ? 0x03 : 0x00)  | OSD_WINDOWCHAR_BLENDING);

	SetOsdMap(t001MenuOsdMap);
	COsdFxCodeWrite(ucCloseAllWindow);

	OSDClear(ROW(0), HEIGHT(4), COL(0), WIDTH(25), 0x8C, BYTE_ATTRIB);
	OSDClear(ROW(0), HEIGHT(4), COL(0), WIDTH(25), 0x00, BYTE_DISPLAY);
	OSDClear(ROW(0), HEIGHT(4), COL(0), WIDTH(25), 0x40, BYTE_COLOR);


	CTextOutEx(sReset[GET_LANGUAGE()],COL(10),ROW(1));

	COsdFxDrawWindow(0,0,       //0,0,                      //WORD usXStart,WORD usYStart,  
	              300,65,    //450,150,                  //WORD usXEnd,WORD usYEnd,  
	              tMainWindowStyle);                     //BYTE *pStyle)

	OSDPosition(70,20,31,83,0x03);

	COsdFxEnableOsd();
	bOSDTimeOut = 0;
	CTimerReactiveTimerEvent(SEC(1), COsdDispOsdTimerEvent);


}
*/


void CShowAutoAdjust(void)
{
	InitOsdFrame();
    SetOSDDouble((GET_OSD_SIZE() ? 0x03 : 0x00)  | OSD_WINDOWCHAR_BLENDING);   
	
	// Draw nosignal & set osd position

	// Draw Top Line
	OSDLine(ROW(1), COL(1), LENGTH(25), 0xA6, THE_BYTE0);
	OSDLine(ROW(1), COL(1), LENGTH(25), 0xA4, THE_BYTE1);
	OSDLine(ROW(1), COL(1), LENGTH(25), 0x11, THE_BYTE2);

	// Draw Bottom Line

⌨️ 快捷键说明

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