📄 osd_if.c
字号:
/******************************************************************************
* 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 + -