SkTileImageFilter.h revision 4cb543d6057b692e1099e9f115155f0bf323a0c8
16f56ab789cb470620554d624c37f488285b3b04eDan Albert/*
26f56ab789cb470620554d624c37f488285b3b04eDan Albert * Copyright 2013 Google Inc.
36f56ab789cb470620554d624c37f488285b3b04eDan Albert *
46f56ab789cb470620554d624c37f488285b3b04eDan Albert * Use of this source code is governed by a BSD-style license that can be
56f56ab789cb470620554d624c37f488285b3b04eDan Albert * found in the LICENSE file.
66f56ab789cb470620554d624c37f488285b3b04eDan Albert */
76f56ab789cb470620554d624c37f488285b3b04eDan Albert
86f56ab789cb470620554d624c37f488285b3b04eDan Albert#ifndef SkTileImageFilter_DEFINED
96f56ab789cb470620554d624c37f488285b3b04eDan Albert#define SkTileImageFilter_DEFINED
106f56ab789cb470620554d624c37f488285b3b04eDan Albert
116f56ab789cb470620554d624c37f488285b3b04eDan Albert#include "SkImageFilter.h"
126f56ab789cb470620554d624c37f488285b3b04eDan Albert
136f56ab789cb470620554d624c37f488285b3b04eDan Albertclass SK_API SkTileImageFilter : public SkImageFilter {
146f56ab789cb470620554d624c37f488285b3b04eDan Albert    typedef SkImageFilter INHERITED;
156f56ab789cb470620554d624c37f488285b3b04eDan Albert
166f56ab789cb470620554d624c37f488285b3b04eDan Albertpublic:
176f56ab789cb470620554d624c37f488285b3b04eDan Albert    /** Create a tile image filter
186f56ab789cb470620554d624c37f488285b3b04eDan Albert        @param srcRect  Defines the pixels to tile
196f56ab789cb470620554d624c37f488285b3b04eDan Albert        @param dstRect  Defines the pixels where tiles are drawn
206f56ab789cb470620554d624c37f488285b3b04eDan Albert        @param input    Input from which the subregion defined by srcRect will be tiled
216f56ab789cb470620554d624c37f488285b3b04eDan Albert    */
226f56ab789cb470620554d624c37f488285b3b04eDan Albert    static SkTileImageFilter* Create(const SkRect& srcRect, const SkRect& dstRect,
236f56ab789cb470620554d624c37f488285b3b04eDan Albert                                     SkImageFilter* input) {
246f56ab789cb470620554d624c37f488285b3b04eDan Albert        return SkNEW_ARGS(SkTileImageFilter, (srcRect, dstRect, input));
256f56ab789cb470620554d624c37f488285b3b04eDan Albert    }
266f56ab789cb470620554d624c37f488285b3b04eDan Albert
276f56ab789cb470620554d624c37f488285b3b04eDan Albert    virtual bool onFilterImage(Proxy* proxy, const SkBitmap& src, const Context& ctx,
286f56ab789cb470620554d624c37f488285b3b04eDan Albert                               SkBitmap* dst, SkIPoint* offset) const SK_OVERRIDE;
296f56ab789cb470620554d624c37f488285b3b04eDan Albert
306f56ab789cb470620554d624c37f488285b3b04eDan Albert    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTileImageFilter)
316f56ab789cb470620554d624c37f488285b3b04eDan Albert
326f56ab789cb470620554d624c37f488285b3b04eDan Albertprotected:
336f56ab789cb470620554d624c37f488285b3b04eDan Albert    explicit SkTileImageFilter(SkReadBuffer& buffer);
346f56ab789cb470620554d624c37f488285b3b04eDan Albert
356f56ab789cb470620554d624c37f488285b3b04eDan Albert    virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE;
366f56ab789cb470620554d624c37f488285b3b04eDan Albert
376f56ab789cb470620554d624c37f488285b3b04eDan Albert#ifdef SK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS
386f56ab789cb470620554d624c37f488285b3b04eDan Albertpublic:
396f56ab789cb470620554d624c37f488285b3b04eDan Albert#endif
406f56ab789cb470620554d624c37f488285b3b04eDan Albert    SkTileImageFilter(const SkRect& srcRect, const SkRect& dstRect, SkImageFilter* input)
416f56ab789cb470620554d624c37f488285b3b04eDan Albert        : INHERITED(input), fSrcRect(srcRect), fDstRect(dstRect) {}
426f56ab789cb470620554d624c37f488285b3b04eDan Albert
436f56ab789cb470620554d624c37f488285b3b04eDan Albertprivate:
446f56ab789cb470620554d624c37f488285b3b04eDan Albert    SkRect fSrcRect;
456f56ab789cb470620554d624c37f488285b3b04eDan Albert    SkRect fDstRect;
466f56ab789cb470620554d624c37f488285b3b04eDan Albert};
476f56ab789cb470620554d624c37f488285b3b04eDan Albert
486f56ab789cb470620554d624c37f488285b3b04eDan Albert#endif
496f56ab789cb470620554d624c37f488285b3b04eDan Albert