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