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