diff options
author | Herb Derby <herb@google.com> | 2017-08-31 10:10:01 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-08-31 17:48:42 +0000 |
commit | 56ffafee4454759ffcd1b2fea04ce44300624c93 (patch) | |
tree | 2114aac1a70cdee92d1335aa13aab7e70ffe9e4c /src/core/SkMaskBlurFilter.h | |
parent | e3d1e5d768739e8315dabc528367a99873d01147 (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.h | 23 |
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; |