partial fix for http://b/issue?id=2486139
off-by-1 in alpha for colorshader
Change-Id: I6a6c75ac67725fad7cb17261236e1320cb5b1436
diff --git a/src/core/SkShader.cpp b/src/core/SkShader.cpp
index 5290f2f..f33036d 100644
--- a/src/core/SkShader.cpp
+++ b/src/core/SkShader.cpp
@@ -256,14 +256,16 @@
fColor16 = SkPack888ToRGB16(r, g, b);
if (a != 255) {
- a = SkAlpha255To256(a);
- r = SkAlphaMul(r, a);
- g = SkAlphaMul(g, a);
- b = SkAlphaMul(b, a);
+ r = SkMulDiv255Round(r, a);
+ g = SkMulDiv255Round(g, a);
+ b = SkMulDiv255Round(b, a);
}
fPMColor = SkPackARGB32(a, r, g, b);
- fFlags = kHasSpan16_Flag | kConstInY32_Flag;
+ fFlags = kConstInY32_Flag;
+ if (paint.isDither() == false) {
+ fFlags |= kHasSpan16_Flag;
+ }
if (SkGetPackedA32(fPMColor) == 255) {
fFlags |= kOpaqueAlpha_Flag;
}