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

📄 osddisp.c

📁 很难得的最好的rtd3523系列原厂源码LCD驱动开发
💻 C
📖 第 1 页 / 共 2 页
字号:
//----------------------------------------------------------------------------------------------------
// ID Code      : OsdDisp.c No.0000
// Update Note  : 
//
//----------------------------------------------------------------------------------------------------

#define __OSDDISP__

#include "..\Header\Include.h"

//----------------------------------------------------------------------------------------------------
// OSD Display Functions
//----------------------------------------------------------------------------------------------------



//----------------------------------------------------------------------------------------------------
// OSD Combination Functions
//----------------------------------------------------------------------------------------------------


//--------------------------------------------------
// Description  : 
// Input Value  : 
// Output Value : 
//--------------------------------------------------
void COsdDispFirstTimeLoadFont(void)
{
	CScalerLoadFont(tFONT_GLOBAL, ADDRESS(0x00), LENGTH(_GLOBAL_CHAR_NUM), _COMPRESS_FONT);		//load 1-bit global font. 
	CScalerLoadFont(tFONT_ICON_OTHER, ADDRESS(0xd0), LENGTH(_OTHER_ICON_NUM), _COMPRESS_FONT);
	CScalerLoadFont(tFONT_ICON, ADDRESS(0x100), LENGTH(_MAIN_ICON_NUM), _COMPRESS_FONT);		//load 2-bit icon. Address which below 0xa0 will save 1-bit chars.
	if(stOsdUserData.Language == _CHINESE_S)
	{
		CScalerLoadFont(tFONT_SCHINESE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_SCHINESE_CHAR_NUM), _COMPRESS_FONT); //load 1-bit Simple Chinese font.
	}
	else
	{
		CScalerLoadFont(tFONT_EUROPE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_EUROPE_CHAR_NUM), _COMPRESS_FONT);	//load 1-bit Europe font.
	}
}

//--------------------------------------------------
// Description  : 
// Input Value  : 
// Output Value : 
//--------------------------------------------------
void COsdDispNoSignalProc(void)
{
	CScalerLoadFont(tFONT_GLOBAL, ADDRESS(0x00), LENGTH(_GLOBAL_CHAR_NUM), _COMPRESS_FONT);		//load 1-bit global font. 
	CScalerLoadFont(tFONT_ICON_OTHER, ADDRESS(0xd0), LENGTH(_OTHER_ICON_NUM), _COMPRESS_FONT);
	if(stOsdUserData.Language == _CHINESE_S)
	{
		CScalerLoadFont(tFONT_SCHINESE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_SCHINESE_CHAR_NUM), _COMPRESS_FONT); //load 1-bit Simple Chinese font.
	}
	else 
	{
		CScalerLoadFont(tFONT_EUROPE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_EUROPE_CHAR_NUM), _COMPRESS_FONT);	//load 1-bit Europe font.
	}
	
    COsdDispPrevWork(_OSD_MAP2);

  	COsdFxCodeWrite(tOSD_SIGNAL_ATB);
	COsdFxLoadText(ROW(3), COL(0), stOsdUserData.Language, tOSD_NOSIGNAL_STR);
	
	COsdFxSetPosition(WIDTH(_OSD_HINT_DH_END), HEIGHT(_OSD_HINT_DV_END), (_OSD_HPOSITION_RANGE>>1), (_OSD_VPOSITION_RANGE>>1), 0x01);

    COsdFxEnableOsd();

    CPowerPanelOn();
}

#if (_SHOW_SOURCEHINT)
//x.hu, for show source hint
//--------------------------------------------------
// Description  : 
// Input Value  : 
// Output Value : 
//--------------------------------------------------
void COsdDispSourceProc(void)
{
       //CPowerLightPowerOff();
	//x.hu, if current state is SLEEP, we should invoke reset function to search signal,
	// then source hint is shown under free run mode.
	if(ucCurrState == _SLEEP_STATE) {
		CModeResetMode();
		return;
	}
	
	CScalerLoadFont(tFONT_GLOBAL, ADDRESS(0x00), LENGTH(_GLOBAL_CHAR_NUM), _COMPRESS_FONT);		//load 1-bit global font. 
	CScalerLoadFont(tFONT_ICON_OTHER, ADDRESS(0xd0), LENGTH(_OTHER_ICON_NUM), _COMPRESS_FONT);
	if(stOsdUserData.Language == _CHINESE_S)
		CScalerLoadFont(tFONT_SCHINESE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_SCHINESE_CHAR_NUM), _COMPRESS_FONT); //load 1-bit Simple Chinese font.
	else 
		CScalerLoadFont(tFONT_EUROPE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_EUROPE_CHAR_NUM), _COMPRESS_FONT);	//load 1-bit Europe font.
	
#if ((_CUSTOM_TYPE==_CUSTOM_HAOZHEN) || (_CUSTOM_TYPE == _CUSTOM_NONE && _SOURCE_HINT_TEXT==_TRUE))	
    COsdDispPrevWork(_OSD_MAP5);
	
	//border color
	COsdFxPWMCtlCommand(ADDRESS(3), _WRITE_BYTE1, (_OSD_BORDER_COLOR<<4));
	
	COsdFxChange1bitColor(ROW(0), COL(0), WIDTH(_OSD_SHORTMENU_COL), HEIGHT(_OSD_SHORTMENU_ROW), _MUCP_TEXT, _MUCP_TEXTBG);
	COsdFxLoadText(ROW(0), COL(0), 0, &tOSD_SOURCE_STR[GET_INPUTPORT_TYPE(stSystemData.InputSource)-1][0]);
/*
	#if (_PANEL_TYPE == _PANEL_TD141TGCB1)
	// x.hu, show hint for 14.1" LVDS panel
	COsdFxSetPosition(WIDTH(_OSD_SRC_DH_END), HEIGHT(_OSD_HINT_DV_END), (240), (210), 0x01);
	#elif (_PANEL_TYPE == _PANEL_LQ104V1DG51)
	// x.hu, show hint for sharp 10.4" TTL panel
	COsdFxSetPosition(WIDTH(_OSD_SRC_DH_END), HEIGHT(_OSD_HINT_DV_END), (200), (180), 0x01);
	#elif (_PANEL_TYPE == _PANEL_LQ092Y3DG01)
	// x.hu, show hint for 9.2" panel
	//COsdFxSetPosition(WIDTH(30*4), HEIGHT(_OSD_HINT_DV_END), (200), (180), 0x01);
	COsdFxSetPosition(WIDTH(_OSD_SRC_DH_END), HEIGHT(_OSD_SRC_DV_END), (200), (200-20), 0x01);
	#else
	COsdFxSetPosition(WIDTH(_OSD_SRC_DH_END), HEIGHT(_OSD_HINT_DV_END), (200), (200), 0x01);
	#endif
	*/
	#if (_PANEL_TYPE == _PANEL_LQ092Y3DG01 || _PANEL_TYPE ==_PANEL_JIALUHUA ||_PANEL_TYPE == _PANEL_LQ104V1DG51)
	// x.hu, show hint for 9.2" panel
	COsdFxSetPosition(WIDTH(_OSD_SRC_DH_END), HEIGHT(_OSD_SRC_DV_END), (200), (200-20), 0x01);
	#else
	COsdFxSetPosition(WIDTH(_OSD_SRC_DH_END), HEIGHT(_OSD_HINT_DV_END), (200), (200), 0x01);
	#endif

#elif (_CUSTOM_TYPE == _CUSTOM_NONE && _SOURCE_HINT_TEXT==_FALSE)
	COsdDispPrevWork(_OSD_MAP6);
        
	COsdFxCodeWrite(tOSD_SOURCE_HINT_ATB);
	COsdFxLoadText(ROW(1), COL(4), 0, &tOSD_SOURCE_STR[GET_INPUTPORT_TYPE(stSystemData.InputSource)-1][0]);

	COsdFxPWMCtlCommand(ADDRESS(3), _WRITE_BYTE1, 0x04);	//set blending type
	COsdFxAlphaBlendingLevel(0x04);
	#if (_PANEL_TYPE == _PANEL_LQ092Y3DG01)
	COsdFxSetPosition(WIDTH(_OSD_SRC_DH_END), HEIGHT(_OSD_SRC_DV_END), (170), (200), 0x01);
	#else
	COsdFxSetPosition(WIDTH(_OSD_SRC_DH_END), HEIGHT(_OSD_SRC_DV_END), (180), (200), 0x01);
	#endif
#endif
    COsdFxEnableOsd();

	//x.hu, add for showing before no signal is shown
	CPowerPanelOn();		//x.hu, cause white screen a little time while H/S power up
	//CPowerLightPowerOn();
}
#endif
//--------------------------------------------------
// Description  : 
// Input Value  : 
// Output Value : 
//--------------------------------------------------
void COsdDispNoCableProc(void)
{
	CScalerLoadFont(tFONT_GLOBAL, ADDRESS(0x00), LENGTH(_GLOBAL_CHAR_NUM), _COMPRESS_FONT);		//load 1-bit global font. 
	CScalerLoadFont(tFONT_ICON_OTHER, ADDRESS(0xd0), LENGTH(_OTHER_ICON_NUM), _COMPRESS_FONT);
	if(stOsdUserData.Language == _CHINESE_S)
		CScalerLoadFont(tFONT_SCHINESE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_SCHINESE_CHAR_NUM), _COMPRESS_FONT); //load 1-bit Simple Chinese font.
	else
		CScalerLoadFont(tFONT_EUROPE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_EUROPE_CHAR_NUM), _COMPRESS_FONT);	//load 1-bit Europe font.
	
	COsdDispPrevWork(_OSD_MAP2);

  	COsdFxCodeWrite(tOSD_SIGNAL_ATB);
	COsdFxLoadText(ROW(3), COL(0), stOsdUserData.Language, tOSD_NOSIGNAL_STR);
	
	COsdFxSetPosition(WIDTH(_OSD_HINT_DH_END), HEIGHT(_OSD_HINT_DV_END), (_OSD_HPOSITION_RANGE>>1), (_OSD_VPOSITION_RANGE>>1), 0x01);

    COsdFxEnableOsd();

    CPowerPanelOn();
}

//--------------------------------------------------
// Description  : 
// Input Value  : 
// Output Value : 
//--------------------------------------------------
void COsdDispNoSupportProc(void)
{
	CScalerLoadFont(tFONT_GLOBAL, ADDRESS(0x00), LENGTH(_GLOBAL_CHAR_NUM), _COMPRESS_FONT);		//load 1-bit global font. 
	CScalerLoadFont(tFONT_ICON_OTHER, ADDRESS(0xd0), LENGTH(_OTHER_ICON_NUM), _COMPRESS_FONT);
	if(stOsdUserData.Language == _CHINESE_S)
		CScalerLoadFont(tFONT_SCHINESE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_SCHINESE_CHAR_NUM), _COMPRESS_FONT); //load 1-bit Simple Chinese font.
	else
		CScalerLoadFont(tFONT_EUROPE, ADDRESS(_GLOBAL_CHAR_NUM+1), LENGTH(_EUROPE_CHAR_NUM), _COMPRESS_FONT);	//load 1-bit Europe font.
	
	COsdDispPrevWork(_OSD_MAP2);

  	COsdFxCodeWrite(tOSD_SIGNAL_ATB);
	COsdFxLoadText(ROW(3), COL(0), stOsdUserData.Language, tOSD_NOSUPPORT_STR);
	
	COsdFxSetPosition(WIDTH(_OSD_HINT_DH_END), HEIGHT(_OSD_HINT_DV_END), (_OSD_HPOSITION_RANGE>>1), (_OSD_VPOSITION_RANGE>>1), 0x01);

    COsdFxEnableOsd();

    CPowerPanelOn();
}

//--------------------------------------------------
// Description  : 
// Input Value  : 
// Output Value : 
//--------------------------------------------------
void COsdDispAutoProc(void)
{
	if(GET_INPUTSOURCE_TYPE() == _SOURCE_VGA)
	{
		COsdDispPrevWork(_OSD_MAP2);
		COsdFxCodeWrite(tOSD_HINT_ATB);
		COsdFxLoadText(ROW(3), COL(0), stOsdUserData.Language, tOSD_AUTOCONFIG_STR);
		COsdFxSetPosition(WIDTH(_OSD_AUTO_DH_END), HEIGHT(_OSD_AUTO_DV_END), (_OSD_HPOSITION_RANGE>>1), (_OSD_VPOSITION_RANGE>>1), 0x01);
		COsdFxEnableOsd();
		CAutoDoAutoConfig();
		COsdFxDisableOsd();
	}
}

void COsdDispPrevWork(BYTE ucOsdmaptype)
{
    COsdFxDisableOsd();

    COsdFxApplyMapSetting(ucOsdmaptype);

    COsdFxCloseWindow(WINNO(0));
    COsdFxCloseWindow(WINNO(1));
	COsdFxCloseWindow(WINNO(2));
    COsdFxCloseWindow(WINNO(3));
    COsdFxCloseWindow(WINNO(4));
    COsdFxCloseWindow(WINNO(5));
	COsdFxCloseWindow(WINNO(6));
}

//--------------------------------------------------
// Description  : 
// Input Value  : 
// Output Value : 
//--------------------------------------------------
void COsdDispAutoColorProc(void)
{
	if(GET_INPUTSOURCE_TYPE() == _SOURCE_VGA)
	{
		COsdDispPrevWork(_OSD_MAP2);
		COsdFxCodeWrite(tOSD_HINT_ATB);
		COsdFxLoadText(ROW(3), COL(0), stOsdUserData.Language, tOSD_AUTOCOLOR_STR);
		COsdFxSetPosition(WIDTH(_OSD_AUTO_DH_END), HEIGHT(_OSD_AUTO_DV_END), (_OSD_HPOSITION_RANGE>>1), (_OSD_VPOSITION_RANGE>>1), 0x01);
		COsdFxEnableOsd();

		CAutoDoWhiteBalance();
		COsdFxDisableOsd();
	}
}

//--------------------------------------------------
// Description	  :  Show User Timer Menu
// Input Value  :  None
// Output Value : None
//--------------------------------------------------
void COsdDispUserTimerRemind(BYTE ucHour, BYTE ucMinute)
{
	COsdDispPrevWork(_OSD_MAP3);

	COsdFxCodeWrite(tOSD_USERTIMER_ATB);

	COsdFxShowNumber2(ROW(3), COL(3), ucHour, _SHOW_2, 1);
	COsdFxHLine(ROW(3), COL(5), LENGTH(1), _COLON_, _WRITE_BYTE1);
	COsdFxShowNumber2(ROW(3), COL(6), ucMinute, _SHOW_2, 1);
	
	COsdFxSetPosition(WIDTH(_OSD_HINT_DH_END), HEIGHT(_OSD_HINT_DV_END), (_OSD_HPOSITION_RANGE>>1), (_OSD_VPOSITION_RANGE>>1), 0x01);

	COsdFxPWMCtlCommand(ADDRESS(3), _WRITE_BYTE2, 0x02);		//global blinking enable
	COsdFxHLine(ROW(3), COL(0), LENGTH(28), 0xCC, _WRITE_BYTE0);	//enable 1-bit char blinking

	COsdFxEnableOsd();
}

void COsdDispFullSlider(BYTE ucRow, BYTE ucCol, BYTE ucLength, WORD usValue, WORD usRange, WORD usMin, BYTE ucColor, BYTE ucNumColor, bit ucValueType)
{
	COsdFxHLine(ucRow, ucCol, ucLength, ((ucColor & 0x0f) << 4), _WRITE_BYTE2);
    	COsdFxHLine(ucRow, ucCol, LENGTH(1), _SUBT_, _WRITE_BYTE1);
    	COsdFxHLine(ucRow, ucCol + ucLength - 1, LENGTH(1), _PLUS_, _WRITE_BYTE1);
    	COsdFxSlider(ucRow, ucCol + 1, ucLength - 2, usValue, usRange + usMin, usMin);
    	COsdFxHLine(ucRow, ucCol + ucLength+1, LENGTH(3), ((ucNumColor & 0x0f) << 4), _WRITE_BYTE2);
	if(ucValueType == _SHOW_PERCENT)
	{
		usValue = (WORD)(usValue-usMin) * 100 / usRange;		//show 100%
	}
    COsdFxShowNumber2(ucRow, ucCol + ucLength+1, usValue, _SHOW_3, _OFF);
}
///////////////////////////////////////////////////////////////////////////////////////////
void COsdDispFullSlider3(BYTE ucRow, BYTE ucCol, BYTE ucLength, WORD usValue, WORD usRange, WORD usMin, BYTE ucColor, BYTE ucNumColor, bit ucValueType)
{
	COsdFxHLine(ucRow, ucCol, ucLength, ((ucColor & 0x0f) << 4), _WRITE_BYTE2);
    	COsdFxHLine(ucRow, ucCol, LENGTH(1), _SUBT_, _WRITE_BYTE1);
    	COsdFxHLine(ucRow, ucCol + ucLength - 1, LENGTH(1), _PLUS_, _WRITE_BYTE1);
    	COsdFxSlider(ucRow, ucCol + 1, ucLength - 2, usValue, usRange + usMin, usMin);

⌨️ 快捷键说明

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