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

📄 osd_if.c

📁 SAMSUNG 5009的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************
 *   Filename    : OSD_if_BASIC.c
 *   Start       : 2003. 3. 3.
 *   By          : Taejin Kwon
 *   Contact     : eric.kwon@samsung.com
 *   Description : This file makes all of the handler functions for OSD control
 ******************************************************************************
 */
/******************************************************
 *       INCLUDES
 *****************************************************/
#include <string.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 "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/SVCD/Svcd_types.h"
#include "MAIN/SVCD/Svcd_ext.h"

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


/******************************************************
 *       Global variables / functions
 *****************************************************/
OSD_State_st		gOSD_state;


/******************************************************
 *       Extern variables / functions
 *****************************************************/
extern SysSema_t	gSema_osd;
extern SysQueue_t	gQ_osd;
extern ONOFF		gOsd_onoff;

extern VOID MmpClearNumericInput(VOID);		//(weilf)20060726
extern VOID MmpReturnToCurPlay(VOID);		//(weilf)20060726
extern OSD_MainType_et GetDisplayMainState(VOID);		//(weilf)20060726
extern VOID MmpReturnInfo2Normal(VOID);		//(weilf)20060726
extern OSD_MainType_et GuiHandleInfoKeys(VOID);		//(weilf)20060726

#if (_APP_CAP_NAV_USB_DISC||_APP_CAP_NAV_FX_DATA)
 /******************************************************************************
 * Function name	: OsdFATDeviceSelectOn
 * Arguments		:  
 *     IN        			FatSelOsdType_et type 
 *			
 *     OUT       
 *     I/O       
 * Return			: VOID
 *			
 * By			: Lee Chong Kun
 * Description		: 
 * Revision		: 1.0  
 ******************************************************************************
 */
VOID OsdFATDeviceSelectOn( DeviceSelOsdType_et type )
{
	OsdMsg_st	tx;

	tx.type = OSD_MSG_NORMAL;
	tx.etWait = SYS_NO_WAIT;
	tx.p.image.disp = DISPLAY_FAT_DEVICE;
	tx.p.image.p.num = type;
	SysSendMsg( &gQ_osd, &tx, sizeof(OsdMsg_st), SYS_WAIT, 0 );
}

 /******************************************************************************
 * Function name	: OsdFATDeviceSelectUpdate
 * Arguments		:  
 *     IN        			FatSelOsdType_et type 
 *			
 *     OUT       
 *     I/O       
 * Return			: VOID
 *			
 * By			: Lee Chong Kun
 * Description		: 
 * Revision		: 1.0  Qian liping 060711
 ******************************************************************************
 */
VOID OsdFATDeviceSelectUpdate( DeviceSelOsdType_et type )
{
	OsdCtrl_st ctrl;

	ctrl.p.fat_osd_type = type;
	OSD_ChangeDisplay(OSD_CTRL_FAT_DEVICE_SEL, &ctrl, SYS_NO_WAIT );
}
#endif
#if 0	// zb 060628
/******************************************************************************
 * Function name	: OSD_GetMemoryRequiredForImage
 * Arguments		:
 *     IN       memmap - type of memory usage
 *
 *     OUT
 *     I/O
 * Return			: UINT
 *
 * By				: Taejin Kwon
 * Description		: Turn on Logo OSD
 * Revision			: 1.0
 ******************************************************************************
 */
UINT OSD_GetMemoryRequiredForImage(S5H_MemMapType_t memmap)
{
	UINT	require_memsize;
	
	switch( memmap ) 
	{
		case MM_MMN_MERGE:
			require_memsize = 0x90800 ;
			break;
		case MM_SCREEN_SAVER:
		case MM_DVDV_NORMAL:
		case MM_VCD_NORMAL:
		case MM_CDDA:
		default:
			break;
	}
	return require_memsize;	
}

/******************************************************************************
 * Function name	: OSD_GetMemoryRequiredForCursor
 * Arguments		:
 *     IN       memmap - type of memory usage
 *
 *     OUT
 *     I/O
 * Return			: UINT
 *
 * By				: Taejin Kwon
 * Description		: Turn on Logo OSD
 * Revision			: 1.0
 ******************************************************************************
 */
UINT OSD_GetMemoryRequiredForCursor(S5H_MemMapType_t memmap)
{
	UINT	require_memsize;
	
	switch( memmap ) 
	{
		case MM_MMN_MERGE:
			require_memsize = 0x90800 ;
			break;
		case MM_SCREEN_SAVER:
		case MM_DVDV_NORMAL:
		case MM_VCD_NORMAL:
		case MM_CDDA:
		default:
			break;
	}
	return require_memsize;	
}
#endif
 /******************************************************************************
 * Function name	: OSD_LogoOn
 * Arguments		:  
 *     IN        			BOOL wait_complete
 *			
 *     OUT       
 *     I/O       
 * Return			: VOID
 *			
 * By			: Taejin Kwon
 * Description		: Turn on Logo OSD  
 * Revision		: 1.0  
 ******************************************************************************
 */
VOID OSD_LogoOn( LogoType_et type, BOOL wait_complete )
{
	SysPrintf("\n[GFX] ON Logo");

	if( type == LOGO_SETUP )
		GfxCreateSetupLogo();
	else if( type == LOGO_IDLE )
		GfxCreateLogo(wait_complete);

	/* This should not be called here. SDOUT should be turned on at the initial routine.
		Otherwise, if the TV mode is changed when opening the tray, the SDOUT is turned on 
		by this call while SDOUT is turned off in changing TV mode. This causes the SDOUT
		malfunction. 	(20060310,ishan) */
	/* This should be called after finishing setting of SDOUT, VP, GA, MIXER */
 	//S5H_SetTvOnOff(TRUE);
}

/******************************************************************************
 * Function name	: MmnCtrlReplay
 * Arguments		:  
 *     IN        			OSD_MainType_et dsp
 *			
 *     OUT       
 *     I/O       
 * Return			: VOID
 *			
 * By			: Taejin Kwon
 * Description		:  
 * Revision		: 1.0  
 ******************************************************************************
 */
VOID OSD_BannerOn( OSD_MainType_et dsp )
{
	//OsdMsg_st	tx;

	if(S5H_GetAppType() == APP_MMN && gOSD_state.etCur_dsp==DISPLAY_EXPLORER)	// cydrain 20060116
	{
		OsdControl_et ctrl;
		
		if(GetTempInputDig())
			MmpClearNumericInput();

		OsdMmpNoticeTimerSet(1, TIMER_DISABLE);	
		OsdSelTimerSet(1, TIMER_DISABLE);
		
		//gaoping 20060407
		if (gOSD_state.etExp_state.etInfo1==  EXPLORER_MODE_INFO1SEARCH)
		{
			MmpReturnToCurPlay();
		}

		switch( dsp )
		{
			case DISPLAY_REPEAT:
				ctrl = OSD_CTRL_EXPLORE_INFO2RPT;
				break;
			case DISPLAY_MODE_SEL:
				ctrl = OSD_CTRL_EXPLORE_INFO2MODE;
				break;
			case DISPLAY_STEREO:
				ctrl = OSD_CTRL_EXPLORE_INFO2AUDIO;
				break;
			default:
				return;
		}
		OSD_ChangeExplore(ctrl, NULL, SYS_WAIT);
	}
	else 
	{
		OSD_SetMainDisplay( dsp, SYS_NO_WAIT );
	}
}

/******************************************************************************
 * Function name	: OSD_BannerOff
 * Arguments		:  
 *     IN        			VOID
 *			
 *     OUT       
 *     I/O       
 * Return			: VOID
 *			
 * By			: Taejin Kwon
 * Description		:  
 * Revision		: 1.0  
 ******************************************************************************
 */
VOID OSD_BannerOff( VOID )
{
	if(S5H_GetAppType() == APP_MMN && GetDisplayMainState() == DISPLAY_EXPLORER)	// cydrain 20060116
	{
		MmpReturnInfo2Normal();	
	}	
	else
	{
#if !_APP_CAP_OSD_TOGGLE_BY_HOTKEY				
		OsdTimerSet(1, TIMER_DISABLE);
#endif				
		OSD_SetMainDisplay(DISPLAY_OFF, SYS_NO_WAIT);
	}	
}
/******************************************************************************
 *  Function name 	: OSD_GraphicClear
 *  Arguments     	: 
 *  Return        	: BOOL
 *  By            	: Qian liping 060623
 *  Description   	: not to redraw any graphic OSD, mainly the Info OSD.
 ******************************************************************************
 */
extern BOOL gRedraw_flag;
VOID OSD_GraphicClear( VOID )
{
	gRedraw_flag = FALSE;
	OSD_SetMainDisplay(DISPLAY_OFF, SYS_NO_WAIT );
}
/******************************************************************************
 * Function name	: OSD_DrawAlbum
 * Arguments		:  
 *     IN        
 *					BYTE2 select, BYTE1 draw_history
 *     OUT       
 *     I/O       
 * Return			: VOID  
 *			
 * By			: Kim Do Yeon
 * Description		:  
 * Revision		: 1.0  
 ******************************************************************************
 */
VOID OSD_DrawAlbum(BYTE2 select, BYTE1 draw_history, SysWait_t wait)
{
	OsdMsg_st	tx;

	tx.type = OSD_MSG_NORMAL;
	tx.etWait = wait;
	tx.p.image.disp = DISPLAY_IMAGE_ALBUM;
	tx.p.image.p.pgm.value = select;
	tx.p.image.p.pgm.edit_idx = draw_history;
	
	if( wait != SYS_NO_WAIT )
		SysGetSema( &gSema_osd, wait, NULL);

	if( SysSendMsg( &gQ_osd, &tx, sizeof(OsdMsg_st), SYS_NO_WAIT, 0 ) == SYS_RETURN_SUCCESS )
	{
		if(  wait != SYS_NO_WAIT  )
			SysGetSema( &gSema_osd, wait, NULL);
	}
	if(  wait != SYS_NO_WAIT  )
	{
		SysReleaseSema(&gSema_osd, NULL);		
		SysResetSema(&gSema_osd, 1, 0);			
	}
}

/******************************************************************************
 * Function name	: OSD_SetMainDisplay
 * Arguments		:  
 *     IN        			OSD_MainType_et disp, SysWait_t wait
 *			
 *     OUT       
 *     I/O       
 * Return			: VOID
 *			
 * By			: QQ
 * Description		:  
 * Revision		: 1.0  
 ******************************************************************************
 */
VOID OSD_SetMainDisplay( OSD_MainType_et disp, SysWait_t wait )
{
	OsdMsg_st	tx;

	tx.type = OSD_MSG_NORMAL;
	tx.etWait = wait;
	
	if( disp == DISPLAY_INFO ) 
		tx.p.image.disp = GuiHandleInfoKeys();
	else
		tx.p.image.disp = disp;

	/*
	 *	In some display type, logo display needed to show background video 
	 */
	if ( (disp == DISPLAY_OPEN) ||
		(disp == DISPLAY_NODISC)||
		(disp == DISPLAY_RC_ERROR) || (disp == DISPLAY_UNKNOWN_DISC) )
	{
		if( gOSD_state.etCur_dsp != DISPLAY_SETUP )
		{
			OSD_LogoOn(LOGO_IDLE, TRUE);
		}	
		else

⌨️ 快捷键说明

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