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