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

📄 osd_util.c

📁 SAMSUNG 5009的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
		//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 + -