11a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org/*
21a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org * Copyright 2013 Google Inc.
31a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org *
41a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org * Use of this source code is governed by a BSD-style license that can be
51a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org * found in the LICENSE file.
61a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org */
71a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org
81a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org#ifndef SkTileImageFilter_DEFINED
91a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org#define SkTileImageFilter_DEFINED
101a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org
111a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org#include "SkImageFilter.h"
121a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org
1355f5682523f66c7a0d9696ff9f7c50cc8a6d6b45sugoi@google.comclass SK_API SkTileImageFilter : public SkImageFilter {
141a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.orgpublic:
15cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org    /** Create a tile image filter
165ea95df02de9cd774d0b84d1341599bbd9c0d8dbreed        @param src  Defines the pixels to tile
175ea95df02de9cd774d0b84d1341599bbd9c0d8dbreed        @param dst  Defines the pixels where tiles are drawn
181a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org        @param input    Input from which the subregion defined by srcRect will be tiled
191a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org    */
20534c270465a9824893d5c9d6c5bacef7726cc389robertphillips    static sk_sp<SkImageFilter> Make(const SkRect& src,
21534c270465a9824893d5c9d6c5bacef7726cc389robertphillips                                     const SkRect& dst,
22534c270465a9824893d5c9d6c5bacef7726cc389robertphillips                                     sk_sp<SkImageFilter> input);
231a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org
24e5e79840ef38ab1d3f03abcf1b2df66fb9940018senorblanco    SkIRect onFilterBounds(const SkIRect& src, const SkMatrix&, MapDirection) const override;
25e5e79840ef38ab1d3f03abcf1b2df66fb9940018senorblanco    SkIRect onFilterNodeBounds(const SkIRect&, const SkMatrix&, MapDirection) const override;
26e5e79840ef38ab1d3f03abcf1b2df66fb9940018senorblanco    SkRect computeFastBounds(const SkRect& src) const override;
271a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org
28f3f5bad7ded35265c0b5d042cc4174386b197a33robertphillips    SK_TO_STRING_OVERRIDE()
291a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTileImageFilter)
301a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org
311a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.orgprotected:
3295376a0dde3cdf414eb97a20cef3af19ed7e0151schenney    void flatten(SkWriteBuffer& buffer) const override;
3395376a0dde3cdf414eb97a20cef3af19ed7e0151schenney
34c14b978613c663b97ff0b08e0013dc72bb66d46drobertphillips    sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&,
35c14b978613c663b97ff0b08e0013dc72bb66d46drobertphillips                                        SkIPoint* offset) const override;
366d72ed918d8763e65899183c2d12b06958c791f4Matt Sarett    sk_sp<SkImageFilter> onMakeColorSpace(SkColorSpaceXformer*) const override;
37c14b978613c663b97ff0b08e0013dc72bb66d46drobertphillips
3895376a0dde3cdf414eb97a20cef3af19ed7e0151schenneyprivate:
39534c270465a9824893d5c9d6c5bacef7726cc389robertphillips    SkTileImageFilter(const SkRect& srcRect, const SkRect& dstRect, sk_sp<SkImageFilter> input)
40534c270465a9824893d5c9d6c5bacef7726cc389robertphillips        : INHERITED(&input, 1, nullptr), fSrcRect(srcRect), fDstRect(dstRect) {}
415ea95df02de9cd774d0b84d1341599bbd9c0d8dbreed
421a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org    SkRect fSrcRect;
431a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org    SkRect fDstRect;
44c14b978613c663b97ff0b08e0013dc72bb66d46drobertphillips
45c14b978613c663b97ff0b08e0013dc72bb66d46drobertphillips    typedef SkImageFilter INHERITED;
461a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org};
471a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org
481a4fb70c8a04db2d92ec821555f91218a989031dcommit-bot@chromium.org#endif
49