aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormtklein <mtklein@chromium.org>2015-06-29 12:04:10 -0700
committerSteve Kondik <steve@cyngn.com>2016-06-27 17:35:12 -0700
commiteaaf9686f68a2020b6c2649aacc0dca56d2cabf2 (patch)
tree83ca7da57b0dc039c1082beb13bacf87d8df1fd8
parenta72becebcc762e90b14708a0cca677c3426dbff2 (diff)
downloadandroid_external_skia-eaaf9686f68a2020b6c2649aacc0dca56d2cabf2.tar.gz
android_external_skia-eaaf9686f68a2020b6c2649aacc0dca56d2cabf2.tar.bz2
android_external_skia-eaaf9686f68a2020b6c2649aacc0dca56d2cabf2.zip
Edges matter, part 2.
Affected modes: lighten, hard-light, overlay (== hard-light). This fixes a couple places where I used < when I should have used <=, or swapped the logic as I've done here. Caught by layout tests; our tests should be unchanged. https://storage.googleapis.com/chromium-layout-test-archives/linux_blink_rel/68935/layout-test-results/css3/blending/background-blend-mode-crossfade-image-gradient-diffs.html BUG=skia: Review URL: https://codereview.chromium.org/1217013003
-rw-r--r--src/core/Sk4pxXfermode.h10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/core/Sk4pxXfermode.h b/src/core/Sk4pxXfermode.h
index 09490dc990..f2f2d6682f 100644
--- a/src/core/Sk4pxXfermode.h
+++ b/src/core/Sk4pxXfermode.h
@@ -66,15 +66,15 @@ XFERMODE(HardLight) {
auto sa = s.alphas(),
da = d.alphas();
- auto isDark = s < (sa-s);
+ auto isLite = (sa-s) < s;
auto dark = s*d << 1,
lite = sa*da - ((da-d)*(sa-s) << 1),
both = s*da.inv() + d*sa.inv();
- // TODO: do isDark in 16-bit so we only have to div255() once.
- auto colors = isDark.thenElse((dark + both).div255(),
- (lite + both).div255());
+ // TODO: do isLite in 16-bit so we only have to div255() once.
+ auto colors = isLite.thenElse((lite + both).div255(),
+ (dark + both).div255());
return alphas.zeroColors() + colors.zeroAlphas();
}
XFERMODE(Overlay) { return HardLight::Xfer(d,s); }
@@ -94,7 +94,7 @@ XFERMODE(Lighten) {
auto srcover = s + (d - dsa),
dstover = d + (s - sda);
auto alphas = srcover,
- colors = (sda < dsa).thenElse(dstover, srcover);
+ colors = (dsa < sda).thenElse(srcover, dstover);
return alphas.zeroColors() + colors.zeroAlphas();
}