summaryrefslogtreecommitdiff
path: root/src/cairo-svg-surface.c
diff options
context:
space:
mode:
authorAnton Danilkin <afdw@yandex.ru>2021-04-12 11:55:56 +0200
committerAnton Danilkin <afdw@yandex.ru>2021-04-12 11:55:56 +0200
commit2a8672d06ef98b5375c6eee825791c2797bef078 (patch)
tree362e3875450813c2a6b893b83a342d9f24890244 /src/cairo-svg-surface.c
parent87d5c9e8d1cb46415f3e1e7b24fff87a6e083b9a (diff)
downloadcairo-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.c13
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");
}