aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/SkBlurMask.cpp12
-rw-r--r--src/core/SkMaskBlurFilter.cpp5
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};