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