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

📄 osd_draw.c

📁 SAMSUNG 5009的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
		SH_GfxDrawImage(SH_CANV1,	SetDivxInfoPlayModeIcon(),		50+185+170+165,		5);           //IMG_MODE_NRM/RAN/PGM
	}
#endif
}

 /******************************************************************************
 * Function name	: OwGraphicSelectDisplayDvdvSub 
 * Arguments		:  
 *     IN        
 *					  OSD_InfoSubState_et old_t, OSD_InfoSubState_et new_t 
 *     OUT       
 *     I/O       
 * Return			: VOID
 *			
 * By				: Qian liping 060525
 * Description		: To redraw Display Information's sub menu
 * Revision			: 1.0 modified 060413 changlina
 ******************************************************************************
 */    
VOID OwGraphicSelectDisplayDvdvSub( OSD_InfoSubState_et old_t, OSD_InfoSubState_et new_t )
{
	/* Un-highlight all case : 
		1) From "Goto" key twice
		2) From "Enter" key case
	*/
	if( new_t == INFO_SUB_NONE  )
	{
		OwSearchBarDisplay(new_t);

		// Reset the search value after info updated.
		SetTempValueSetFlag( FALSE );
		InitTempValueState();
		InitSearchValue();	

	}else if( new_t == INFO_SUB_VTIME )
	{
		InitSearchValue();
		SetTempValueSetFlag( TRUE);
		// Reset the title/chapter value.
		if( old_t != INFO_SUB_NONE )
		{
			OwSearchBarDisplay( INFO_SUB_NONE);
		}
		
		OwSearchBarDisplay(INFO_SUB_VTIME);
	}
	else 
	{
		
		SetTempValueSetFlag( FALSE );
		InitTempValueState();
			
		//Restore current time value.
		if( old_t == INFO_SUB_VTIME )	
		{
			OwSearchBarDisplay(old_t);
		}

		if(new_t == INFO_SUB_CHAPTER)
		{
			OwSearchBarDisplay(INFO_SUB_CHAPTER);
		}
		else if( new_t == INFO_SUB_TITLE )
		{
			// First reset the search value.
			InitSearchValue();
			OwSearchBarDisplay(INFO_SUB_TITLE);
		}
	}
	
	OwGfxSelectDvdvInfoDisplaySub( old_t, new_t );
	gOSD_state.etInfo_sub = new_t;
}
 /******************************************************************************
 * Function name	: OwGfxSelectDvdvInfoDisplaySub 
 * Arguments		:  
 *     IN        
 *					 OSD_InfoSubState_et old_type,  OSD_InfoSubState_et new_type
 *     OUT       
 *     I/O       
 * Return			: VOID
 *			
 * By			: Qian liping
 * Description		: select sub menu and change color of new and old.
 * Revision		: 1.0
 ******************************************************************************
 */   
 VOID OwGfxSelectDvdvInfoDisplaySub( OSD_InfoSubState_et old_type, 
										 OSD_InfoSubState_et new_type )
{
	BYTE2	chapter_w;
	if( S5H_GetAppType()== APP_MMN )
		chapter_w = INFO_DIVX_CHP_W ;
	else
		chapter_w = INFO_DVD_CHP_W;
	
	/* Use GOTO key to enter editable osd */
	if( old_type == INFO_SUB_NONE )
	{	
		/* Highlight the 1st item */
		SH_GfxChgAreaColor(SH_CANV1,	50 ,		5, 	30,		30, COLOR_BLUE_NORM,COLOR_BROWN);
		SH_GfxChgAreaColor(SH_CANV1,	50+33,	5,	INFO_DVD_TITLE_W-33,	40-3*2, OSD_COLOR_FONT_DEFAULT,OSD_COLOR_FONT_HIGHLIGHT);
		return;
	}
	
	/* Un-highlight all */
	if( old_type == INFO_SUB_TITLE )
	{
		/* Highlight the 1st item */
		SH_GfxChgAreaColor(SH_CANV1,	50 ,		5, 	30,		30, COLOR_BROWN,COLOR_BLUE_NORM);
		SH_GfxChgAreaColor(SH_CANV1,	50+33,	5,	INFO_DVD_TITLE_W-33,	40-3*2,OSD_COLOR_FONT_HIGHLIGHT, OSD_COLOR_FONT_DEFAULT);
	}
	else if( old_type == INFO_SUB_CHAPTER)
	{
		/* Highlight the 1st item */
		SH_GfxChgAreaColor(SH_CANV1,	50+INFO_DVD_TITLE_W,			5, 	30,		30, COLOR_BROWN,COLOR_BLUE_NORM);
		SH_GfxChgAreaColor(SH_CANV1,	50+INFO_DVD_TITLE_W+33, 		5, 	chapter_w-33,		30, OSD_COLOR_FONT_HIGHLIGHT,OSD_COLOR_FONT_DEFAULT);
	}
	else if( old_type == INFO_SUB_VTIME )
	{
		/* Highlight the 1st item */
		SH_GfxChgAreaColor(SH_CANV1,	50+INFO_DVD_TITLE_W+chapter_w,	    5, 	30,		30,COLOR_BROWN, COLOR_BLUE_NORM);
		SH_GfxChgAreaColor(SH_CANV1,	50+INFO_DVD_TITLE_W+chapter_w+33, 	5,	INFO_DVD_TIME_W-33,	30,OSD_COLOR_FONT_HIGHLIGHT,OSD_COLOR_FONT_DEFAULT);
	}
	
	/* Use GOTO key to enter usual osd */
	if( new_type == INFO_SUB_NONE )
	{
		return;
	}
	/* Use Left/Right key to select (editable info OSD) */
	else 
	{
		if( new_type == INFO_SUB_TITLE )
		{
			/* Highlight the 1st item */
			SH_GfxChgAreaColor(SH_CANV1,	50 ,		5, 	30,		30, COLOR_BLUE_NORM,COLOR_BROWN);
			SH_GfxChgAreaColor(SH_CANV1,	50+33,	5,	INFO_DVD_TITLE_W-33,	40-3*2, OSD_COLOR_FONT_DEFAULT,OSD_COLOR_FONT_HIGHLIGHT);
		}
		else if( new_type == INFO_SUB_CHAPTER)
		{
			/* Highlight the 1st item */
			SH_GfxChgAreaColor(SH_CANV1,	50+INFO_DVD_TITLE_W,			5, 	30,		30, COLOR_BLUE_NORM,COLOR_BROWN);
			SH_GfxChgAreaColor(SH_CANV1,	50+INFO_DVD_TITLE_W+33, 		5, 	chapter_w-33,		30, OSD_COLOR_FONT_DEFAULT,OSD_COLOR_FONT_HIGHLIGHT);
		}
		else if( new_type == INFO_SUB_VTIME )
		{
			/* Highlight the 1st item */
			SH_GfxChgAreaColor(SH_CANV1,	50+INFO_DVD_TITLE_W+chapter_w,	    5, 	30,		30, COLOR_BLUE_NORM,COLOR_BROWN);
			SH_GfxChgAreaColor(SH_CANV1,	50+INFO_DVD_TITLE_W+chapter_w+33, 	5,	INFO_DVD_TIME_W-33,	30,OSD_COLOR_FONT_DEFAULT,OSD_COLOR_FONT_HIGHLIGHT);
		}
	}
}

 /******************************************************************************
 * Function name	: GetTimeString 
 * Arguments		:  
 *     IN        
 *					 TempKeeper_t	*data, char *string
 *     OUT       
 *     I/O       
 * Return			: VOID
 *			
 * By			: KIM DO YEON
 * Description		: 
 * Revision		: 1.0
 ******************************************************************************
 */     
VOID GetTimeString(TempKeeper_t	*data, char *string)
{
	if( data->number[0] == 0xFF )
	{
		sprintf(string,"-:--:--");
	} 
	else 
	{
		string[6] = NumberToCharacter( data->number[0] );	
		
		if( data->number[1] == 0xFF )
		{
			string[5] = NumberToCharacter( 0 );
		}	
		else
		{
			string[5] = NumberToCharacter( data->number[1] );
		}	
		
		string[4] = ':';
		
		if( data->number[2] == 0xFF )
		{
			string[3] = NumberToCharacter( 0 );
		}	
		else
		{
			string[3] = NumberToCharacter( data->number[2] );
		}
		
		if( data->number[3] == 0xFF )
		{
			string[2] = NumberToCharacter( 0 );
		}	
		else
		{
			string[2] = NumberToCharacter( data->number[3] );
		}	

		string[1] = ':';
		
		if( data->number[4] == 0xFF )
		{
			string[0] = NumberToCharacter( 0 );
		}	
		else
		{
			string[0] = NumberToCharacter( data->number[4] );
		}	

		string[7] = '\0';
	}
}
#if _APP_CAP_KEY_QUICK_RESPONSE_NEXT_PREV//By QQ 050829

 /******************************************************************************
 * Function name	: GetDvdvInfoValueInQuickResponseSearch 
 * Arguments		:  
 *     IN        
 *					 GetDvdvInfoValueInQuickResponseSearch
 *     OUT       
 *     I/O       
 * Return			: BYTE2
 *			
 * By			: QQ
 * Description		: 
 * Revision		: 1.0
 ******************************************************************************
 */      
BYTE2 GetDvdvInfoValueInQuickResponseSearch(BOOL pttn_flag)
{
	BYTE2 				num ;
	DvdVideoInfo_t 		dvdv;

	GetDvdvInfoInAppLayer(&dvdv);

#if _APP_CAP_KEY_QUICK_RESPONSE_NEXT_PREV	
	if(GetNextPrevFlag() == TRUE)
	{
		num = GetNextPrevSearchValue();
		switch(GetDvdvPlayMode())
		{				
			case DVD_PB_NORMAL:
				if(pttn_flag)
				{
					if(num == 0)
						num = 1;
					else if(num == 0xFFFF)
						num = dvdv.total_chapter;
				}
				else
				{
					num = dvdv.cur_title;
				}
				break;
				
			case DVD_PB_PROGRAM:
				num = GetNextPrevSearchValue();
				
				if(pttn_flag)
					num = gDvd_program.pttn[num];
                                else
					num = gDvd_program.ttn[num];
								
				break;
		}
	}
	else
#endif	
	{
		if(pttn_flag)
			num = dvdv.cur_chapter;
		else
			num = dvdv.cur_title;			
	}
	return num;
}
#endif/*_SUPPORT_INFO_NEXT_PREV_REALTIME_DISP*/

 /******************************************************************************
 * Function name	: OwGetDVDSearchValue 
 *
 * Arguments		:  OSD_InfoSubState_et infosub
 *     IN        	   UCHAR *str_title, UCHAR *str_chapter, UCHAR *str_time
 *
 * Return			: VOID
 *			
 * By				: Qian liping
 * Description		: 
 * Revision			: 1.0 060525
 ******************************************************************************
 */ 
VOID OwGetDVDSearchValue( OSD_InfoSubState_et infosub, UCHAR *str_title, UCHAR *str_chapter , UCHAR *str_time) 
{
	DvdVideoInfo_t 		dvdv;
	Pttn_t				pttn;
	DVDSearch_t			search_value;
	TempKeeper_t	 	data;

#if _APP_CAP_NAV_MMP_PLAY_VIDEO_FILE	
	MmpVideoInfo_t		mmp;
	MMPSearch_t			mmp_search_value;
	
	if(S5H_GetAppType() == APP_MMN)
	{
		GetMmpSearchValue(&mmp_search_value);

		mmp.total_folder	= GetMmpTotalFolders();
		mmp.cur_folder		= GetMmpFolderPlay() + 1;
		mmp.total_file		= GetMmpTotalFiles();
		mmp.cur_file		= GetMmpBgPlay() + 1;
	}
	else
#endif
	{
		GetSearchValue(&search_value);
		GetDvdvInfoInAppLayer(&dvdv);
	}

	
	strcpy((char *)str_time, "");
	strcpy((char *)str_chapter, "");
	strcpy((char *)str_title, "");
	
	switch ( infosub )
	{
		case INFO_SUB_TITLE :
#if _APP_CAP_NAV_MMP_PLAY_VIDEO_FILE	
			if(S5H_GetAppType() == APP_MMN)
			{
				if(mmp_search_value.folder_search == 0)
				{
					sprintf( (CHAR *)str_title, "--/%02d",mmp.total_folder );
					//sprintf( (CHAR *)str_chapter, "---/%03d", mmp.total_file );// Qian liping 060921
					sprintf( (CHAR *)str_chapter, "----/%04d", mmp.total_file );
				}
				else
				{
					sprintf( (CHAR *)str_title, "%02d/%02d", mmp_search_value.folder_search, mmp.total_folder );
				}
			}
			else
#endif
			{
				if(search_value.title_search == 0)
				{
					sprintf( (CHAR *)str_title, "--/%02d",dvdv.total_title );
					GetDvdTtInfo(dvdv.cur_title, &pttn);	
					sprintf( (CHAR *)str_chapter, "---/%03d", pttn );
				}
				else
				{
					sprintf( (CHAR *)str_title, "%02d/%02d", search_value.title_search,dvdv.total_title );
					GetDvdTtInfo(search_value.title_search, &pttn);	
					sprintf( (CHAR *)str_chapter, "---/%03d", pttn );
				}
			}
			break; /*case INFO_SUB_TITLE  */ 

		case INFO_SUB_CHAPTER :
#if _APP_CAP_NAV_MMP_PLAY_VIDEO_FILE
			if(S5H_GetAppType() == APP_MMN)
			{
				mmp_search_value.folder_search = mmp.cur_folder;
				SetMmpSearchValue(mmp_search_value);
				sprintf( (CHAR *)str_title, "%02d/%02d", mmp_search_value.folder_search, mmp.total_folder );
			
				if(mmp_search_value.file_search == 0)
				{
					//sprintf( (CHAR *)str_chapter, "---/%03d", mmp.total_file );// Qian liping 060921
					sprintf( (CHAR *)str_chapter, "----/%04d", mmp.total_file );
				}
				else
				{
					//sprintf((CHAR *)str_chapter, "%03d/%03d", mmp_search_value.file_search, mmp.total_file);
					sprintf((CHAR *)str_chapter, "%04d/%04d", mmp_search_value.file_search, mmp.total_file);
				}
			}
			else
#endif
			{	
				
				// If there is no title search, set suitable title value.
				if(search_value.title_search == 0)
				{
					//Special case : in DVD_DOM_VTSM & DVD_DOM_VMGM
					if(GetDvdDomain() == DVD_DOM_VTSM || GetDvdDomain() == DVD_DOM_VMGM)
						search_value.title_search = 1;
					else
						search_value.title_search = dvdv.cur_title;
					
					SetSearchValue(search_value);
					sprintf( (CHAR *)str_title, "%02d/%02d", search_value.title_search,dvdv.total_title );
				}
		
				GetDvdTtInfo(search_value.title_search, &pttn);	
				
				if(search_value.chapter_search == 0)
				{
					sprintf( (CHAR *)str_chapter, "---/%03d", pttn );
				}
				else
				{
					sprintf((CHAR *)str_chapter, "%03d/%03d", search_value.chapter_search, pttn);
				}
			}
			break;/*case INFO_SUB_CHAPTER  */ 
			
		case INFO_SUB_VTIME:
			if( GetTempValueSetFlag()== TRUE )
			{	// Get search time 
				GetTempValueState( &data );
				GetTimeString(&data, (CHAR *)str_time);	
			}
			else 
			{	// Restore current time
#if _APP_CAP_NAV_MMP_PLAY_VIDEO_FILE	
				if(S5H_GetAppType() == APP_MMN)
				{
					CHAR time_info_str[20], time_remain_str[20];
					MmpGetCurTimeStr((char *)time_info_str, (char *)time_remain_str);
					strcpy((char *)str_time, (char *)time_info_str);
				}
				else
#endif
				{
					BYTE1	hour, min, sec;
					GetDvdvPbTime( &hour, &min, &sec);
					sprintf((char *)str_time,"%d:%02d:%02d", hour, min, sec);
				}
			}
			break;/* INFO_SUB_VTIME */

		case INFO_SUB_NONE:
#if _APP_CAP_NAV_MMP_PLAY_VIDEO_FILE
			if(S5H_GetAppType() == APP_MMN)
			{

⌨️ 快捷键说明

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