diff options
author | Benjamin Otte <otte@redhat.com> | 2010-04-29 15:37:32 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2010-04-29 15:38:25 +0200 |
commit | 6288ad719da898c4a75cdc6527f5a41d4c900e57 (patch) | |
tree | ec6c75570fa76c0795c9fc8e142a368cd4347f01 /src/cairo-surface-fallback.c | |
parent | b0760826f30f63637561b353e7eed1913036da2d (diff) | |
download | cairo-6288ad719da898c4a75cdc6527f5a41d4c900e57.tar.gz |
fallback: translate extents regions properly
The extents clip regions that were created for unbounded operators were
not translated properly. This has been changed now.
This is a followup to 9ce8bef9d6e6d773dd1f4b184916ed5c96c3541d.
Diffstat (limited to 'src/cairo-surface-fallback.c')
-rw-r--r-- | src/cairo-surface-fallback.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/cairo-surface-fallback.c b/src/cairo-surface-fallback.c index 5149a96e7..f3016a1b7 100644 --- a/src/cairo-surface-fallback.c +++ b/src/cairo-surface-fallback.c @@ -549,6 +549,7 @@ _composite_traps_draw_func (void *closure, extents_region = cairo_region_create_rectangle (extents); if (unlikely (extents_region->status)) return extents_region->status; + cairo_region_translate (extents_region, -dst_x, -dst_y); clip_region = extents_region; } @@ -976,14 +977,14 @@ CLEANUP_BOXES: } static cairo_status_t -_cairo_surface_mask_draw_func (void *closure, - cairo_operator_t op, - const cairo_pattern_t *src, - cairo_surface_t *dst, - int dst_x, - int dst_y, +_cairo_surface_mask_draw_func (void *closure, + cairo_operator_t op, + const cairo_pattern_t *src, + cairo_surface_t *dst, + int dst_x, + int dst_y, const cairo_rectangle_int_t *extents, - cairo_region_t *clip_region) + cairo_region_t *clip_region) { cairo_pattern_t *mask = closure; cairo_status_t status; @@ -994,6 +995,7 @@ _cairo_surface_mask_draw_func (void *closure, extents_region = cairo_region_create_rectangle (extents); if (unlikely (extents_region->status)) return extents_region->status; + cairo_region_translate (extents_region, -dst_x, -dst_y); clip_region = extents_region; } @@ -1309,6 +1311,7 @@ _cairo_surface_old_show_glyphs_draw_func (void *closure extents_region = cairo_region_create_rectangle (extents); if (unlikely (extents_region->status)) return extents_region->status; + cairo_region_translate (extents_region, -dst_x, -dst_y); clip_region = extents_region; } |