1 #ifndef _SkTestImageFilters_h
2 #define _SkTestImageFilters_h
3 
4 #include "SkImageFilter.h"
5 #include "SkPoint.h"
6 
7 // Fun mode that scales down (only) and then scales back up to look pixelated
8 class SK_API SkDownSampleImageFilter : public SkImageFilter {
9 public:
10     static SkDownSampleImageFilter* Create(SkScalar scale, SkImageFilter* input = NULL) {
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         }
18         return SkNEW_ARGS(SkDownSampleImageFilter, (scale, input));
19     }
20 
21     SK_TO_STRING_OVERRIDE()
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDownSampleImageFilter)22     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDownSampleImageFilter)
23 
24 protected:
25     SkDownSampleImageFilter(SkScalar scale, SkImageFilter* input)
26       : INHERITED(1, &input), fScale(scale) {}
27     void flatten(SkWriteBuffer&) const override;
28 
29     virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&,
30                                SkBitmap* result, SkIPoint* loc) const override;
31 
32 private:
33     SkScalar fScale;
34 
35     typedef SkImageFilter INHERITED;
36 };
37 
38 #endif
39