diff options
author | Anton Danilkin <afdw@yandex.ru> | 2021-04-12 11:55:56 +0200 |
---|---|---|
committer | Anton Danilkin <afdw@yandex.ru> | 2021-04-12 11:55:56 +0200 |
commit | 2a8672d06ef98b5375c6eee825791c2797bef078 (patch) | |
tree | 362e3875450813c2a6b893b83a342d9f24890244 /src/cairo-svg-surface.c | |
parent | 87d5c9e8d1cb46415f3e1e7b24fff87a6e083b9a (diff) | |
download | cairo-2a8672d06ef98b5375c6eee825791c2797bef078.tar.gz |
Fix filter being used on the use element causing the content to be clipped
Diffstat (limited to 'src/cairo-svg-surface.c')
-rw-r--r-- | src/cairo-svg-surface.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/cairo-svg-surface.c b/src/cairo-svg-surface.c index e1d61a015..40ebdf6af 100644 --- a/src/cairo-svg-surface.c +++ b/src/cairo-svg-surface.c @@ -1824,15 +1824,16 @@ _cairo_svg_surface_emit_composite_surface_pattern (cairo_output_stream_t *output _cairo_output_stream_printf (output, ">\n"); } - _cairo_output_stream_printf (output, - "<use xlink:href=\"#source-%d\"", - source_id); if (pattern->surface->content == CAIRO_CONTENT_ALPHA) { _cairo_output_stream_printf (output, - " filter=\"url(#filter-%s)\"", + "<g filter=\"url(#filter-%s)\">\n", _cairo_svg_surface_emit_static_filter (surface->document, CAIRO_SVG_FILTER_COLOR_TO_ALPHA)); } + + _cairo_output_stream_printf (output, + "<use xlink:href=\"#source-%d\"", + source_id); if (pattern_id == invalid_pattern_id) { _cairo_svg_surface_emit_transform (output, "transform", @@ -1841,6 +1842,10 @@ _cairo_svg_surface_emit_composite_surface_pattern (cairo_output_stream_t *output } _cairo_output_stream_printf (output, "/>\n"); + if (pattern->surface->content == CAIRO_CONTENT_ALPHA) { + _cairo_output_stream_printf (output, "</g>\n"); + } + if (pattern_id != invalid_pattern_id) { _cairo_output_stream_printf (output, "</pattern>\n"); } |