comparison include/mb_graph_engine_cairo.h @ 473:ba64f928542b Android_Skia

Remove mbe_matrix_t type. The struct mbe_matrix_t is defined in a layout accoriding definition of Cairo. It is not feasible for all graphic engine. Now, we start supporting of other graphic engine; Skia, so use type of (co_aix[6]) defined and used by MadButterfly intead of mbe_matrix_t. And, bridges of graphic engines are responsible for translate matrics into the matrix type of the graphic enigne.
author Thinker K.F. Li <thinker@branda.to>
date Thu, 12 Nov 2009 21:32:58 +0800
parents e98ae1407ca2
children e813ac222f48
comparison
equal deleted inserted replaced
472:4254eaa699d0 473:ba64f928542b
25 #define mbe_pattern_create_radial cairo_pattern_create_radial 25 #define mbe_pattern_create_radial cairo_pattern_create_radial
26 #define mbe_pattern_create_linear cairo_pattern_create_linear 26 #define mbe_pattern_create_linear cairo_pattern_create_linear
27 #define mbe_xlib_surface_create cairo_xlib_surface_create 27 #define mbe_xlib_surface_create cairo_xlib_surface_create
28 #define mbe_scaled_font_destroy cairo_scaled_font_destroy 28 #define mbe_scaled_font_destroy cairo_scaled_font_destroy
29 #define mbe_font_face_reference cairo_font_face_reference 29 #define mbe_font_face_reference cairo_font_face_reference
30 #define mbe_pattern_set_matrix cairo_pattern_set_matrix
31 #define mbe_font_face_destroy cairo_font_face_destroy 30 #define mbe_font_face_destroy cairo_font_face_destroy
32 #define mbe_paint_with_alpha cairo_paint_with_alpha 31 #define mbe_paint_with_alpha cairo_paint_with_alpha
33 #define mbe_surface_destroy cairo_surface_destroy 32 #define mbe_surface_destroy cairo_surface_destroy
34 #define mbe_set_source_rgba cairo_set_source_rgba 33 #define mbe_set_source_rgba cairo_set_source_rgba
35 #define mbe_set_scaled_font cairo_set_scaled_font 34 #define mbe_set_scaled_font cairo_set_scaled_font
63 typedef cairo_text_extents_t mbe_text_extents_t; 62 typedef cairo_text_extents_t mbe_text_extents_t;
64 typedef cairo_scaled_font_t mbe_scaled_font_t; 63 typedef cairo_scaled_font_t mbe_scaled_font_t;
65 typedef cairo_font_face_t mbe_font_face_t; 64 typedef cairo_font_face_t mbe_font_face_t;
66 typedef cairo_surface_t mbe_surface_t; 65 typedef cairo_surface_t mbe_surface_t;
67 typedef cairo_pattern_t mbe_pattern_t; 66 typedef cairo_pattern_t mbe_pattern_t;
68 typedef cairo_matrix_t mbe_matrix_t;
69 typedef cairo_t mbe_t; 67 typedef cairo_t mbe_t;
70 typedef float co_aix; 68 typedef float co_aix;
69
70 #define MB_MATRIX_2_CAIRO(cmtx, mtx) { \
71 (cmtx).xx = (mtx)[0]; \
72 (cmtx).xy = (mtx)[1]; \
73 (cmtx).x0 = (mtx)[2]; \
74 (cmtx).yx = (mtx)[3]; \
75 (cmtx).yy = (mtx)[4]; \
76 (cmtx).y0 = (mtx)[5]; \
77 }
78
71 79
72 80
73 extern mbe_font_face_t * mbe_query_font_face(const char *family, 81 extern mbe_font_face_t * mbe_query_font_face(const char *family,
74 int slant, int weight); 82 int slant, int weight);
75 extern void mbe_free_font_face(mbe_font_face_t *face); 83 extern void mbe_free_font_face(mbe_font_face_t *face);
76 84
85
86 static void mbe_pattern_set_matrix(mbe_pattern_t *ptn,
87 const co_aix matrix[6]) {
88 cairo_matrix_t cmtx;
89
90 MB_MATRIX_2_CAIRO(cmtx, matrix);
91 cairo_pattern_set_matrix(ptn, &cmtx);
92 }
77 93
78 static void mbe_clear(mbe_t *canvas) { 94 static void mbe_clear(mbe_t *canvas) {
79 cairo_operator_t old_op; 95 cairo_operator_t old_op;
80 96
81 old_op = cairo_get_operator(canvas); 97 old_op = cairo_get_operator(canvas);
92 cairo_paint(canvas); 108 cairo_paint(canvas);
93 cairo_set_operator(canvas, saved_op); 109 cairo_set_operator(canvas, saved_op);
94 } 110 }
95 111
96 static mbe_scaled_font_t * 112 static mbe_scaled_font_t *
97 mbe_scaled_font_create(mbe_font_face_t *face, mbe_matrix_t *fnt_mtx, 113 mbe_scaled_font_create(mbe_font_face_t *face, co_aix fnt_mtx[6],
98 mbe_matrix_t *ctm) { 114 co_aix ctm[6]) {
99 cairo_font_options_t *options; 115 cairo_font_options_t *options;
100 mbe_scaled_font_t *scaled; 116 mbe_scaled_font_t *scaled;
117 cairo_matrix_t cfnt_mtx, cctm;
101 118
102 options = cairo_font_options_create(); 119 options = cairo_font_options_create();
103 if(options == NULL) 120 if(options == NULL)
104 return NULL; 121 return NULL;
105 122
106 scaled = cairo_scaled_font_create(face, fnt_mtx, ctm, options); 123 MB_MATRIX_2_CAIRO(cfnt_mtx, fnt_mtx);
124 MB_MATRIX_2_CAIRO(cctm, ctm);
125 scaled = cairo_scaled_font_create(face, &cfnt_mtx, &cctm, options);
107 126
108 cairo_font_options_destroy(options); 127 cairo_font_options_destroy(options);
109 128
110 return scaled; 129 return scaled;
111 } 130 }