diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkBlurMask.cpp | 12 | ||||
-rw-r--r-- | src/core/SkMaskBlurFilter.cpp | 5 |
2 files changed, 13 insertions, 4 deletions
diff --git a/src/core/SkBlurMask.cpp b/src/core/SkBlurMask.cpp index f4fa100961..0e0d261903 100644 --- a/src/core/SkBlurMask.cpp +++ b/src/core/SkBlurMask.cpp @@ -110,9 +110,17 @@ bool SkBlurMask::BoxBlur(SkMask* dst, const SkMask& src, SkScalar sigma, SkBlurS return false; } - SkMaskBlurFilter blurFilter{sigma, sigma}; - if (blurFilter.hasNoBlur() && style != kOuter_SkBlurStyle) { + if (blurFilter.hasNoBlur()) { + // If there is no effective blur most styles will just produce the original mask. + // However, kOuter_SkBlurStyle will produce an empty mask. + if (style == kOuter_SkBlurStyle) { + dst->fImage = nullptr; + dst->fBounds = SkIRect::MakeEmpty(); + dst->fRowBytes = dst->fBounds.width(); + dst->fFormat = SkMask::kA8_Format; + return true; + } return false; } const SkIPoint border = blurFilter.blur(src, dst); diff --git a/src/core/SkMaskBlurFilter.cpp b/src/core/SkMaskBlurFilter.cpp index 7674bddf41..ea3d8ab572 100644 --- a/src/core/SkMaskBlurFilter.cpp +++ b/src/core/SkMaskBlurFilter.cpp @@ -882,8 +882,9 @@ template <typename Loader> SK_ATTRIBUTE(noinline) static void direct_blur_y( } static SkIPoint small_blur(double sigmaX, double sigmaY, const SkMask& src, SkMask* dst) { - SkASSERT(0 <= sigmaX && sigmaX < 2); - SkASSERT(0 <= sigmaY && sigmaY < 2); + SkASSERT(sigmaX == sigmaY); // TODO + SkASSERT(0.01 <= sigmaX && sigmaX < 2); + SkASSERT(0.01 <= sigmaY && sigmaY < 2); SkGaussFilter filterX{sigmaX, SkGaussFilter::Type::Bessel}, filterY{sigmaY, SkGaussFilter::Type::Bessel}; |