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 8class SK_API SkDownSampleImageFilter : public SkImageFilter { 9public: 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_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDownSampleImageFilter) 22 23protected: 24 SkDownSampleImageFilter(SkScalar scale, SkImageFilter* input) 25 : INHERITED(1, &input), fScale(scale) {} 26#ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING 27 SkDownSampleImageFilter(SkReadBuffer& buffer); 28#endif 29 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; 30 31 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&, 32 SkBitmap* result, SkIPoint* loc) const SK_OVERRIDE; 33 34private: 35 SkScalar fScale; 36 37 typedef SkImageFilter INHERITED; 38}; 39 40#endif 41