SkTileImageFilter.h revision bd0be25074e53a6d1abc284562568c9745191984
1fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville/*
2fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville * Copyright 2013 Google Inc.
3fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville *
4fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville * Use of this source code is governed by a BSD-style license that can be
5fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville * found in the LICENSE file.
6fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville */
7fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
8fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#ifndef SkTileImageFilter_DEFINED
9fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#define SkTileImageFilter_DEFINED
10fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
11fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include "SkImageFilter.h"
12fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
13fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass SK_API SkTileImageFilter : public SkImageFilter {
14fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    typedef SkImageFilter INHERITED;
15fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
16fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillepublic:
17fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    /** Create a tile image filter
18fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        @param srcRect  Defines the pixels to tile
19fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        @param dstRect  Defines the pixels where tiles are drawn
20fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        @param input    Input from which the subregion defined by srcRect will be tiled
21fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    */
22fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    static SkTileImageFilter* Create(const SkRect& srcRect, const SkRect& dstRect,
23fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                                     SkImageFilter* input) {
24fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        return SkNEW_ARGS(SkTileImageFilter, (srcRect, dstRect, input));
25fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    }
26fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
27fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    virtual bool onFilterImage(Proxy* proxy, const SkBitmap& src, const Context& ctx,
28fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                               SkBitmap* dst, SkIPoint* offset) const SK_OVERRIDE;
29fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    virtual bool onFilterBounds(const SkIRect& src, const SkMatrix&,
30fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville                                SkIRect* dst) const SK_OVERRIDE;
31fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
32fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTileImageFilter)
33fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
34fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleprotected:
35fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    SkTileImageFilter(const SkRect& srcRect, const SkRect& dstRect, SkImageFilter* input)
36fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        : INHERITED(input), fSrcRect(srcRect), fDstRect(dstRect) {}
37fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    explicit SkTileImageFilter(SkReadBuffer& buffer);
38fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
39fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE;
40fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
41fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleprivate:
42fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    SkRect fSrcRect;
43fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    SkRect fDstRect;
44fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville};
45fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
46fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif
47fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville