📄 osd_util.c
字号:
//BY QQ 050725 If cold start in open tray status, system will make the gMain_state.main to MAIN_STOP which will make the system status error
{
if ( disc != CD_DATA && disc != DVD_DATA && disc != USB_DATA && disc != FX_DATA )
{
SH_MixSetVideoEn(TRUE);
}
}
/* Disable OSD timer */
OsdTimerSet( 1, TIMER_DISABLE );
OsdSelTimerSet( 1, TIMER_DISABLE );
SH_GfxShowCanvas(SH_CANV1, FALSE);
#if _APP_CAP_OSD_INFO_OSD_KEEP // Qian liping 060523
if(app==APP_DVD||app==APP_VCD||(app==APP_MMN&&GetMmpFileType() == MMP_VIDEO_FILE))//clina 061106
if( gScreen_saver_on == FALSE && gRedraw_flag )
{
OSD_SetMainDisplay(DISPLAY_INFO, SYS_NO_WAIT );
}
#else/*_APP_CAP_OSD_INFO_OSD_KEEP */
/* Redraw CDDA info here...for consistency */
if( gScreen_saver_on == FALSE && gRedraw_flag )
GuiCDDAInfoCheck();
else
gRedraw_flag = TRUE;
#endif /*_APP_CAP_OSD_INFO_OSD_KEEP */
}
/******************************************************************************
* Function name : OsdCheck
* Arguments :
* Return : VOID
* By : Taejin Kwon
* Description : To clean a OSD displayed in the previous time.
******************************************************************************
*/
VOID OsdCheck( VOID )
{
if( gOSD_state.etCur_dsp!= DISPLAY_OFF ) // Qian liping 060505
{
SysPrintf("\n[OSD] Previous OSD found, So clean up this.");
/* Disable OSD timer */
OsdTimerSet( 1, TIMER_DISABLE );
#if _APP_CAP_FUNC_SCORING
//SysControlTimer( &gTimer_score_osd,TIMER_DISABLE, 0 );
OsdScoringTimerSet(1, TIMER_DISABLE ); // Qian liping 060927
#endif
/* Clean-up graphic display if there is no background */
switch( gOSD_state.etCur_dsp )
{
case DISPLAY_INFO:
OsdSelTimerSet( 1, TIMER_DISABLE );
#if !_APP_CAP_FUNC_REMAIN_TIME
if( GetDiscState() == DVDV_DISC ||GetDiscState() == DVDA_DISC )/*Jiangshanbin for dvda 060323*/
#endif
{
#if _APP_CAP_NAV_DVD_VIDEO
if( IsDvdvAngleBlock() == TRUE )
{
if( gOsd_angle_onoff == TRUE )
OSD_SetIconDisplay(ICON_CAMERA, NULL, SYS_NO_WAIT);
}
#endif
}
SetDisplayInfoSub(INFO_SUB_NONE);
#if !_APP_CAP_OSD_INFO_OSD_KEEP // Qian liping 060601
SetDisplayInfoState(INFO_OFF);
#endif
if( GetDisplayIconState() != ICON_NUMERIC )
InitTempValueState();
SetTempValueSetFlag(FALSE );
InitXvcdSearchValue();
InitSearchValue();
SH_GfxShowCanvas(SH_CANV1, FALSE);
break;
case DISPLAY_SETUP:
if( GetMainState() == MAIN_STOP )
#if _APP_CAP_NAV_CDG_DECODE
if ( !gScreen_saver_on && (S5H_GetAppType()==APP_VCD)
&& (GetDiscState() == CD_DA) && !GetCDGDiscLoaded() )
#endif
#if _API_CAP_GLB_BIG_GFX_TO_VIDEO_BUFF
SH_MixSetVideoEn(TRUE);
#else /* _API_CAP_GLB_BIG_GFX_TO_VIDEO_BUFF */
OSD_LogoOn(LOGO_IDLE, TRUE);
#endif /* !_API_CAP_GLB_BIG_GFX_TO_VIDEO_BUFF */
/* <<< @: 5008CHN-109.cklee 050509 : no Test tone */
#if (_APP_CAP_AUD_SETUP_SPEAKER&&_APP_CAP_AUD_CALNOISE)
{
SetupSpeaker_t speaker;
SetupInfoGetMenuSpeaker(&speaker);
if(speaker.test_tone == TOGGLE_ON)
{
speaker.test_tone = TOGGLE_OFF;
SetupInfoSetMenuSpeaker(&speaker);
}
}
#endif /* (_APP_CAP_AUD_SETUP_SPEAKER&&_APP_CAP_AUD_CALNOISE) */
/* >>> @: 5008CHN-109.cklee 050509 */
SH_GfxShowCanvas(SH_CANV1, FALSE);
break;
default:
SH_GfxShowCanvas(SH_CANV1, FALSE);
break;
}
}
// Qian liping 060407: delete
}
/******************************************************************************
* Function name : IconTimerReset
* Arguments : cur_icon
* Return :
* By : Qian liping 060407
* Description : To clean icon timer.
******************************************************************************
*/
BOOL IsTransNoticeBg( void )
{
OSD_MainType_et cur_dsp;
cur_dsp = GetDisplayMainState();
if ( cur_dsp == DISPLAY_EXPLORER ||
cur_dsp == DISPLAY_SETUP ||
cur_dsp == DISPLAY_PROGRAM
#if _APP_CAP_FUNC_DIVX_DRM //(weilf)20060422
||cur_dsp == DISPLAY_AUTHORIZATION_MSG||
cur_dsp == DISPLAY_RENTAL_EXPIRED_MSG||
cur_dsp == DISPLAY_RENTAL_CONFIRMATION_MSG
#endif
)
return FALSE ;
else
return TRUE;
}
VOID IconTimerReset( IconState_et new_icon )
{
IconState_et cur_icon;
cur_icon = GetDisplayIconState();
if( cur_icon == ICON_NONE )
return ;
if( new_icon == ICON_CLEAR || new_icon == ICON_LOADING )
{
InitTempValueState();
OsdNumericTimerSet(1, TIMER_DISABLE);
OsdLoadingTimerSet( 1, TIMER_DISABLE );
SH_GfxSetDefaultPallet(SH_CANV2);
OsdWarnTimerSet(1, TIMER_DISABLE );
OsdIconTimerSet(1, TIMER_DISABLE );
return;
}
switch( cur_icon )
{
case ICON_LOADING:
OsdLoadingTimerSet( 1, TIMER_DISABLE );
InitTempValueState();
SH_GfxSetDefaultPallet(SH_CANV2);
if( IsTransNoticeBg() )
GfxShowNoticeBoxBg();
else
SH_GfxShowCanvas( SH_CANV2, FALSE);
break;
case ICON_VOLUME:
OsdIconTimerSet(1, TIMER_DISABLE );
InitTempValueState();
if( new_icon != ICON_VOLUME )
{
#if _APP_CAP_AUD_FUNCTION_KEY
SetDisplayVolOsdTypeState( VOL_TYPE_NULL);
#endif
if( IsTransNoticeBg() && new_icon == ICON_WARNING )
{
GfxShowNoticeBoxBg();
CursorMessageOn( NOTICE_TYPE_DEFAULT, "\0");
}
else
SH_GfxShowCanvas( SH_CANV2, FALSE);
}
break;
#if _SUPPORT_TVG_FUNCTION_ //weilf)20060724
case ICON_TVG_ON:
case ICON_NO_TVG:
#endif
case ICON_WARNING:
OsdWarnTimerSet(1, TIMER_DISABLE );
break;
case ICON_NUMERIC:
case ICON_RC_CODE:
if( new_icon != ICON_WARNING ){
if(!IS_NUM_KEEPING_IN_CURSOR_HANDLE && new_icon!=ICON_NUMERIC&& new_icon!=ICON_RC_CODE) //HANJL, 060928,5005 Problem No.272
InitTempValueState(); //clina 061026 Nio.167
OsdNumericTimerSet(1, TIMER_DISABLE);
}
break;
case ICON_NP_ENSURE:
case ICON_VIDEOMODE_ENSURE:
// Reset the notice bg
SH_GfxShowCanvas( SH_CANV2, FALSE);
OsdIconTimerSet(1, TIMER_DISABLE );
break;
default:
if( new_icon != ICON_WARNING && new_icon != ICON_CAMERA
#if _SUPPORT_TVG_FUNCTION_ //weilf)20060724
&& new_icon != ICON_TVG_ON
&& new_icon != ICON_NO_TVG
#endif
)
{
OsdIconTimerSet(1, TIMER_DISABLE );
}
}
}
/******************************************************************************
* Function name : CursorLayerOff
* Arguments :
* Return : VOID
* By : Taejin Kwon
* Description : Clear current graphics display
******************************************************************************
*/
VOID CursorLayerOff( VOID )
{
SysPrintf("\n[GFX] Clear Cursor Layer.");
SH_GfxShowCanvas(SH_CANV2, FALSE);
}
/******************************************************************************
* Function name : GraphicNotAvailOn
* Arguments :
* Return : VOID
* By : Taejin Kwon
* Description : Make a graphics for Not Available OSD and Pop-up it
******************************************************************************
*/
VOID GraphicNotAvailOn( VOID )// Qian liping 060410
{
SysPrintf("\n[GFX] ON Not Available");
/* If a previous OSD display is displaying,
* close it and then create new one.
*/
if( IsTransNoticeBg() == FALSE )
{
GfxShowWarnIcon(ICON_WARNING);
}
else
{
GfxShowNoticeBoxIcon( ICON_WARNING );
}
}
#if _SUPPORT_TVG_FUNCTION_ //(weilf)20060720
/******************************************************************************
* Function name : GraphicTVGOn
* Arguments :
* Return : VOID
* By : Weilifeng
* Description : 20060720
******************************************************************************
*/
VOID GraphicTVGOn( VOID )
{
if( IsTransNoticeBg() == FALSE )
{
}
else
{
if( !SH_GfxGetCanvasState(SH_CANV2))
{
SH_GfxSetCanvas(SH_CANV2, CURSOR_X, CURSOR_Y, CURSOR_W, CURSOR_H);
SH_GfxShowCanvas( SH_CANV2, TRUE );
}
SH_GfxDrawRec(SH_CANV2, 576-60, 5, 52, 30, COLOR_TRANS_BLUE); //(weilf)20060724
SH_GfxDrawStr(SH_CANV2, "TVG", 576-60, 5, NULL);
}
}
/******************************************************************************
* Function name : GraphicNoTVGOn
* Arguments :
* Return : VOID
* By : Weilifeng
* Description : 20060720
******************************************************************************
*/
VOID GraphicNoTVGOn( VOID )
{
if( IsTransNoticeBg() == FALSE )
{
}
else
{
if( !SH_GfxGetCanvasState(SH_CANV2))
{
SH_GfxSetCanvas(SH_CANV2, CURSOR_X, CURSOR_Y, CURSOR_W, CURSOR_H);
SH_GfxShowCanvas( SH_CANV2, TRUE );
}
SH_GfxDrawRec(SH_CANV2, 576-100, 5, 92, 30, COLOR_TRANS_BLUE); //(weilf)20060724
SH_GfxDrawStr(SH_CANV2, "NO TVG", 576-100, 5, NULL);
}
}
#endif
/******************************************************************************
* Function name : GraphicBackgroundOn
* Arguments :
* Return : VOID
* By : Taejin Kwon
* Description : Make a graphics for Logo and Pop-up it
******************************************************************************
*/
VOID GraphicBackgroundOn( VOID )
{
SysPrintf("\n[GFX] ON Background");
/* If a previous OSD display is displaying,
* close it and then create new one.
*/
//OsdCheck();
GfxCreateSetupLogo();
/* 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 : GraphicMessageOn
* Arguments :
* IN *message : To display message
* IN length : message string length
* Return : VOID
* By : Taejin Kwon
* Description : To display play message
******************************************************************************
*/
VOID GraphicMessageOn( OwNotice_type type_nt, NCHAR *top, NCHAR *bottom )
{
/* If a previous OSD display is displaying,
* close it and then create new one.
*/
OsdCheck();
if( gOsd_onoff == TRUE )
OwShowNoticeBox( type_nt, top, bottom );
}
/* Set string to be redrawed(keeping osd), according to repeat status */
BOOL CursorDrawIconOnRpt(NCHAR* text )
{
RepeatSub_et repeat;
BOOL isRpt;
if((S5H_GetAppType()== APP_MMN)&&GetMmpFileType()!=MMP_VIDEO_FILE) //(weilf)20060405 to show repeat AB for mmn video file
{
isRpt = FALSE;
//Qian liping 060404
return isRpt;
}
isRpt = TRUE;
switch(S5H_GetAppType())
{
case APP_DVD: /*Jiangshanbin for dvda 060323*/
repeat = GetDvdvRepeatABState();
break;
case APP_VCD: //(weilf)20060405
repeat = GetSvcdRepeatABState();
break;
case APP_MMN: //(weilf)20060405
repeat = GetMmpRepeatMode(TRUE); // cydrain 20060410
break;
default:
repeat = REPEAT_SUB_NONE;
break;
}
switch(repeat)
{
case REPEAT_SUB_A:
strcpy(text, (NCHAR *) gRepeatA_string[MENU_LANG]);
break;
case REPEAT_SUB_B:
if( gOSD_state.etCur_dsp == DISPLAY_REPEAT )
{
OSD_SetMainDisplay(DISPLAY_OFF, SYS_NO_WAIT);
}
strcpy(text, (NCHAR *) gRepeatAB_string[MENU_LANG]);
break;
default:
isRpt = FALSE;
break;
}
// Qianliping 060414, press REPEAT A when display REPEAT OFF, REPEAT A don't display.
//if( gOSD_state.etCur_icon == ICON_REPEAT_OFF ) /* special case, to avoid getting wrong repeat status */
// isRpt = FALSE;
return isRpt;
}
/* Set mute string to be redrawed(keeping osd) */
//extern BOOL gMuteOn;//BY QQ 050911
BOOL CursorDrawIconOnMute(NCHAR* text)
{
BOOL isMute;
isMute = FALSE;
if(gMuteOn==TRUE)
{
/* if(gOSD_state.etCur_icon != ICON_LOADING)*/ // Qian liping 060510: Support in leading in state.
{
strcpy(text, (NCHAR *) gpMute[MENU_LANG]);//clina 060418
}
isMute = TRUE;
}
return isMute;
}
BOOL IsMmnCursorMsgOn(VOID)
{
//gaoping 20060406
if((S5H_GetAppType() == APP_MMN && (gOSD_state.etCur_dsp == DISPLAY_EXPLORER))) // Qian liping 060407
{
return TRUE;
}
return FALSE;
}
/* Arrange the string to be displayed in cursor notice box */
#if _APP_CAP_OSD_ZOOM_ICON_KEEPING //By QQ 050725
BOOL CursorDrawIconOnZoom(NCHAR* text )
{
BOOL isZoom;
isZoom = TRUE;
#ifdef _MTK_STYLE
switch(GetZoomFactorState())
{
case ZOOM_DIV_4:
strcpy(text, "\032 1/4X");
break;
case ZOOM_DIV_3:
strcpy(text, "\032 1/3X");
break;
case ZOOM_DIV_2:
strcpy(text, "\032 1/2X");
break;
case ZOOM_2X:
strcpy(text, "\032 2X");
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -