Clamp negative sigma to 0 in SkDropShadowImageFilter.
authorsenorblanco@chromium.org <senorblanco@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Tue, 28 Jan 2014 17:57:26 +0000 (17:57 +0000)
committersenorblanco@chromium.org <senorblanco@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Tue, 28 Jan 2014 17:57:26 +0000 (17:57 +0000)
This can occur when the matrix includes a perspective transform.

BUG=skia:2094
R=bsalomon@google.com

Review URL: https://codereview.chromium.org/137833004

git-svn-id: http://skia.googlecode.com/svn/trunk@13220 2bbb7eff-a529-9590-31e7-b0007b416f81

src/effects/SkDropShadowImageFilter.cpp

index 4bb42a3..be99c67 100644 (file)
@@ -79,6 +79,8 @@ bool SkDropShadowImageFilter::onFilterImage(Proxy* proxy, const SkBitmap& source
 
     SkVector sigma, localSigma = SkVector::Make(fSigmaX, fSigmaY);
     matrix.mapVectors(&sigma, &localSigma, 1);
+    sigma.fX = SkMaxScalar(0, sigma.fX);
+    sigma.fY = SkMaxScalar(0, sigma.fY);
     SkAutoTUnref<SkImageFilter> blurFilter(new SkBlurImageFilter(sigma.fX, sigma.fY));
     SkAutoTUnref<SkColorFilter> colorFilter(SkColorFilter::CreateModeFilter(fColor, SkXfermode::kSrcIn_Mode));
     SkPaint paint;