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

📄 2d_engine.h

📁 最新MTK手机软件源码
💻 H
📖 第 1 页 / 共 3 页
字号:
	#define G2D_CMQ_LINE_DELTA_X_ADDR			0x03120000
	#define G2D_CMQ_DEST_HEIGHT_ADDR				0x03180000
	#define G2D_CMQ_DEST_WIDTH_ADDR				0x031A0000
	#define G2D_CMQ_PAT_FG_COLOR_L_ADDR			0x04000000
	#define G2D_CMQ_PAT_FG_COLOR_H_ADDR			0x04020000
	#define G2D_CMQ_GRAD_START_COLOR_L_ADDR	0x04000000
	#define G2D_CMQ_GRAD_START_COLOR_H_ADDR	0x04020000
	#define G2D_CMQ_PAT_BG_COLOR_L_ADDR			0x04040000
	#define G2D_CMQ_PAT_BG_COLOR_H_ADDR			0x04060000
	#define G2D_CMQ_XY_SQRT_L_ADDR				0x04040000
	#define G2D_CMQ_XY_SQRT_H_ADDR				0x04060000
	#define G2D_CMQ_CLIP_TOP_Y_ADDR				0x04080000
	#define G2D_CMQ_CLIP_LEFT_X_ADDR				0x040A0000
	#define G2D_CMQ_CLIP_BOTTOM_Y_ADDR			0x040C0000
	#define G2D_CMQ_CLIP_RIGHT_X_ADDR			0x040E0000
	#define G2D_CMQ_ALPHA_GRAD_X_L_ADDR			0x04100000
	#define G2D_CMQ_ALPHA_GRAD_X_H_ADDR			0x04120000
	#define G2D_CMQ_BEZIER_BUF_START_L_ADDR	0x04100000
	#define G2D_CMQ_BEZIER_BUF_START_H_ADDR	0x04120000
	#define G2D_CMQ_TRIANGLE_SLOPE_R_L_ADDR	0x04100000
	#define G2D_CMQ_TRIANGLE_SLOPE_R_H_ADDR	0x04120000
	#define G2D_CMQ_MASK_BASE_L_ADDR				0x04100000
	#define G2D_CMQ_MASK_BASE_H_ADDR				0x04120000
	#define G2D_CMQ_RED_GRAD_X_L_ADDR			0x04140000
	#define G2D_CMQ_RED_GRAD_X_H_ADDR			0x04160000
	#define G2D_CMQ_BEZIER_SUBDIV_TIME_ADDR	0x04140000
	#define G2D_CMQ_GREEN_GRAD_X_L_ADDR			0x04180000
	#define G2D_CMQ_GREEN_GRAD_X_H_ADDR			0x041A0000
	#define G2D_CMQ_BLUE_GRAD_X_L_ADDR			0x041C0000
	#define G2D_CMQ_BLUE_GRAD_X_H_ADDR			0x041E0000
	#define G2D_CMQ_ALPHA_GRAD_Y_L_ADDR			0x04200000
	#define G2D_CMQ_ALPHA_GRAD_Y_H_ADDR			0x04220000
	#define G2D_CMQ_RED_GRAD_Y_L_ADDR			0x04240000
	#define G2D_CMQ_RED_GRAD_Y_H_ADDR			0x04260000
	#define G2D_CMQ_GREEN_GRAD_Y_L_ADDR			0x04280000
	#define G2D_CMQ_GREEN_GRAD_Y_H_ADDR			0x042A0000
	#define G2D_CMQ_BLUE_GRAD_Y_L_ADDR			0x042C0000
	#define G2D_CMQ_BLUE_GRAD_Y_H_ADDR			0x042E0000
#endif

#if (defined(__MTK_TARGET__))
typedef enum
{
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
	G2D_OPERATION_NULL=0,
	G2D_OPERATION_RECTANGLE_FILL,
	G2D_OPERATION_BITBLT,
	G2D_OPERATION_ALPHA_BLENDING,
	G2D_OPERATION_LINE_DRAWING,
	G2D_OPERATION_FONT_CACHING,
	G2D_OPERATION_END
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
	G2D_OPERATION_LINE_DRAWING=0,
	G2D_OPERATION_CIRCLE_DRWAING,
	G2D_OPERATION_BEZIER_CURVE_DRAWING,
	G2D_OPERATION_TRIANGLE_FILL,
	G2D_OPERATION_RECTANGLE_FILL=8,
	G2D_OPERATION_BITBLT,
	G2D_OPERATION_ALPHA_BLENDING,
	G2D_OPERATION_ROP_BITBLT,
	G2D_OPERATION_FONT_CACHING,
	G2D_OPERATION_H_LINE_FILL,
	G2D_OPERATION_H_LINE_COPY_MASK,
	G2D_OPERATION_END
#endif
} 	g2d_operation_enum;
#else
typedef enum
{
	G2D_OPERATION_LINE_DRAWING=0,
	G2D_OPERATION_CIRCLE_DRWAING,
	G2D_OPERATION_BEZIER_CURVE_DRAWING,
	G2D_OPERATION_TRIANGLE_FILL,
	G2D_OPERATION_RECTANGLE_FILL=8,
	G2D_OPERATION_BITBLT,
	G2D_OPERATION_ALPHA_BLENDING,
	G2D_OPERATION_ROP_BITBLT,
	G2D_OPERATION_FONT_CACHING,
	G2D_OPERATION_H_LINE_FILL,
	G2D_OPERATION_H_LINE_COPY_MASK,
	G2D_OPERATION_END
} 	g2d_operation_enum;
#endif

typedef struct
{
	g2d_operation_enum g2d_operation_mode;
	kal_uint32 src_base_address;
	kal_uint16 src_pitch;
	kal_uint16 src_pitch_width;
	kal_uint16 dest_pitch_width;
	short src_x;
	short src_y;
	short dest_x;
	short dest_y;
	kal_uint16 src_width;
	kal_uint16 src_height;
	kal_uint32 src_key_color;
	kal_uint16 src_alpha;
	kal_uint32 pat_fg_color;
	kal_uint32 pat_bg_color;
	kal_uint16 dest_alpha;
	kal_uint32 dest_base_address;
	kal_uint16 dest_pitch;
	kal_uint16 dest_width;
	kal_uint16 dest_height;
	short start_x;
	short start_y;
	short end_x;
	short end_y;
	kal_uint16 clip_start_x;
	kal_uint16 clip_start_y;
	kal_uint16 clip_end_x;
	kal_uint16 clip_end_y;
	kal_uint8 dotted_mode;
	kal_uint8 bitblt_mode;
	kal_uint8 font_background_mode;
	kal_uint8 italic_mode;
	kal_uint16 dest_color_mode;
	kal_uint16 src_color_mode;
	kal_uint8 src_key_mode;
	kal_uint8 clip_mode;
#if (defined(MT6228)||defined(MT6229)||defined(MT6230)||(!defined(__MTK_TARGET__)))
	kal_bool g2d_cmq_mode;
	kal_uint8 rop_mode;
	kal_uint8 line_anti_alias_mode;
	kal_uint8 color_gradient_mode;
	kal_uint8 circle_drawing_arc;
	kal_uint8 bezier_curve_divide_time;
	kal_uint8 font_start_position;
	kal_uint8 font_order;
	kal_uint16 circle_radius;
	kal_uint32 triangle_left_slope;
	kal_uint32 triangle_right_slope;
	short middle_x;
	short middle_y;
	double alpha_gradient_x;
	double alpha_gradient_y;
	double red_gradient_x;
	double red_gradient_y;
	double green_gradient_x;
	double green_gradient_y;
	double blue_gradient_x;
	double blue_gradient_y;
	kal_uint32 buffer_address;
	kal_uint16 buffer_size;
#endif
} g2d_parameter_struct;

typedef struct
{
	kal_uint32 base_address;
	short x;
	short y;
	kal_uint16 pitch;
	kal_uint16 width;
	kal_uint16 height;
	kal_uint16 color_mode;
	kal_uint16 clip_x1;
	kal_uint16 clip_x2;
	kal_uint16 clip_y1;
	kal_uint16 clip_y2;
} g2d_buffer_struct;

typedef struct
{
	kal_bool tilt_mode;
	kal_bool bold_mode;
	kal_bool border_mode;
	kal_bool enable_bg_color;
	kal_uint32 fg_color;
	kal_uint32 bg_color;
}	g2d_font_attribute_struct;

typedef struct 
{
	kal_uint32 font_address;
	kal_uint32 bit_offset;
	kal_uint16 font_width;
	kal_uint16 font_height;
	short start_x;
	short start_y;
}	g2d_font_struct;

typedef struct
{
	kal_bool 	tilt_mode;
	kal_bool 	src_key_mode;
	kal_uint8 	blt_direction;
	kal_uint32 	src_key_color;
	kal_bool 	alpha_blending_mode;
	kal_uint8 	alpha_value;
	kal_bool 	rop_mode;
	kal_uint8 	rop_value;
	kal_uint8 	transform_value;
	g2d_buffer_struct *src_list;
	kal_uint16 	list_count;
}	g2d_bitblt_struct;

typedef struct
{
	short circle_center_x;
	short circle_center_y;
	kal_uint16 circle_radius;
	kal_uint16 start_angle;
	kal_uint16 end_angle;
	kal_uint32 circle_color;
}	g2d_circle_struct;

typedef struct 
{
	short start_x;
	short start_y;
	short middle_x;
	short middle_y;
	short end_x;
	short end_y;
	kal_uint32 line_color;
}	g2d_bezier_curve_struct;

typedef struct 
{
	short *line_end_coordinate;
	kal_uint16 line_count;
	kal_bool antialias_mode;
	kal_bool dotted_mode;
	kal_uint32 line_color;
}	g2d_line_struct;

typedef struct
{
	short *point_coordinate;
	kal_uint16 polygon_number;
	kal_bool antialias_mode;
	kal_bool dotted_mode;
	kal_uint32 line_color;
}	g2d_polygon_struct;

typedef struct
{
	short first_x;
	short first_y;
	short second_x;
	short second_y;
	short middle_y;
	int slope1;
	int slope2;
	int slope3;
	int slope4;
	kal_bool two_triangle;		/* KAL_TRUE: draw two triangle, KAL_FALSE: draw one triangle */
}	g2d_triangle_para_struct;

typedef struct
{
	short *point_coordinate;
	kal_uint16 point_number;
	kal_uint32 fill_color;
}	g2d_polygon_fill_struct;

typedef struct
{
	short start_x;
	short start_y;
	kal_uint16 width;
	kal_uint16 height;
	kal_uint32 delta_gradient[8];
	kal_uint32 fill_color;
	kal_bool gradient_fill_mode;		/* 1: gradient rectangle fill */
	kal_bool tilt_mode;
}	g2d_rectangle_fill_struct;

typedef struct
{
	short *line_start_coordinate;				/* line_number *2 */
	kal_uint16 *line_width;				/* line_number */
	kal_uint16 line_number;
	kal_int32 *delta_gardient;			/* line_number *4 */
	kal_uint32 line_color;
}	g2d_gradient_line_struct;

typedef struct
{
	g2d_buffer_struct *src;
	kal_uint32 *mask_address;
	kal_uint32 mask_length;
	short *line_start_coordinate;
	kal_uint16 *line_width;
	kal_uint16 line_number;
}	g2d_line_copy_struct;

/* function declare in 2D_engine.c */

typedef enum
{
	G2D_OWNER_NONE=0,
	G2D_OWNER_GDI,
	G2D_OWNER_LCD,
	G2D_OWNER_ALL
}	g2d_owner_enum;

void g2d_LISR(void);
void g2d_HISR(void);
void g2d_init(void);
void g2d_deinit(void);
void g2d_set_tilt_data(kal_uint8 index, kal_uint8 tilt_value);
void g2d_set_color_palette(kal_uint8 index, kal_uint32 color);
void g2d_multi_bitblt(g2d_parameter_struct *g2d_data);
void g2d_accelerator(g2d_parameter_struct *g2d_data);
void g2d_set_clip_window(g2d_parameter_struct *g2d_data);
void g2d_alpha_bitblt(g2d_parameter_struct *g2d_data);
void g2d_line_drawing(g2d_parameter_struct *g2d_data);
void g2d_font_caching(g2d_parameter_struct *g2d_data);
void g2d_rectangle_fill(g2d_parameter_struct *g2d_data);
void g2d_bitblt(g2d_parameter_struct *g2d_data);

void g2d_sw_font_caching(g2d_parameter_struct *g2d_data);
void g2d_font_begin(kal_uint32 dest_address,kal_uint16 dest_pitch,kal_bool is_italic,
						int clipx1,int clipy1,
						int clipx2,int clipy2);
void g2d_font_end(void);
void g2d_font_draw(kal_uint32 font_address, int width,int height,int x,int y);
void g2d_font_color(kal_uint32 fg_color);
void g2d_rectangle_fill_without_clip(kal_uint32 dest_address,kal_uint32 dest_pitch,int x,int y,kal_uint32 width_height,kal_uint32 color);

void g2d_get_triangle_slope(short start_x, short start_y, short middle_x, short middle_y,
									 short end_x, short end_y,g2d_triangle_para_struct *g2d_tri_data);
#if (defined(MT6228)||defined(MT6229)||defined(MT6230))
void g2d_triangle_fill(g2d_parameter_struct *g2d_data);
void g2d_rop_bitblt(g2d_parameter_struct *g2d_data);
void g2d_circle_drawing(g2d_parameter_struct *g2d_data);
void g2d_bezier_curve_drawing(g2d_parameter_struct *g2d_data);
void g2d_line_gradient_drawing(g2d_parameter_struct *g2d_data);
void g2d_line_copy_drawing(g2d_parameter_struct *g2d_data);
#endif

kal_bool g2d_begin(kal_uint8 g2d_owner_id, void (*g2d_cb)());
void g2d_end(kal_uint8 g2d_owner_id);
void g2d_set_dest_buffer(kal_uint8 g2d_owner_id, g2d_buffer_struct *dest);
void g2d_font_set_attribute(kal_uint8 g2d_owner_id, g2d_font_attribute_struct *g2d_font_attr);
void g2d_draw_font(kal_uint8 g2d_owner_id, g2d_font_struct *g2d_font_data);
void g2d_bitblt1(kal_uint8 g2d_owner_id, g2d_bitblt_struct *g2d_bitblt_data);
void g2d_draw_arc(kal_uint8 g2d_owner_id, g2d_circle_struct *g2d_circle_data);
void g2d_draw_bezier_curve(kal_uint8 g2d_owner_id, g2d_bezier_curve_struct *g2d_bezier_data);
void g2d_draw_line(kal_uint8 g2d_owner_id, g2d_line_struct *g2d_line_data);
void g2d_draw_polygon(kal_uint8 g2d_owner_id, g2d_polygon_struct *g2d_polygon_data);
void g2d_fill_polygon(kal_uint8 g2d_owner_id, g2d_polygon_fill_struct *g2d_fill_polygon_data);
void g2d_fill_rectangle(kal_uint8 g2d_owner_id, g2d_rectangle_fill_struct *g2d_rec_fill_data);
void g2d_draw_gradient_h_line(kal_uint8 g2d_owner_id, g2d_gradient_line_struct *g2d_h_line_data);
void g2d_copy_h_line(kal_uint8 g2d_owner_id, g2d_line_copy_struct *g2d_copy_h_line_data);
#ifndef __MTK_TARGET__
void g2d_sw_bitblt_operation(g2d_parameter_struct *g2d_data);
void g2d_sw_circle_drawing(g2d_parameter_struct *g2d_data);
void g2d_sw_line_drawing(g2d_parameter_struct *g2d_data);
void g2d_sw_bezier_curve_drawing(g2d_parameter_struct *g2d_data);
void g2d_sw_triangle_fill(g2d_parameter_struct *g2d_data);
void g2d_sw_rectangle_fill(g2d_parameter_struct *g2d_data);
void g2d_sw_hline_copy(g2d_parameter_struct *g2d_data);
void g2d_sw_hline_gradient(g2d_parameter_struct *g2d_data);
#endif
#endif /* MT6219/MT6226/MT6227/MT6228/MT6229/MT6230 */
#endif /* _G2DENGINE_H */


⌨️ 快捷键说明

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