diff options
author | Anton Danilkin <afdw@yandex.ru> | 2020-11-13 17:23:13 +0100 |
---|---|---|
committer | Anton Danilkin <afdw@yandex.ru> | 2021-04-11 23:59:47 +0200 |
commit | 8c08f499bd52d79d0ee13be5050d134e97e2211b (patch) | |
tree | 4163715149e4bdc36defeccaf10e3c619a0dffa9 /src/cairo-recording-surface.c | |
parent | 277a1daec80cb6cf7bfb0e200cf78e7842cb2f82 (diff) | |
download | cairo-8c08f499bd52d79d0ee13be5050d134e97e2211b.tar.gz |
Fix problems in the SVG backend related to outputting surfaces and patterns
Now the SVG surface should work correctly work with bounded and unbounded image (-like) and recording surfaces with NONE and REPEAT extends as source for all operations.
Fill or stroke with an unbounded surface as source now means using clip or mask respectively.
Fix using unitialized memory in the SVG surface.
Also fix unintialized memory and working with offsetted images in the recording surface.
Diffstat (limited to 'src/cairo-recording-surface.c')
-rw-r--r-- | src/cairo-recording-surface.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/cairo-recording-surface.c b/src/cairo-recording-surface.c index 71a44798f..8d0e5376a 100644 --- a/src/cairo-recording-surface.c +++ b/src/cairo-recording-surface.c @@ -613,6 +613,8 @@ _cairo_recording_surface_acquire_source_image (void *abstract_surface, if (unlikely (image->status)) return image->status; + cairo_surface_set_device_offset(image, -surface->extents.x, -surface->extents.y); + /* Handle recursion by returning future reads from the current image */ proxy = attach_proxy (abstract_surface, image); status = _cairo_recording_surface_replay (&surface->base, image); @@ -1592,6 +1594,8 @@ _cairo_recording_surface_snapshot (void *abstract_other) surface->extents_pixels = other->extents_pixels; surface->extents = other->extents; surface->unbounded = other->unbounded; + surface->has_bilevel_alpha = other->has_bilevel_alpha; + surface->has_only_op_over = other->has_only_op_over; surface->base.is_clear = other->base.is_clear; |