Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2227)

Unified Diff: src/effects/SkMatrixConvolutionImageFilter.cpp

Issue 2198263002: Image filters: force near-zero floating point parameters to zero. Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/effects/SkMatrixConvolutionImageFilter.cpp
diff --git a/src/effects/SkMatrixConvolutionImageFilter.cpp b/src/effects/SkMatrixConvolutionImageFilter.cpp
index 5e5f20ba8ff4200fe1d4a85b53089e6ae6fdffe7..3eb7a0b5d44e4446e8b11d24cebb4bdd36c25f7d 100644
--- a/src/effects/SkMatrixConvolutionImageFilter.cpp
+++ b/src/effects/SkMatrixConvolutionImageFilter.cpp
@@ -36,14 +36,16 @@ SkMatrixConvolutionImageFilter::SkMatrixConvolutionImageFilter(const SkISize& ke
const CropRect* cropRect)
: INHERITED(&input, 1, cropRect)
, fKernelSize(kernelSize)
- , fGain(gain)
- , fBias(bias)
+ , fGain(SkScalarNormalize(gain))
+ , fBias(SkScalarNormalize(bias))
, fKernelOffset(kernelOffset)
, fTileMode(tileMode)
, fConvolveAlpha(convolveAlpha) {
size_t size = (size_t) sk_64_mul(fKernelSize.width(), fKernelSize.height());
fKernel = new SkScalar[size];
- memcpy(fKernel, kernel, size * sizeof(SkScalar));
+ for (size_t i = 0; i < size; ++i) {
+ fKernel[i] = SkScalarNormalize(kernel[i]);
+ }
SkASSERT(kernelSize.fWidth >= 1 && kernelSize.fHeight >= 1);
SkASSERT(kernelOffset.fX >= 0 && kernelOffset.fX < kernelSize.fWidth);
SkASSERT(kernelOffset.fY >= 0 && kernelOffset.fY < kernelSize.fHeight);

Powered by Google App Engine
This is Rietveld 408576698