comparison src/paint.c @ 906:62ef69e02e85

branch merge
author Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
date Sun, 03 Oct 2010 18:15:00 +0800
parents a17c4e231e54
children 7b4e80ab671a
comparison
equal deleted inserted replaced
905:e3a5e05f00c1 906:62ef69e02e85
15 } paint_color_t; 15 } paint_color_t;
16 16
17 int _paint_color_size = sizeof(paint_color_t); 17 int _paint_color_size = sizeof(paint_color_t);
18 18
19 19
20 static void paint_color_prepare(paint_t *paint, mbe_t *cr) { 20 static void paint_color_prepare(paint_t *paint, mbe_t *cr, shape_t *sh) {
21 paint_color_t *color = (paint_color_t *)paint; 21 paint_color_t *color = (paint_color_t *)paint;
22 22
23 mbe_set_source_rgba(cr, color->r, color->g, color->b, color->a); 23 mbe_set_source_rgba(cr, color->r, color->g, color->b, color->a);
24 } 24 }
25 25
82 82
83 #define LIF_DIRTY 0x1 83 #define LIF_DIRTY 0x1
84 84
85 int _paint_linear_size = sizeof(paint_linear_t); 85 int _paint_linear_size = sizeof(paint_linear_t);
86 86
87 static void paint_linear_prepare(paint_t *paint, mbe_t *cr) { 87 static void paint_linear_prepare(paint_t *paint, mbe_t *cr, shape_t *sh) {
88 paint_linear_t *linear = (paint_linear_t *)paint; 88 paint_linear_t *linear = (paint_linear_t *)paint;
89 mbe_pattern_t *ptn; 89 mbe_pattern_t *ptn;
90 co_aix x1, y1;
91 co_aix x2, y2;
92 co_aix *mtx;
90 93
91 ptn = linear->ptn; 94 ptn = linear->ptn;
92 if(linear->flags & LIF_DIRTY) { 95 if(linear->flags & LIF_DIRTY) {
96 mtx = sh_get_aggr_matrix(sh);
97 x1 = linear->x1;
98 y1 = linear->y1;
99 matrix_trans_pos(mtx, &x1, &y1);
100 x2 = linear->x2;
101 y2 = linear->y2;
102 matrix_trans_pos(mtx, &x2, &y2);
103
93 if(ptn) 104 if(ptn)
94 mbe_pattern_destroy(ptn); 105 mbe_pattern_destroy(ptn);
95 linear->flags &= ~LIF_DIRTY; 106 linear->flags &= ~LIF_DIRTY;
96 ptn = mbe_pattern_create_linear(linear->x1, linear->y1, 107 ptn = mbe_pattern_create_linear(x1, y1, x2, y2,
97 linear->x2, linear->y2,
98 linear->stops, linear->n_stops); 108 linear->stops, linear->n_stops);
99 ASSERT(ptn != NULL); 109 ASSERT(ptn != NULL);
100 linear->ptn = ptn; 110 linear->ptn = ptn;
101 } 111 }
102 112
172 182
173 #define RDF_DIRTY 0x1 183 #define RDF_DIRTY 0x1
174 184
175 int _paint_radial_size = sizeof(paint_radial_t); 185 int _paint_radial_size = sizeof(paint_radial_t);
176 186
177 static void paint_radial_prepare(paint_t *paint, mbe_t *cr) { 187 static void paint_radial_prepare(paint_t *paint, mbe_t *cr, shape_t *sh) {
178 paint_radial_t *radial = (paint_radial_t *)paint; 188 paint_radial_t *radial = (paint_radial_t *)paint;
179 mbe_pattern_t *ptn; 189 mbe_pattern_t *ptn;
190 co_aix cx, cy;
191 co_aix *mtx;
180 192
181 if(radial->flags & RDF_DIRTY) { 193 if(radial->flags & RDF_DIRTY) {
182 ptn = mbe_pattern_create_radial(radial->cx, radial->cy, 0, 194 mtx = sh_get_aggr_matrix(sh);
183 radial->cx, radial->cy, 195 cx = radial->cx;
196 cy = radial->cy;
197 matrix_trans_pos(mtx, &cx, &cy);
198
199 ptn = mbe_pattern_create_radial(cx, cy, 0,
200 cx, cy,
184 radial->r, 201 radial->r,
185 radial->stops, 202 radial->stops,
186 radial->n_stops); 203 radial->n_stops);
187 ASSERT(ptn != NULL); 204 ASSERT(ptn != NULL);
188 mbe_pattern_destroy(radial->ptn); 205 mbe_pattern_destroy(radial->ptn);
254 } paint_image_t; 271 } paint_image_t;
255 272
256 int _paint_image_size = sizeof(paint_image_t); 273 int _paint_image_size = sizeof(paint_image_t);
257 274
258 static 275 static
259 void paint_image_prepare(paint_t *paint, mbe_t *cr) { 276 void paint_image_prepare(paint_t *paint, mbe_t *cr, shape_t *sh) {
260 paint_image_t *paint_img = (paint_image_t *)paint; 277 paint_image_t *paint_img = (paint_image_t *)paint;
261 mb_img_data_t *img_data; 278 mb_img_data_t *img_data;
262 279
263 img_data = paint_img->img; 280 img_data = paint_img->img;
264 mbe_set_source(cr, paint_img->ptn); 281 mbe_set_source(cr, paint_img->ptn);