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