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

📄 osd_draw_program.c

📁 SAMSUNG 5009的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************
 *   Filename    : OSD_draw_program_BASIC.c
 *   Start       : 2003. 8. 25
 *   By          : Hongsik Park
 *   Contact     : hongsik7.park@samsung.com
 *   Description : 
 *		For another scheme of OSD resource manageent.
 *
 ******************************************************************************
 */
#ifndef _OSD_DRAW_PROGRAM_BASIC_C_
#define _OSD_DRAW_PROGRAM_BASIC_C_ 
#include <stdio.h>
#include <stdlib.h>
#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 "DRIVER/FS/Fs_api.h"


#include "CUSTOM/Osd_types.h"

#include "CUSTOM/Key_handler_setup.h"

#include "MAIN/Appl_types.h"
#include "MAIN/DVD/Dvd_predef.h"
#include "MAIN/DVD/Dvd_common.h"

#include "MAIN/Uop_msg.h"

#include "MAIN/SVCD/Svcd_types.h"
#include "MAIN/SVCD/Svcd_ext.h"
#include "MAIN/SVCD/Svcd_show.h"
#include "CUSTOM/Firm_update.h"

#include "MAIN/MMP/Mmp_common.h"
#include "MAIN/MMP/Mmp_predef.h"

#include "DRIVER/FS/Fs_api.h"	

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

#include "Osd_draw_program.h"

extern CHAR PgmSetMediaTypeDispStrNum(BOOL child);

/******************************************************************************
 * Function name	: SetNumberString
 * Arguments		:  
 *     IN        			CHAR num,CHAR *array
 *			
 *     OUT       
 *     I/O       
 * Return			:  VOID
 *			
 * By			: QQ
 * Description		: 
 * Revision		: 1.0
 ******************************************************************************
 */
VOID SetNumberString(CHAR num,CHAR *array)
{
	CHAR str[5],str1[5];

	strcpy(str,"%0");
	sprintf(str1,"%01d",num);
	strcat(str,str1);
	strcat(str,"d");
	strcpy(array,str);
}

AttachedFuncExt PgmFuncExtension = NULL;
PgmCtrlEdit_st edit_func[] = {
	{OwGfxPgmDrawParentNum,OwGfxPgmDrawParentDummy,OwGfxPgmHLParentItem,OwGfxPgmUnHLParentItem},
	{OwGfxPgmDrawChildNum,OwGfxPgmDrawChildDummy,OwGfxPgmHLChildItem,OwGfxPgmUnHLChildItem}
};
PgmCtrlArea_st area_func[] = {
	{OwGfxPgmHLBtn,OwGfxPgmUnHLBtn},
	{OwGfxPgmHL,OwGfxPgmUnHL},
};

/******************************************************************************
 * Function name	: OwDrawProgram
 * Arguments		:  
 *     IN        			VOID
 *			
 *     OUT       
 *     I/O       
 * Return			:  VOID
 *			
 * By			: QQ
 * Description		: 
 * Revision		: 1.0
 ******************************************************************************
 */
VOID OwDrawProgram(VOID)
{
	BYTE2		i = 0 ;
	CHAR *str[][3] = {{"DVD","Tt","Chp"},
					{"VCD","Trk","No."},
					{"MMN","Dir","File"},
				};
	CHAR str_temp[20];
	BYTE2 x_offset,y_offset;
	S5H_App_t app_type = S5H_GetAppType() ;
	BYTE2 tmp_value,y,x;

	y = PGM_Y;
	x = PGM_X;
	
	OwGetOsdCenterPosition( &x,&y, PGM_W, PGM_H );
	SH_GfxSetCanvas(SH_CANV1, x, y, PGM_W, PGM_H);

	SH_GfxDrawRec( SH_CANV1, 0 , 0 , PGM_W, PGM_H, OSD_COLOR_BORDER );
	SH_GfxDrawRec( SH_CANV1, 3, 51 , PGM_W-6, PGM_H-6-48, OSD_COLOR_TRANS_BG );
	SH_GfxDrawRec( SH_CANV1, 3, 3, PGM_W-6, PGM_TOP_H, OSD_COLOR_TRANS_BG );
	SH_GfxDrawRec( SH_CANV1, PGM_FILL2_X-PGM_X, PGM_SEL_Y-PGM_Y, PGM_FILL_W/2,34, COLOR_BLUE );
	SH_GfxDrawRec( SH_CANV1, PGM_FILL2_X+PGM_FILL_W/2-PGM_X, PGM_SEL_Y-PGM_Y, PGM_FILL_W/2,34, COLOR_GRAY_NORM );
	SH_GfxDrawRec( SH_CANV1, PGM_SEL_X-PGM_X, PGM_SEL_Y-PGM_Y, PGM_SEL_W, PGM_SEL_H,  COLOR_BLUE_NORM );
	SH_GfxDrawRec( SH_CANV1, PGM_SEL_X+PGM_SEL_W+PGM_SEL_GAP-PGM_X, PGM_SEL_Y-PGM_Y, PGM_SEL_W, PGM_SEL_H, COLOR_BLUE_NORM );
	SH_GfxDrawRec( SH_CANV1, PGM_LINE1_BG_X-PGM_X, PGM_FILL_Y-PGM_Y, PGM_COLUME_W, PGM_FILL_H, COLOR_BLUE_NORM );
	SH_GfxDrawRec( SH_CANV1, PGM_LINE2_BG_X-PGM_X, PGM_FILL_Y-PGM_Y, PGM_COLUME_W, PGM_FILL_H, COLOR_BLUE_NORM );
	SH_GfxDrawRec( SH_CANV1, PGM_LINE3_BG_X-PGM_X, PGM_FILL_Y-PGM_Y, PGM_COLUME_W, PGM_FILL_H, COLOR_BLUE_NORM );
	SH_GfxDrawRec( SH_CANV1, PGM_LINE4_BG_X-PGM_X, PGM_FILL_Y-PGM_Y, PGM_COLUME_W, PGM_FILL_H, COLOR_BLUE_NORM );

	SH_GfxDrawImage( SH_CANV1, GetDiscImgID() , 5, 8 );
	SH_GfxDrawImage( SH_CANV1, IMG_EXT_BOOK , 5, 23 );

	if (GetDiscState() == CD_DA && GetMixedCdState() == FALSE)
	{
		sprintf(str_temp, "%s - %s ", "CD" ,gpProgramList[MENU_LANG]);	
	}
	else
	{
		sprintf(str_temp, "%s - %s ", str[app_type-1][0],gpProgramList[MENU_LANG]);	
	}
	SH_GfxDrawStr( SH_CANV1 , str_temp , PGM_TOP_FIX_TXT_X-PGM_X , PGM_TOP_TXT_Y-PGM_Y, OSD_COLOR_CURSOR_HIGHLIGHT );
	strcpy(str_temp, str[app_type-1][1]);
	OwGetStrCenterPos(str_temp , PGM_FILL_W/2 , 34 , &x_offset , &y_offset );
	SH_GfxDrawStr( SH_CANV1 , str_temp , PGM_FILL2_X-PGM_X+x_offset, PGM_SEL_Y+2-PGM_Y , NULL );
	strcpy(str_temp, str[app_type-1][2]);
	OwGetStrCenterPos(str_temp , PGM_FILL_W/2 , 34 , &x_offset , &y_offset );
	SH_GfxDrawStr( SH_CANV1 , str_temp , PGM_FILL2_X+PGM_FILL_W/2-PGM_X+x_offset, PGM_SEL_Y+2-PGM_Y , NULL );
	strcpy(str_temp, "Play");
	OwGetStrCenterPos(str_temp , PGM_SEL_W-40, 30 , &x_offset , &y_offset );
	SH_GfxDrawStr( SH_CANV1 , str_temp , PGM_SEL_X+20-PGM_X+x_offset, PGM_SEL_Y+3-PGM_Y , NULL );
	strcpy(str_temp, "Clear All");
	OwGetStrCenterPos(str_temp , PGM_SEL_W-20, 30 , &x_offset , &y_offset );
	SH_GfxDrawStr( SH_CANV1 , str_temp , PGM_SEL_X+PGM_SEL_W+PGM_SEL_GAP+10-PGM_X+ x_offset, PGM_SEL_Y+3-PGM_Y , NULL );

	strcpy( str_temp , gpMax[MENU_LANG] );
	SH_GfxDrawStr( SH_CANV1 , str_temp , PGM_FILL1_X+MAX_POS-PGM_X, PGM_TOP_TXT_Y+1-PGM_Y , NULL );
	strcpy( str_temp , gpTotal[MENU_LANG] );
	SH_GfxDrawStr( SH_CANV1 , str_temp , PGM_FILL1_X+10-PGM_X, PGM_SEL_Y+2-PGM_Y , NULL );
	
	for(i = 0 ; i < 20/*MAX_PROGRAM_NUM*/; i++)
	{
		tmp_value = GetPgmInputValue( i, PGM_EDIT_PARENT);
		if(app_type == APP_VCD)
			tmp_value = i + 1;
	
		if (tmp_value == 0xFFFF)
			OwGfxPgmDrawParentDummy(i,NULL);
		else
			OwGfxPgmDrawParentNum(i, tmp_value);

		tmp_value = GetPgmInputValue(i, PGM_EDIT_CHILD);
		
		if (tmp_value == 0xFFFF)
			OwGfxPgmDrawChildDummy(i,NULL);
		else
			OwGfxPgmDrawChildNum(i, tmp_value);

	}

	OwGfxPgmHLChange();
	OwGfxPgmDrawMaxNum();
	OwGfxPgmDrawTotalNum();

	SH_GfxShowCanvas(SH_CANV1, TRUE); 
}

/******************************************************************************
 * Function name	: OwGfxPgmHLorUnHLItemDraw
 * Arguments		:  
 *     IN        			OSD_WndHandlerComm_st *wnd,BOOL hl
 *			
 *     OUT       
 *     I/O       
 * Return			:  VOID
 *			
 * By			: QQ
 * Description		: 
 * Revision		: 1.0
 ******************************************************************************
 */
VOID OwGfxPgmHLorUnHLItemDraw(BYTE2	x_pos, BYTE2	y_pos,BYTE2	width,BYTE2	height , BOOL hl )
{
	BYTE1	key_color,color,font_key_color,font_color;

	if(hl)
	{
		color 		= OSD_SETUP_COLOR_FONT_HIGHLIGHT;
		key_color 	= COLOR_BLUE_NORM;
		font_key_color= OSD_SETUP_COLOR_FONT_DEFAULT;
		font_color	= OSD_SETUP_COLOR_FONT_HIGHLIGHT;
	}
	else
	{
		color 		= COLOR_BLUE_NORM;
		key_color 	= OSD_SETUP_COLOR_FONT_HIGHLIGHT;
		font_key_color= OSD_SETUP_COLOR_FONT_HIGHLIGHT;
		font_color	= OSD_SETUP_COLOR_FONT_DEFAULT;
	}
	
	SH_GfxChgAreaColor( SH_CANV1 , x_pos , y_pos ,width , height , font_key_color ,font_color );
	SH_GfxChgAreaColor( SH_CANV1 , x_pos-3 , y_pos-3 ,width+6 , height+6 , key_color , color );
	
}

/******************************************************************************
 * Function name	: OwGfxPgmHLItem
 * Arguments		:  
 *     IN        			OSD_WndHandlerComm_st *wnd
 *			
 *     OUT       
 *     I/O       
 * Return			:  VOID
 *			
 * By			: QQ
 * Description		: 
 * Revision		: 1.0
 ******************************************************************************
 */
VOID OwGfxPgmHLItem(BYTE2	x_pos, BYTE2	y_pos,BYTE2	width,BYTE2	height )
{
	OwGfxPgmHLorUnHLItemDraw(x_pos, y_pos , width , height ,TRUE );
}

/******************************************************************************
 * Function name	: OwGfxPgmUnHLItem
 * Arguments		:  
 *     IN        			OSD_WndHandlerComm_st *wnd
 *			
 *     OUT       
 *     I/O       
 * Return			:  VOID
 *			
 * By			: QQ
 * Description		: 
 * Revision		: 1.0
 ******************************************************************************
 */
VOID OwGfxPgmUnHLItem(BYTE2	x_pos, BYTE2	y_pos,BYTE2	width,BYTE2	height )
{
	OwGfxPgmHLorUnHLItemDraw(x_pos, y_pos , width , height,FALSE);
}

/******************************************************************************
 * Function name	: OwGfxPgmDrawSetSelItemTrk
 * Arguments		:  
 *     IN        			BYTE1 num,char *str
 *			
 *     OUT       
 *     I/O       
 * Return			:  VOID
 *			
 * By			: QQ
 * Description		: 
 * Revision		: 1.0
 ******************************************************************************
 */
VOID OwGfxPgmDrawSetSelItemTrk(BYTE1 num,char *str)
{
	OSD_Rectangle_st		winrect_bg,winrect_str ;
	CHAR str_temp[5];
	BYTE2 x_offset,y_offset;
	winrect_bg.x_pos = PGM_ITEM_GAP+PGM_COLUME_GAP+(PGM_COLUME_GAP + PGM_COLUME_W)*(num/5) ;
	winrect_bg.y_pos = PGM_FILL_Y+19+(PGM_ITEM_H+17)*(num%5)-PGM_Y;
	winrect_str.x_pos = winrect_bg.x_pos;
	winrect_str.y_pos = winrect_bg.y_pos;

	if(*str != NULL)
	{
		strcpy(str_temp , str);
		OwGetStrCenterPos(str_temp ,  PGM_ITEM_TRK_W, PGM_ITEM_H , &x_offset , &y_offset );
		SH_GfxDrawRec(SH_CANV1, winrect_bg.x_pos , winrect_bg.y_pos , PGM_ITEM_TRK_W, PGM_ITEM_H , COLOR_BLUE );
		SH_GfxDrawStr( SH_CANV1 , str_temp , winrect_str.x_pos + x_offset , winrect_str.y_pos  , NULL );
	}
	else
	{
		if(PgmFuncExtension != NULL)
			PgmFuncExtension(winrect_bg.x_pos , winrect_bg.y_pos , PGM_ITEM_TRK_W, PGM_ITEM_H );
	}
}

/******************************************************************************
 * Function name	: OwGfxPgmDrawSetSelItemChp
 * Arguments		:  
 *     IN        			BYTE1 num,char *str
 *			
 *     OUT       
 *     I/O       
 * Return			:  VOID
 *			
 * By			: QQ
 * Description		: 
 * Revision		: 1.0
 ******************************************************************************
 */
VOID OwGfxPgmDrawSetSelItemChp(BYTE1 num,char *str)
{
	OSD_Rectangle_st		winrect_bg,winrect_str ;
	CHAR str_temp[5];
	BYTE2 x_offset,y_offset;
	winrect_bg.x_pos = PGM_ITEM_GAP + PGM_ITEM_TRK_W + PGM_TRK_CHP_GAP +PGM_COLUME_GAP+(PGM_COLUME_GAP + PGM_COLUME_W)*(num/5) ;
	winrect_bg.y_pos = PGM_FILL_Y+19+(PGM_ITEM_H+17)*(num%5)-PGM_Y;
	winrect_str.x_pos = winrect_bg.x_pos;
	winrect_str.y_pos = winrect_bg.y_pos;

	if(*str != NULL)
	{
		strcpy(str_temp , str);
		OwGetStrCenterPos(str_temp ,  PGM_ITEM_CHP_W, PGM_ITEM_H , &x_offset , &y_offset );
		SH_GfxDrawRec(SH_CANV1 , winrect_bg.x_pos , winrect_bg.y_pos , PGM_ITEM_CHP_W, PGM_ITEM_H , COLOR_BLUE );
		SH_GfxDrawStr( SH_CANV1 , str_temp , winrect_str.x_pos + x_offset , winrect_str.y_pos  , NULL );
	}
	else
	{
		if( PgmFuncExtension != NULL )
			PgmFuncExtension(winrect_bg.x_pos , winrect_bg.y_pos , PGM_ITEM_CHP_W, PGM_ITEM_H );
	}
}

/******************************************************************************
 * Function name	: OwGfxPgmDrawParentDummy
 * Arguments		:  
 *     IN        			BYTE1 index,BYTE2 num
 *			
 *     OUT       
 *     I/O       
 * Return			:  VOID
 *			
 * By			: QQ
 * Description		: 
 * Revision		: 1.0
 ******************************************************************************
 */
VOID OwGfxPgmDrawParentDummy(BYTE1 index,BYTE2 num)
{
	char str[5];
	UCHAR i = PgmSetMediaTypeDispStrNum(FALSE);
	strcpy((char*)str, "");
	while(i--)
	{
		strcat((char*)str, "-");
	}
	
	OwGfxPgmDrawSetSelItemTrk(index,str);
}

/******************************************************************************
 * Function name	: OwGfxPgmDrawChildDummy
 * Arguments		:  
 *     IN        			BYTE1 index,BYTE2 num
 *			
 *     OUT       
 *     I/O       
 * Return			:  VOID
 *			
 * By			: QQ
 * Description		: 

⌨️ 快捷键说明

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