reed@google.com | 32d25b6 | 2011-12-20 16:19:00 +0000 | [diff] [blame] | 1 | #ifndef _SkTestImageFilters_h |
| 2 | #define _SkTestImageFilters_h |
| 3 | |
| 4 | #include "SkImageFilter.h" |
djsollen@google.com | c73dd5c | 2012-08-07 15:54:32 +0000 | [diff] [blame] | 5 | #include "SkPoint.h" |
reed@google.com | 32d25b6 | 2011-12-20 16:19:00 +0000 | [diff] [blame] | 6 | |
reed@google.com | 32d25b6 | 2011-12-20 16:19:00 +0000 | [diff] [blame] | 7 | // Fun mode that scales down (only) and then scales back up to look pixelated |
tfarina@chromium.org | 6806fe8 | 2012-10-12 14:41:39 +0000 | [diff] [blame] | 8 | class SK_API SkDownSampleImageFilter : public SkImageFilter { |
reed@google.com | 32d25b6 | 2011-12-20 16:19:00 +0000 | [diff] [blame] | 9 | public: |
senorblanco | 9ea3d57 | 2014-07-08 09:16:22 -0700 | [diff] [blame] | 10 | static SkDownSampleImageFilter* Create(SkScalar scale, SkImageFilter* input = NULL) { |
reed | 9fa60da | 2014-08-21 07:59:51 -0700 | [diff] [blame] | 11 | if (!SkScalarIsFinite(scale)) { |
| 12 | return NULL; |
| 13 | } |
| 14 | // we don't support scale in this range |
| 15 | if (scale > SK_Scalar1 || scale <= 0) { |
| 16 | return NULL; |
| 17 | } |
senorblanco | 9ea3d57 | 2014-07-08 09:16:22 -0700 | [diff] [blame] | 18 | return SkNEW_ARGS(SkDownSampleImageFilter, (scale, input)); |
commit-bot@chromium.org | cac5fd5 | 2014-03-10 10:51:58 +0000 | [diff] [blame] | 19 | } |
rmistry@google.com | fbfcd56 | 2012-08-23 18:09:54 +0000 | [diff] [blame] | 20 | |
djsollen@google.com | ba28d03 | 2012-03-26 17:57:35 +0000 | [diff] [blame] | 21 | SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDownSampleImageFilter) |
rmistry@google.com | fbfcd56 | 2012-08-23 18:09:54 +0000 | [diff] [blame] | 22 | |
reed@google.com | 32d25b6 | 2011-12-20 16:19:00 +0000 | [diff] [blame] | 23 | protected: |
senorblanco | 9ea3d57 | 2014-07-08 09:16:22 -0700 | [diff] [blame] | 24 | SkDownSampleImageFilter(SkScalar scale, SkImageFilter* input) |
| 25 | : INHERITED(1, &input), fScale(scale) {} |
reed | 9fa60da | 2014-08-21 07:59:51 -0700 | [diff] [blame] | 26 | #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING |
commit-bot@chromium.org | 8b0e8ac | 2014-01-30 18:58:24 +0000 | [diff] [blame] | 27 | SkDownSampleImageFilter(SkReadBuffer& buffer); |
reed | 9fa60da | 2014-08-21 07:59:51 -0700 | [diff] [blame] | 28 | #endif |
commit-bot@chromium.org | 8b0e8ac | 2014-01-30 18:58:24 +0000 | [diff] [blame] | 29 | virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; |
rmistry@google.com | fbfcd56 | 2012-08-23 18:09:54 +0000 | [diff] [blame] | 30 | |
senorblanco@chromium.org | 4cb543d | 2014-03-14 15:44:01 +0000 | [diff] [blame] | 31 | virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&, |
commit-bot@chromium.org | ae761f7 | 2014-02-05 22:32:02 +0000 | [diff] [blame] | 32 | SkBitmap* result, SkIPoint* loc) const SK_OVERRIDE; |
rmistry@google.com | fbfcd56 | 2012-08-23 18:09:54 +0000 | [diff] [blame] | 33 | |
reed@google.com | 32d25b6 | 2011-12-20 16:19:00 +0000 | [diff] [blame] | 34 | private: |
| 35 | SkScalar fScale; |
rmistry@google.com | fbfcd56 | 2012-08-23 18:09:54 +0000 | [diff] [blame] | 36 | |
reed@google.com | 32d25b6 | 2011-12-20 16:19:00 +0000 | [diff] [blame] | 37 | typedef SkImageFilter INHERITED; |
| 38 | }; |
| 39 | |
| 40 | #endif |