Home | History | Annotate | Download | only in effects
      1 /*
      2  * Copyright 2011 The Android Open Source Project
      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 SkBlurImageFilter_DEFINED
      9 #define SkBlurImageFilter_DEFINED
     10 
     11 #include "SkImageFilter.h"
     12 #include "SkSize.h"
     13 
     14 class SK_API SkBlurImageFilter : public SkImageFilter {
     15 public:
     16     static SkBlurImageFilter* Create(SkScalar sigmaX,
     17                                      SkScalar sigmaY,
     18                                      SkImageFilter* input = NULL,
     19                                      const CropRect* cropRect = NULL) {
     20         return SkNEW_ARGS(SkBlurImageFilter, (sigmaX, sigmaY, input, cropRect));
     21     }
     22 
     23     void computeFastBounds(const SkRect&, SkRect*) const override;
     24 
     25     SK_TO_STRING_OVERRIDE()
     26     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBlurImageFilter)
     27 
     28 protected:
     29     SkBlurImageFilter(SkScalar sigmaX,
     30                       SkScalar sigmaY,
     31                       SkImageFilter* input,
     32                       const CropRect* cropRect);
     33     void flatten(SkWriteBuffer&) const override;
     34 
     35     virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&,
     36                                SkBitmap* result, SkIPoint* offset) const override;
     37     virtual bool onFilterBounds(const SkIRect& src, const SkMatrix&,
     38                                 SkIRect* dst) const override;
     39 
     40     bool canFilterImageGPU() const override { return true; }
     41     virtual bool filterImageGPU(Proxy* proxy, const SkBitmap& src, const Context& ctx,
     42                                 SkBitmap* result, SkIPoint* offset) const override;
     43 
     44 private:
     45     SkSize   fSigma;
     46     typedef SkImageFilter INHERITED;
     47 };
     48 
     49 #endif
     50