• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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     virtual void computeFastBounds(const SkRect&, SkRect*) const SK_OVERRIDE;
24 
25     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBlurImageFilter)
26 
27 protected:
28     SkBlurImageFilter(SkScalar sigmaX,
29                       SkScalar sigmaY,
30                       SkImageFilter* input,
31                       const CropRect* cropRect);
32     explicit SkBlurImageFilter(SkReadBuffer& buffer);
33     virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
34 
35     virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&,
36                                SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE;
37     virtual bool onFilterBounds(const SkIRect& src, const SkMatrix&,
38                                 SkIRect* dst) const SK_OVERRIDE;
39 
canFilterImageGPU()40     bool canFilterImageGPU() const SK_OVERRIDE { return true; }
41     virtual bool filterImageGPU(Proxy* proxy, const SkBitmap& src, const Context& ctx,
42                                 SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE;
43 
44 private:
45     SkSize   fSigma;
46     typedef SkImageFilter INHERITED;
47 };
48 
49 #endif
50