Home | History | Annotate | Download | only in effects
      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