summaryrefslogtreecommitdiff
path: root/src/cairo-quartz-surface.c
diff options
context:
space:
mode:
authorAndrea Canciani <ranma42@gmail.com>2015-04-09 00:17:24 +0200
committerAndrea Canciani <ranma42@gmail.com>2015-07-27 12:46:00 +0200
commit66bc7b8cb0e753006fa838a8badcf5cb7528d6f7 (patch)
treed4be81181beb41a1da7d851131bedf3eccfb3888 /src/cairo-quartz-surface.c
parent6210e347712127260dd72b0f03a8604c8d22fdca (diff)
downloadcairo-66bc7b8cb0e753006fa838a8badcf5cb7528d6f7.tar.gz
quartz: be more strict about the behavior of blend operators
Some blend operators have a (small, but potentially noticeable) different behaviour in Quartz and pixman. Use the Quartz ones only for the operators which match pixman except for rounding errors. Fixes: - extended-blend - extended-blend-alpha - extended-blend-mask - extended-blend-alpha-mask - extended-blend-solid - extended-blend-solid-alpha
Diffstat (limited to 'src/cairo-quartz-surface.c')
-rw-r--r--src/cairo-quartz-surface.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/cairo-quartz-surface.c b/src/cairo-quartz-surface.c
index 4c8c2e42f..5e9b37629 100644
--- a/src/cairo-quartz-surface.c
+++ b/src/cairo-quartz-surface.c
@@ -508,9 +508,13 @@ _cairo_cgcontext_set_cairo_operator (CGContextRef context, cairo_operator_t op)
/* Quartz doesn't support SATURATE at all. COLOR_DODGE and
* COLOR_BURN in Quartz follow the ISO32000 definition, but cairo
- * uses the definition from the Adobe Supplement.
+ * uses the definition from the Adobe Supplement. Also fallback
+ * on SOFT_LIGHT and HSL_HUE, because their results are
+ * significantly different from those provided by pixman.
*/
if (op == CAIRO_OPERATOR_SATURATE ||
+ op == CAIRO_OPERATOR_SOFT_LIGHT ||
+ op == CAIRO_OPERATOR_HSL_HUE ||
op == CAIRO_OPERATOR_COLOR_DODGE ||
op == CAIRO_OPERATOR_COLOR_BURN)
{