aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/SkMaskBlurFilter.cpp6
-rw-r--r--src/core/SkMaskBlurFilter.h3
-rw-r--r--src/effects/SkBlurMask.cpp3
3 files changed, 11 insertions, 1 deletions
diff --git a/src/core/SkMaskBlurFilter.cpp b/src/core/SkMaskBlurFilter.cpp
index 0f0286354c..42837f79a9 100644
--- a/src/core/SkMaskBlurFilter.cpp
+++ b/src/core/SkMaskBlurFilter.cpp
@@ -70,6 +70,10 @@ SkMaskBlurFilter::SkMaskBlurFilter(double sigmaW, double sigmaH)
, fBuffer2{skstd::make_unique_default<uint32_t[]>(bufferSize(2))} {
}
+bool SkMaskBlurFilter::hasNoBlur() const {
+ return fInfoW.weight() <= 1 && fInfoH.weight() <= 1;
+}
+
SkIPoint SkMaskBlurFilter::blur(const SkMask& src, SkMask* dst) const {
uint64_t weightW = fInfoW.weight();
@@ -146,7 +150,7 @@ SkIPoint SkMaskBlurFilter::blur(const SkMask& src, SkMask* dst) const {
}
} else {
// Copy to dst. No Blur.
-
+ SkASSERT(false); // should not get here
for (size_t y = 0; y < srcH; y++) {
std::memcpy(&dst->fImage[y * dst->fRowBytes], &src.fImage[y * src.fRowBytes], dstW);
}
diff --git a/src/core/SkMaskBlurFilter.h b/src/core/SkMaskBlurFilter.h
index 9becadca39..c530488efb 100644
--- a/src/core/SkMaskBlurFilter.h
+++ b/src/core/SkMaskBlurFilter.h
@@ -46,6 +46,9 @@ public:
// height sigmaH.
SkMaskBlurFilter(double sigmaW, double sigmaH);
+ // returns true iff the sigmas will result in an identity mask (no blurring)
+ bool hasNoBlur() const;
+
// Given a src SkMask, generate dst SkMask returning the border width and height.
SkIPoint blur(const SkMask& src, SkMask* dst) const;
diff --git a/src/effects/SkBlurMask.cpp b/src/effects/SkBlurMask.cpp
index fe59ab8269..937087e728 100644
--- a/src/effects/SkBlurMask.cpp
+++ b/src/effects/SkBlurMask.cpp
@@ -590,6 +590,9 @@ bool SkBlurMask::BoxBlur(SkMask* dst, const SkMask& src,
}
#else
SkMaskBlurFilter blurFilter{sigma, sigma};
+ if (blurFilter.hasNoBlur()) {
+ return false;
+ }
border = blurFilter.blur(src, dst);
#endif // SK_SUPPORT_LEGACY_MASK_BLUR