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         return SkNEW_ARGS(SkTileImageFilter, (srcRect, dstRect, input));
     25     }
     26 
     27     virtual bool onFilterImage(Proxy* proxy, const SkBitmap& src, const Context& ctx,
     28                                SkBitmap* dst, SkIPoint* offset) const SK_OVERRIDE;
     29     virtual bool onFilterBounds(const SkIRect& src, const SkMatrix&,
     30                                 SkIRect* dst) const SK_OVERRIDE;
     31 
     32     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTileImageFilter)
     33 
     34 protected:
     35     SkTileImageFilter(const SkRect& srcRect, const SkRect& dstRect, SkImageFilter* input)
     36         : INHERITED(input), fSrcRect(srcRect), fDstRect(dstRect) {}
     37     explicit SkTileImageFilter(SkReadBuffer& buffer);
     38 
     39     virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE;
     40 
     41 private:
     42     SkRect fSrcRect;
     43     SkRect fDstRect;
     44 };
     45 
     46 #endif
     47