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