Home | History | Annotate | Download | only in effects
      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:
     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