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()
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTileImageFilter)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