Fix alpha computation in SkArithmeticMode.
Note: this will require new baselines for the arithmode GM. R=reed@google.com Review URL: https://codereview.chromium.org/15917010 git-svn-id: http://skia.googlecode.com/svn/trunk@9302 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
435401d386
commit
35c733cc9c
@ -29,8 +29,8 @@ static SkBitmap make_src() {
|
||||
SkPaint paint;
|
||||
SkPoint pts[] = { {0, 0}, {SkIntToScalar(WW), SkIntToScalar(HH)} };
|
||||
SkColor colors[] = {
|
||||
SK_ColorBLACK, SK_ColorGREEN, SK_ColorCYAN,
|
||||
SK_ColorRED, SK_ColorMAGENTA, SK_ColorWHITE
|
||||
SK_ColorTRANSPARENT, SK_ColorGREEN, SK_ColorCYAN,
|
||||
SK_ColorRED, SK_ColorMAGENTA, SK_ColorWHITE,
|
||||
};
|
||||
SkShader* s = SkGradientShader::CreateLinear(pts, colors, NULL, SK_ARRAY_COUNT(colors),
|
||||
SkShader::kClamp_TileMode);
|
||||
|
@ -73,12 +73,12 @@ void SkArithmeticMode_scalar::xfer32(SkPMColor dst[], const SkPMColor src[],
|
||||
int da = SkGetPackedA32(dc);
|
||||
|
||||
int srcNeedsUnpremul = needsUnpremul(sa);
|
||||
int dstNeedsUnpremul = needsUnpremul(sa);
|
||||
int dstNeedsUnpremul = needsUnpremul(da);
|
||||
|
||||
int a, r, g, b;
|
||||
|
||||
if (!srcNeedsUnpremul && !dstNeedsUnpremul) {
|
||||
a = arith(k1, k2, k3, k4, sa, sa);
|
||||
a = arith(k1, k2, k3, k4, sa, da);
|
||||
r = arith(k1, k2, k3, k4, SkGetPackedR32(sc), SkGetPackedR32(dc));
|
||||
g = arith(k1, k2, k3, k4, SkGetPackedG32(sc), SkGetPackedG32(dc));
|
||||
b = arith(k1, k2, k3, k4, SkGetPackedB32(sc), SkGetPackedB32(dc));
|
||||
@ -103,7 +103,7 @@ void SkArithmeticMode_scalar::xfer32(SkPMColor dst[], const SkPMColor src[],
|
||||
db = SkUnPreMultiply::ApplyScale(scale, db);
|
||||
}
|
||||
|
||||
a = arith(k1, k2, k3, k4, sa, sa);
|
||||
a = arith(k1, k2, k3, k4, sa, da);
|
||||
r = arith(k1, k2, k3, k4, sr, dr);
|
||||
g = arith(k1, k2, k3, k4, sg, dg);
|
||||
b = arith(k1, k2, k3, k4, sb, db);
|
||||
|
Loading…
Reference in New Issue
Block a user