summaryrefslogtreecommitdiff
path: root/src/cairo-svg-surface.c
diff options
context:
space:
mode:
authorAnton Danilkin <afdw@yandex.ru>2021-05-01 23:40:02 +0200
committerAnton Danilkin <afdw@yandex.ru>2021-05-01 23:40:02 +0200
commit8f4668b4bfb1dcdee6e600a16a6fcc9edb8422be (patch)
treecedf2787a98d213c5e1cb72f70a2de8ecf25b40c /src/cairo-svg-surface.c
parentbd487e64fc3680abf2dd9e165c7506043132229d (diff)
downloadcairo-8f4668b4bfb1dcdee6e600a16a6fcc9edb8422be.tar.gz
Disable support for SVG 2 operators
Diffstat (limited to 'src/cairo-svg-surface.c')
-rw-r--r--src/cairo-svg-surface.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/cairo-svg-surface.c b/src/cairo-svg-surface.c
index 782f08f01..59173eab1 100644
--- a/src/cairo-svg-surface.c
+++ b/src/cairo-svg-surface.c
@@ -1368,6 +1368,22 @@ _cairo_svg_surface_are_operation_and_pattern_supported (cairo_svg_surface_t *sur
return FALSE;
}
+ /* SVG 1.1 does not support these operators. We already have code for them for SVG 2
+ * that can be enabled when SVG 2 becomes widespread. */
+ if (op == CAIRO_OPERATOR_OVERLAY ||
+ op == CAIRO_OPERATOR_COLOR_DODGE ||
+ op == CAIRO_OPERATOR_COLOR_BURN ||
+ op == CAIRO_OPERATOR_HARD_LIGHT ||
+ op == CAIRO_OPERATOR_SOFT_LIGHT ||
+ op == CAIRO_OPERATOR_DIFFERENCE ||
+ op == CAIRO_OPERATOR_EXCLUSION ||
+ op == CAIRO_OPERATOR_HSL_HUE ||
+ op == CAIRO_OPERATOR_HSL_SATURATION ||
+ op == CAIRO_OPERATOR_HSL_COLOR ||
+ op == CAIRO_OPERATOR_HSL_LUMINOSITY) {
+ return FALSE;
+ }
+
if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) {
/* Do not cause stack overflow because of too deep or infinite recording surfaces. */
if (((cairo_surface_pattern_t *) pattern)->surface->type == CAIRO_SURFACE_TYPE_RECORDING &&
@@ -1555,7 +1571,7 @@ _cairo_svg_surface_emit_parametric_filter (cairo_svg_document_t *document,
_CAIRO_SVG_SURFACE_OUTPUT_FE_COMPOSITE_FILTER ("xor");
break;
case CAIRO_SVG_FILTER_ADD:
- // This can also be done with <feComposite operator="lighter"/>, but it is not from SVG 1.1
+ // This can also be done with <feComposite operator="lighter"/>, but it is not in SVG 1.1
_cairo_output_stream_printf (document->xml_node_filters,
"<filter id=\"filter-%d\" "
"x=\"0%%\" y=\"0%%\" width=\"100%%\" height=\"100%%\">\n"