Mercurial > MadButterfly
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); |