SkBlurImageFilter.h revision c4b12f19a46946e1c02f3525e0ea4902b09feac5
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
14class SK_API SkBlurImageFilter : public SkImageFilter {
15public:
16    SkBlurImageFilter(SkScalar sigmaX,
17                      SkScalar sigmaY,
18                      SkImageFilter* input = NULL,
19                      const CropRect* cropRect = NULL);
20    virtual void computeFastBounds(const SkRect&, SkRect*) const SK_OVERRIDE;
21
22    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBlurImageFilter)
23
24protected:
25    explicit SkBlurImageFilter(SkReadBuffer& buffer);
26    virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
27
28    virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&,
29                               SkBitmap* result, SkIPoint* offset) SK_OVERRIDE;
30    virtual bool onFilterBounds(const SkIRect& src, const SkMatrix&,
31                                SkIRect* dst) const SK_OVERRIDE;
32
33    bool canFilterImageGPU() const SK_OVERRIDE { return true; }
34    virtual bool filterImageGPU(Proxy* proxy, const SkBitmap& src, const SkMatrix& ctm,
35                                SkBitmap* result, SkIPoint* offset) SK_OVERRIDE;
36
37private:
38    SkSize   fSigma;
39    typedef SkImageFilter INHERITED;
40};
41
42#endif
43