From be3a1b04ae9ef52f60fa1c6423d743b628aa57ca Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Mon, 13 Jul 2009 18:02:09 -0400 Subject: [PATCH] Fix burn and dodge operators to match acroread output --- pixman/pixman-combine.c.template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pixman/pixman-combine.c.template b/pixman/pixman-combine.c.template index 44a09ad..a937bf7 100644 --- a/pixman/pixman-combine.c.template +++ b/pixman/pixman-combine.c.template @@ -538,7 +538,7 @@ static inline comp4_t blend_color_dodge (comp4_t dca, comp4_t da, comp4_t sca, comp4_t sa) { if (sca >= sa) { - return DIV_ONE_UNc (sa * da); + return dca == 0 ? 0 : DIV_ONE_UNc (sa * da); } else { comp4_t rca = dca * sa * sa / (sa - sca); return DIV_ONE_UNc (rca > sa * da ? sa * da : rca); @@ -560,7 +560,7 @@ static inline comp4_t blend_color_burn (comp4_t dca, comp4_t da, comp4_t sca, comp4_t sa) { if (sca == 0) { - return 0; + return dca < da ? 0 : DIV_ONE_UNc (sa * da); } else { comp4_t sada = sa * da; comp4_t rca = (da - dca) * sa * sa / sca; -- 2.7.4