From 15bb26ec70c9df6dbfc259918d9d9b0d8b2fcccc Mon Sep 17 00:00:00 2001 From: Herb Derby Date: Tue, 15 Aug 2017 14:38:30 -0400 Subject: Add an average mode for sigma < 2 The original code had an optimization when sigma < 2 that averaged pixels instead of Gaussian bluring them. This CL adds that behavior back to the new implementation. Add the flag SK_LEGACY_USE_GAUSS_FOR_SMALL_RADII to control the new behavior. BUG=chromium:745290 Change-Id: I6e7417ce7f42949f88376b549743a9f047667f09 Reviewed-on: https://skia-review.googlesource.com/34624 Commit-Queue: Herb Derby Commit-Queue: Mike Klein Reviewed-by: Mike Klein --- src/core/SkMaskBlurFilter.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/core/SkMaskBlurFilter.h') diff --git a/src/core/SkMaskBlurFilter.h b/src/core/SkMaskBlurFilter.h index c530488efb..000d9493a0 100644 --- a/src/core/SkMaskBlurFilter.h +++ b/src/core/SkMaskBlurFilter.h @@ -37,8 +37,13 @@ public: // A factor used to simulate division using multiplication and shift. uint64_t scaledWeight() const; + // Returned when sigma < 2. + bool isSmall() const; + private: + const bool fIsSmall; const uint32_t fFilterWindow; + const uint64_t fWeight; const uint64_t fScaledWeight; }; @@ -59,6 +64,14 @@ private: 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, + 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, + const uint8_t* src, size_t srcStride, const uint8_t* srcEnd, + uint8_t* dst, size_t dstStride, uint8_t* dstEnd) const; + const FilterInfo fInfoW, fInfoH; -- cgit v1.2.3