1 /* 2 * Copyright 2011 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef _SkTestImageFilters_h 9 #define _SkTestImageFilters_h 10 11 #include "SkImageFilter.h" 12 #include "SkPoint.h" 13 14 // Fun mode that scales down (only) and then scales back up to look pixelated 15 class SK_API SkDownSampleImageFilter : public SkImageFilter { 16 public: 17 static SkImageFilter* Create(SkScalar scale, SkImageFilter* input = NULL) { 18 if (!SkScalarIsFinite(scale)) { 19 return NULL; 20 } 21 // we don't support scale in this range 22 if (scale > SK_Scalar1 || scale <= 0) { 23 return NULL; 24 } 25 return new SkDownSampleImageFilter(scale, input); 26 } 27 28 SK_TO_STRING_OVERRIDE() 29 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDownSampleImageFilter) 30 31 protected: 32 void flatten(SkWriteBuffer&) const override; 33 bool onFilterImageDeprecated(Proxy*, const SkBitmap& src, const Context&, SkBitmap* result, 34 SkIPoint* loc) const override; 35 36 private: SkDownSampleImageFilter(SkScalar scale,SkImageFilter * input)37 SkDownSampleImageFilter(SkScalar scale, SkImageFilter* input) 38 : INHERITED(1, &input), fScale(scale) {} 39 40 SkScalar fScale; 41 42 typedef SkImageFilter INHERITED; 43 }; 44 45 #endif 46