📄 2d_engine.h
字号:
#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 + -