Mercurial > MadButterfly
comparison src/redraw_man.c @ 1073:d09f603438d8 openvg
Merge the work of improvement for graphic engine of openvg branch
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Wed, 01 Dec 2010 20:01:49 +0800 |
parents | 7b4e80ab671a |
children | 7451af5d63ec |
comparison
equal
deleted
inserted
replaced
1072:cf82361fe5b9 | 1073:d09f603438d8 |
---|---|
2235 #ifndef UNITTEST | 2235 #ifndef UNITTEST |
2236 static void clear_canvas(canvas_t *canvas) { | 2236 static void clear_canvas(canvas_t *canvas) { |
2237 mbe_clear(canvas); | 2237 mbe_clear(canvas); |
2238 } | 2238 } |
2239 | 2239 |
2240 static void make_clip(mbe_t *cr, int n_dirty_areas, | 2240 #define make_scissoring(canvas, n_dirty_areas, dirty_areas) \ |
2241 area_t **dirty_areas) { | 2241 mbe_scissoring(canvas, n_dirty_areas, dirty_areas) |
2242 int i; | |
2243 area_t *area; | |
2244 | |
2245 mbe_new_path(cr); | |
2246 for(i = 0; i < n_dirty_areas; i++) { | |
2247 area = dirty_areas[i]; | |
2248 if(area->w < 0.1 || area->h < 0.1) | |
2249 continue; | |
2250 mbe_rectangle(cr, area->x, area->y, area->w, area->h); | |
2251 } | |
2252 mbe_clip(cr); | |
2253 } | |
2254 | 2242 |
2255 static void reset_clip(canvas_t *cr) { | 2243 static void reset_clip(canvas_t *cr) { |
2256 mbe_reset_clip(cr); | 2244 mbe_reset_scissoring(cr); |
2257 } | 2245 } |
2258 | 2246 |
2259 static void copy_cr_2_backend(redraw_man_t *rdman, int n_dirty_areas, | 2247 static void copy_cr_2_backend(redraw_man_t *rdman, int n_dirty_areas, |
2260 area_t **dirty_areas) { | 2248 area_t **dirty_areas) { |
2261 if(n_dirty_areas) | 2249 if(n_dirty_areas) |
2262 make_clip(rdman->backend, n_dirty_areas, dirty_areas); | 2250 make_scissoring(rdman->backend, n_dirty_areas, dirty_areas); |
2263 | 2251 |
2264 mbe_copy_source(rdman->cr, rdman->backend); | 2252 mbe_copy_source(rdman->cr, rdman->backend); |
2265 } | 2253 } |
2266 #else /* UNITTEST */ | 2254 #else /* UNITTEST */ |
2267 static void make_clip(mbe_t *cr, int n_dirty_areas, | 2255 #define make_scissoring(canvas, n_dirty_areas, dirty_areas) |
2268 area_t **dirty_areas) { | |
2269 } | |
2270 | 2256 |
2271 static void clear_canvas(canvas_t *canvas) { | 2257 static void clear_canvas(canvas_t *canvas) { |
2272 } | 2258 } |
2273 | 2259 |
2274 static void reset_clip(canvas_t *cr) { | 2260 static void reset_clip(canvas_t *cr) { |
2399 area->y = floorf(area->y); | 2385 area->y = floorf(area->y); |
2400 area->w = ceilf(area->w); | 2386 area->w = ceilf(area->w); |
2401 area->h = ceilf(area->h); | 2387 area->h = ceilf(area->h); |
2402 } | 2388 } |
2403 | 2389 |
2404 make_clip(canvas, n_areas, areas); | 2390 make_scissoring(canvas, n_areas, areas); |
2405 clear_canvas(canvas); | 2391 clear_canvas(canvas); |
2406 | 2392 |
2407 r = draw_coord_shapes_in_dirty_areas(rdman, coord); | 2393 r = draw_coord_shapes_in_dirty_areas(rdman, coord); |
2408 | 2394 |
2409 reset_clip(canvas); | 2395 reset_clip(canvas); |