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