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

📄 osd_handler_icon.c

📁 SAMSUNG 5009的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************
 *   Filename    : OSD_manager.c
 *   Start       : 2002. 11. 19
 *   By          : Taejin Kwon
 *   Contact     : tj1kwon@samsung.co.kr
 *   Description : 
 ******************************************************************************
 */
/******************************************************
 *       INCLUDES
 *****************************************************/
#include <string.h>
#include <stdio.h>
#include "Basic_typedefs.h"
#include "CUSTOM/Custom_option.h"
#include "OS/OS_abstract.h"
#include "API/SH_types.h"
#include "API/SH_api.h"

#include "COMMON/Common.h"

#include "MAIN/Global_state.h"
#include "MAIN/Appl_types.h"
#include "MAIN/Uop_msg.h"

#include "DRIVER/FS/Fs_api.h"

#include "CUSTOM/Osd_types.h"
#include "CUSTOM/Osd_if.h"

#include "CUSTOM/Key_handler_setup.h"

#include "MAIN/DVD/Dvd_predef.h"
#include "MAIN/DVD/Dvd_common.h"

#include "MAIN/MMP/Mmp_common.h"

#include "CUSTOM/Key_receive.h"

#include "CUSTOM/FP_handle.h"
#include "CUSTOM/Key_defs.h"

#include "MAIN/SVCD/Svcd_types.h"
#include "MAIN/SVCD/Svcd_ext.h"
#include "MAIN/SVCD/Svcd_show.h"

#include "Osd_util.h"
#include "Osd_draw.h"
#include "Osd_timer.h"
#include "CUSTOM/Strings_ext.h"

#include "Osd_data.h"
#include "Osd_draw_explore.h"
#include "Osd_draw_setup.h"
#include "Osd_draw_program.h"

/******************************************************
 *       Global variables / functions
 *****************************************************/
extern BOOL 		gOsd_onoff;

/******************************************************
 *       Extern variables / functions
 *****************************************************/
extern INLINE OSD_MainType_et GetDisplayMainState( VOID );			//(weilf)20060726
extern void GetCurrentDvdvPbTime(PlaybackTime_t *ptr_pb_time);		//(weilf)20060726
extern INLINE IconState_et GetDisplayIconState( VOID );				//(weilf)20060726
#if _APP_CAP_AUD_FUNCTION_KEY
extern INLINE VolOsdType_et GetDisplayVolOsdTypeState( void );		//(weilf)20060726
#endif
extern VOID LED_SetLedOnOff( BYTE1 led_num, BOOL onoff );			//(weilf)20060726
extern VOID OsdHandleDisplayDiscType( VOID );					//(weilf)20060726

/******************************************************************************
 *  Function name : RestoreInfoOsdState
 *  Arguments     : 
*     IN    		    BOOL isUpdate
*			
 *       OUT
*     I/O       
* Return			: STATIC BOOL   
*					
* By				: Yanglu
 *  Description   :  Return to no-editable info osd  
* Revision		: 1.0  
 ******************************************************************************
 */
STATIC BOOL RestoreInfoOsdState( BOOL isUpdate )	/* Yanglu 05.02.01 to avoid update media info for "Play" icon*/
{
	PlaybackTime_t 	ptr_pb_time;
	OsdCtrl_st ctrl;

	// Qian liping 060721: bug fix 
	if( S5H_GetAppType()== APP_MMN &&
		GetMmpFileType()== MMP_VIDEO_FILE &&
		(GetDisplayMainState() != DISPLAY_INFO&& GetDisplayMainState() != DISPLAY_EXPLORER ))
		OSD_SetMainDisplay(DISPLAY_OFF, SYS_NO_WAIT );
		
	if( GetDisplayMainState() != DISPLAY_INFO )
		return FALSE;
	
	SetTempValueSetFlag( FALSE );
	InitTempValueState();

	// Reset current playing infomation. // Qian liping 060719
	if(gOSD_state.etInfo_sub != INFO_SUB_NONE)
	{
		InitSearchValue();
		InitXvcdSearchValue();
		
		ctrl.p.info.old = gOSD_state.etInfo_sub; 
		ctrl.p.info.new = INFO_SUB_NONE;
		OSD_ChangeDisplay(OSD_CTRL_ELEM_SELECT, &ctrl, SYS_NO_WAIT);	
	}
	
	/*Jiangshanbin for dvda  060323*/
	if( GetDiscState() == DVDV_DISC ||GetDiscState() == DVDA_DISC)
	{
#if _APP_CAP_FUNC_REMAIN_TIME
		if(gOSD_state.etInfo_dsp == INFO_FIRST)
		{
			GetCurrentDvdvPbTime(&ptr_pb_time);
			OwGraphicChangedPlaytime(ptr_pb_time.hour, ptr_pb_time.min,ptr_pb_time.sec);
		}
#endif
		
		if(isUpdate)	
		{
#if _APP_CAP_FUNC_REMAIN_TIME
			if(gOSD_state.etInfo_dsp!=INFO_FIRST)
			{
				gOSD_state.etInfo_dsp = INFO_FIRST;
				OwCreateFirstDVDInfoDisplay();
			}
			else
#endif/*_APP_CAP_FUNC_REMAIN_TIME */				
				OwGraphicChangeValueLineDvdv();
		}
	}
	else
	{

		if(isUpdate)	
		{
#if _APP_CAP_FUNC_REMAIN_TIME
			if(gOSD_state.etInfo_dsp !=INFO_FIRST)
			{
				gOSD_state.etInfo_dsp = INFO_FIRST;
				OwCreateXvcdInfoDisplay();
			}
			else
#endif/*_APP_CAP_FUNC_REMAIN_TIME */				
#if _APP_CAP_OSD_SHOW_DISC_TIME_IN_STOP	//wanglin 20061009
				if(GetMainState() != MAIN_STOP)
#endif
				OwGraphicChangeValueLineXvcd();
		}
	}

	return TRUE;

}
BOOL  IconResetGraphicKeepingOsd( IconState_et 	new_icon )
{	
	BOOL  flag= FALSE;
	
	switch( new_icon )
	{
		case ICON_NEXT:
		case ICON_PREV:
			RestoreInfoOsdState(FALSE);
			break;

		case ICON_VOLUME:	
#if _APP_CAP_AUD_FUNCTION_KEY
			if(GetDisplayIconState() == ICON_VOLUME  && GetDisplayVolOsdTypeState() == VOL_TYPE_NULL)
			{
				OSD_SetIconDisplay(ICON_KEEP,NULL, SYS_NO_WAIT );
				return TRUE ;
			}
#endif /* _APP_CAP_AUD_FUNCTION_KEY */
			break;

		case ICON_RETURN:
			RestoreInfoOsdState(TRUE);
			break;

		case ICON_STOP:
		case ICON_STOP_NO_RESUME:
			OSD_LogoOn(LOGO_IDLE, TRUE);
			if(RestoreInfoOsdState(TRUE)==FALSE)
			{
				/* Yanglu 05.03.11 to avoid clearing cold start /unknown disc osd, in runtime */
				if( 
#if _APP_CAP_FUNC_RANDOM_PLAY	// cydrain 20050715
					gOSD_state.etCur_dsp != DISPLAY_MODE_SEL && 
#endif
					gOSD_state.etCur_dsp != DISPLAY_PROGRAM && 
					gOSD_state.etCur_dsp != DISPLAY_RC_ERROR && 
					gOSD_state.etCur_dsp != DISPLAY_NODISC &&  
					gOSD_state.etCur_dsp != DISPLAY_UNKNOWN_DISC && 
					gOSD_state.etCur_dsp != DISPLAY_SETUP&& 
					gOSD_state.etCur_dsp != DISPLAY_OFF  )
					OSD_SetMainDisplay(DISPLAY_OFF, SYS_NO_WAIT);
			}
			break;
			
	}
	return flag;
}
/******************************************************************************
* Function name	: OsdHandlerIconMsg
* Arguments		:  
*     IN    		    IconState_et icon, OsdIconCtrl_st *ctrl
*			
*     OUT       
*     I/O       
* Return			: STATIC BOOL   
*					
* By				: Qian liping
* Description		: Handle icon messages
* Revision		: 1.0  
******************************************************************************
*/   
VOID OsdHandlerIconMsg( IconState_et icon, OsdIconCtrl_st *ctrl) 
{
	S5H_ZoomFactor_t 	zoom;
	BOOL				menu_state;
	CHAR 				tmp[8];

	IconTimerReset( icon );

	if( gOsd_onoff == FALSE)
		return;

	if( IconResetGraphicKeepingOsd( icon ) ==  TRUE )
		return;
	
	switch( icon )
	{
		case ICON_LOADING:
			LED_SetLedOnOff(1, FALSE);
			LED_SetLedOnOff(2, FALSE);
			LED_SetLedOnOff(3, FALSE);
			GfxCreateLoading();
			OsdLoadingTimerSet( OSD_TIME_FOR_LOAD_SHOW, TIMER_ENABLE );
			break;
			

		case ICON_HIDE_NOTICE_BOX_ICON:
			GfxHideNoticeBoxIcon();
			break;
			
		
		case ICON_CAMERA:
			SysPrintf("\n[Cursor] ON Camera .");
			GfxShowNoticeBoxIcon(ICON_CAMERA );
			gOSD_state.etRedraw_icon = ICON_CAMERA;
			/* Keeping camera, no timer .*/
			break;
	
		case ICON_WARNING:
#if !(_API_CAP_GLB_BIG_GFX_TO_VIDEO_BUFF)
			if( gOSD_state.etCur_dsp == DISPLAY_SETUP && GetMainState() == MAIN_STOP )
			{
				OSD_LogoOn(LOGO_IDLE, TRUE);
			}		
#endif /* !(_API_CAP_GLB_BIG_GFX_TO_VIDEO_BUFF) */

			GraphicNotAvailOn();

#if _APP_CAP_OSD_SEPERATE_ICON_TIMER
			OsdWarnTimerSet( OSD_TIME_FOR_WARNING, TIMER_ENABLE );
#else
			OsdIconTimerSet( OSD_TIME_FOR_WARNING, TIMER_ENABLE );			
#endif				
			break;

		case ICON_CENTER_WARN:
			if( S5H_GetOutputTvMode() == OUTPUT_525_60 ) 
			{	// NTSC 
				GfxCreateIconWarn( ZOOM_POS_X_CENTER -20, ZOOM_POS_Y_CENTER_N-20 );		
			}	
			else 
			{
				GfxCreateIconWarn( ZOOM_POS_X_CENTER-20, ZOOM_POS_Y_CENTER_P-20 );			
			}	
			break;
			
		
		case ICON_VOLUME:
			if(GetDisplayIconState()!= ICON_VOLUME)
			{
			   GfxVolumeOn();
			}
			else 
		    {
				GfxVolumeControl();
		    }	
			OsdIconTimerSet( OSD_TIME_FOR_VOLUME, TIMER_ENABLE );		
			break;

		case ICON_RC_CODE:
			strcpy(gString_buf, "");
			while(ctrl->num>0)
			{
				strcat(gString_buf, "*");
				ctrl->num--;
			}
			CursorMessageOn( NOTICE_TYPE_DEFAULT, gString_buf);
			OsdIconTimerSet( OSD_TIME_FOR_NUM_ACTION, TIMER_ENABLE );		
			break;

		case ICON_NUMERIC:		
			if(GetDiscState()==DVDV_DISC || GetDiscState() == DVDA_DISC)
			{
				if(GetDvdButtonSelectionState() != DVD_BTN_NONE)
					strcpy( gString_buf, (char*)gpSelect[MENU_LANG]);
				else
#if _APP_CAP_FUNC_SEARCH_TITLE_BY_NUMBER//By QQ 050831
				{
					DvdVideoInfo_t DvdInfo;
					GetDvdVideoInfo(&DvdInfo); 

					if(DvdInfo.total_chapter ==1)
							strcpy( gString_buf, (char*)gpTitle[MENU_LANG]);
					else 
						strcpy( gString_buf, (char*)gpChapter[MENU_LANG]);
				}
#else/*_APP_CAP_FUNC_SEARCH_TITLE_BY_NUMBER*/
					strcpy( gString_buf, (char*)gpChapter[MENU_LANG]]);
#endif/*_APP_CAP_FUNC_SEARCH_TITLE_BY_NUMBER*/
			}
			else if (S5H_GetAppType() == APP_VCD)
			{
				if( GetSvcdMenuState() == TRUE )	/* PBC is on */
					strcpy( gString_buf, (char*)gpSelect[MENU_LANG]);
				else
					strcpy( gString_buf, (char*)gpTrack[MENU_LANG]);
			}
			else if (S5H_GetAppType() == APP_MMN)
			{
				strcpy( gString_buf, (char*)gpSelect[MENU_LANG]);
			}
			sprintf( tmp, " %2d", ctrl->num );

⌨️ 快捷键说明

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