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 SkRectShaderImageFilter_DEFINED 9 #define SkRectShaderImageFilter_DEFINED 10 11 #include "SkImageFilter.h" 12 #include "SkRect.h" 13 14 class SkShader; 15 16 class SK_API SkRectShaderImageFilter : public SkImageFilter { 17 public: 18 /** Create a new image filter which fills the given rectangle with pixels 19 * produced by the given SkShader. If no rectangle is specified, an output 20 * is produced with the same bounds as the input primitive (even though 21 * the input primitive's pixels are not used for processing). 22 * @param s Shader to call for processing. Cannot be NULL. Will be 23 * ref'ed by the new image filter. 24 * @param rect Rectangle of output pixels in which to apply the shader. 25 * If NULL or a given crop edge is not specified, the source 26 * primitive's bounds are used instead. 27 */ 28 SK_ATTR_DEPRECATED("use Create(SkShader*, const CropRect*)") 29 static SkRectShaderImageFilter* Create(SkShader* s, const SkRect& rect); 30 31 static SkRectShaderImageFilter* Create(SkShader* s, const CropRect* rect = NULL); 32 virtual ~SkRectShaderImageFilter(); 33 34 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkRectShaderImageFilter) 35 36 protected: 37 SkRectShaderImageFilter(SkReadBuffer& buffer); 38 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; 39 40 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&, 41 SkBitmap* result, SkIPoint* loc) const SK_OVERRIDE; 42 43 private: 44 SkRectShaderImageFilter(SkShader* s, const CropRect* rect); 45 SkShader* fShader; 46 47 typedef SkImageFilter INHERITED; 48 }; 49 50 #endif 51