Fix premul alpha problems w/matrix convolution filter, and re-enable the bench.
http://codereview.appspot.com/6541043/
git-svn-id: http://skia.googlecode.com/svn/trunk@5610 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/effects/SkMatrixConvolutionImageFilter.cpp b/src/effects/SkMatrixConvolutionImageFilter.cpp
index 67104f0..e5acf56 100644
--- a/src/effects/SkMatrixConvolutionImageFilter.cpp
+++ b/src/effects/SkMatrixConvolutionImageFilter.cpp
@@ -113,14 +113,11 @@
sumB += SkScalarMul(SkIntToScalar(SkGetPackedB32(s)), k);
}
}
- int a = SkScalarFloorToInt(SkScalarMul(sumA, fGain) + fBias);
- int r = SkScalarFloorToInt(SkScalarMul(sumR, fGain) + fBias);
- int g = SkScalarFloorToInt(SkScalarMul(sumG, fGain) + fBias);
- int b = SkScalarFloorToInt(SkScalarMul(sumB, fGain) + fBias);
- *dptr++ = SkPackARGB32(SkClampMax(a, 255),
- SkClampMax(r, 255),
- SkClampMax(g, 255),
- SkClampMax(b, 255));
+ int a = SkClampMax(SkScalarFloorToInt(SkScalarMul(sumA, fGain) + fBias), 255);
+ int r = SkClampMax(SkScalarFloorToInt(SkScalarMul(sumR, fGain) + fBias), a);
+ int g = SkClampMax(SkScalarFloorToInt(SkScalarMul(sumG, fGain) + fBias), a);
+ int b = SkClampMax(SkScalarFloorToInt(SkScalarMul(sumB, fGain) + fBias), a);
+ *dptr++ = SkPackARGB32(a, r, g, b);
}
}
}