diff options
author | Søren Sandmann Pedersen <ssp@redhat.com> | 2012-10-01 09:24:54 -0400 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@redhat.com> | 2012-10-01 09:24:54 -0400 |
commit | 644c2143eb023b6e26e22207a135621e969f27f0 (patch) | |
tree | 9a55cd84602d772a5e50c1de5695e12eeb451643 | |
parent | 1456650747bcb3ee7789288a03672b6522879fd0 (diff) |
Extract clip region
-rw-r--r-- | src/cairo-pixman-surface.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/cairo-pixman-surface.c b/src/cairo-pixman-surface.c index 3831fe59..63148462 100644 --- a/src/cairo-pixman-surface.c +++ b/src/cairo-pixman-surface.c @@ -46,6 +46,7 @@ #include "cairo-clip-inline.h" #include "cairo-traps-private.h" #include "cairoint.h" +#include "cairo-region-private.h" extern const cairo_surface_backend_t cairo_pixman_surface_backend; @@ -783,7 +784,6 @@ out: return status; } - static void set_properties (pixman_image_t *image, cairo_pattern_t *pattern, cairo_matrix_t *matrix) { @@ -1304,12 +1304,16 @@ create_clip_image (command_buffer_t **buffer, cairo_clip_path_t *clip_path; int i; int boxes, clip_id, wh; + cairo_region_t *region; status = CAIRO_INT_STATUS_SUCCESS; if (!clip) return command_buffer_new_white (buffer); + if ((region = _cairo_clip_get_region (clip))) + return command_buffer_new_region (buffer, ®ion->rgn); + /* First add the boxes */ if (!(ptraps = malloc (clip->num_boxes * sizeof (pixman_trapezoid_t)))) return command_buffer_new_broken (buffer); |