aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkMaskBlurFilter.h
diff options
context:
space:
mode:
authorGravatar Herb Derby <herb@google.com>2017-08-31 10:10:01 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-08-31 17:48:42 +0000
commit56ffafee4454759ffcd1b2fea04ce44300624c93 (patch)
tree2114aac1a70cdee92d1335aa13aab7e70ffe9e4c /src/core/SkMaskBlurFilter.h
parente3d1e5d768739e8315dabc528367a99873d01147 (diff)
Use interpolating blur for sigma < 2
Reimplemnet the original interpolating code. Moving from the integer blur code to this code is controled by the flag: SK_LEGACY_SUPPORT_INTEGER_SMALL_RADII BUG=chromium:759273 Change-Id: I17205d704a0cae68a8a027c6bb235f81b5c62e24 Reviewed-on: https://skia-review.googlesource.com/41082 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Herb Derby <herb@google.com>
Diffstat (limited to 'src/core/SkMaskBlurFilter.h')
-rw-r--r--src/core/SkMaskBlurFilter.h23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/core/SkMaskBlurFilter.h b/src/core/SkMaskBlurFilter.h
index 000d9493a0..26efe95de5 100644
--- a/src/core/SkMaskBlurFilter.h
+++ b/src/core/SkMaskBlurFilter.h
@@ -10,6 +10,7 @@
#include <algorithm>
#include <memory>
+#include <tuple>
#include "SkMask.h"
#include "SkTypes.h"
@@ -40,11 +41,15 @@ public:
// Returned when sigma < 2.
bool isSmall() const;
+ // Factors for interpolating box blur.
+ std::tuple<uint64_t, uint64_t> interpFactors() const;
+
private:
- const bool fIsSmall;
- const uint32_t fFilterWindow;
- const uint64_t fWeight;
- const uint64_t fScaledWeight;
+ const bool fIsSmall;
+ const uint32_t fFilterWindow;
+ const uint64_t fWeight;
+ const uint64_t fScaledWeight;
+ const std::tuple<uint64_t, uint64_t> fInterpFactors;
};
// Create an object suitable for filtering an SkMask using a filter with width sigmaW and
@@ -60,15 +65,19 @@ public:
private:
size_t bufferSize(uint8_t bufferPass) const;
- void blurOneScan(FilterInfo gen,
+ void blurOneScan(const FilterInfo& gen, size_t width,
const uint8_t* src, size_t srcStride, const uint8_t* srcEnd,
uint8_t* dst, size_t dstStride, uint8_t* dstEnd) const;
- void blurOneScanBox(FilterInfo gen,
+ void blurOneScanBox(const FilterInfo& gen,
const uint8_t* src, size_t srcStride, const uint8_t* srcEnd,
uint8_t* dst, size_t dstStride, uint8_t* dstEnd) const;
- void blurOneScanGauss(FilterInfo gen,
+ void blurOneScanBoxInterp(const FilterInfo& gen, size_t width,
+ const uint8_t* src, size_t srcStride, const uint8_t* srcEnd,
+ uint8_t* dst, size_t dstStride, uint8_t* dstEnd) const;
+
+ void blurOneScanGauss(const FilterInfo& gen,
const uint8_t* src, size_t srcStride, const uint8_t* srcEnd,
uint8_t* dst, size_t dstStride, uint8_t* dstEnd) const;