Home | History | Annotate | Download | only in effects
      1 /*
      2  * Copyright 2013 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 SkTileImageFilter_DEFINED
      9 #define SkTileImageFilter_DEFINED
     10 
     11 #include "SkImageFilter.h"
     12 
     13 class SK_API SkTileImageFilter : public SkImageFilter {
     14     typedef SkImageFilter INHERITED;
     15 
     16 public:
     17     /** Create a tile image filter
     18         @param srcRect  Defines the pixels to tile
     19         @param dstRect  Defines the pixels where tiles are drawn
     20         @param input    Input from which the subregion defined by srcRect will be tiled
     21     */
     22     static SkTileImageFilter* Create(const SkRect& srcRect, const SkRect& dstRect,
     23                                      SkImageFilter* input);
     24 
     25     virtual bool onFilterImage(Proxy* proxy, const SkBitmap& src, const Context& ctx,
     26                                SkBitmap* dst, SkIPoint* offset) const override;
     27     virtual bool onFilterBounds(const SkIRect& src, const SkMatrix&,
     28                                 SkIRect* dst) const override;
     29 
     30     SK_TO_STRING_OVERRIDE()
     31     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTileImageFilter)
     32 
     33 protected:
     34     SkTileImageFilter(const SkRect& srcRect, const SkRect& dstRect, SkImageFilter* input)
     35         : INHERITED(1, &input, NULL), fSrcRect(srcRect), fDstRect(dstRect) {}
     36 
     37     void flatten(SkWriteBuffer& buffer) const override;
     38 
     39 private:
     40     SkRect fSrcRect;
     41     SkRect fDstRect;
     42 };
     43 
     44 #endif
     45