160014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org/*
260014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org * Copyright 2011 The Android Open Source Project
360014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org *
460014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org * Use of this source code is governed by a BSD-style license that can be
560014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org * found in the LICENSE file.
660014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org */
760014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org
860014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org#ifndef SkBlurImageFilter_DEFINED
960014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org#define SkBlurImageFilter_DEFINED
1060014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org
11377c14a1e648f4427bd11474fad8ac264d98aff2senorblanco@chromium.org#include "SkImageFilter.h"
12bf2768bab9f3b21c03a8f9a75dc891231d5857ccsenorblanco@chromium.org#include "SkSize.h"
1360014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org
14377c14a1e648f4427bd11474fad8ac264d98aff2senorblanco@chromium.orgclass SK_API SkBlurImageFilter : public SkImageFilter {
1560014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.orgpublic:
16cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org    static SkBlurImageFilter* Create(SkScalar sigmaX,
17cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org                                     SkScalar sigmaY,
18cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org                                     SkImageFilter* input = NULL,
19cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org                                     const CropRect* cropRect = NULL) {
20cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org        return SkNEW_ARGS(SkBlurImageFilter, (sigmaX, sigmaY, input, cropRect));
21cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org    }
22cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org
23336d1d759590d9bedcbc5a96d0fff79861cf8f7asenorblanco@chromium.org    virtual void computeFastBounds(const SkRect&, SkRect*) const SK_OVERRIDE;
2476dd277b1fa021c42fc3acdd8d61e7dc05f9c267reed@google.com
25ba28d03e94dc221d6a803bf2a84a420b9159255cdjsollen@google.com    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBlurImageFilter)
26d26147adbbdca85f07dff432025afee0c8614387caryclark@google.com
2754e01b2ab985e7a7d38109812069d056d128bfa1senorblanco@chromium.orgprotected:
28bd0be25074e53a6d1abc284562568c9745191984commit-bot@chromium.org    SkBlurImageFilter(SkScalar sigmaX,
29bd0be25074e53a6d1abc284562568c9745191984commit-bot@chromium.org                      SkScalar sigmaY,
30bd0be25074e53a6d1abc284562568c9745191984commit-bot@chromium.org                      SkImageFilter* input,
31bd0be25074e53a6d1abc284562568c9745191984commit-bot@chromium.org                      const CropRect* cropRect);
328b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org    explicit SkBlurImageFilter(SkReadBuffer& buffer);
338b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org    virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
3476dd277b1fa021c42fc3acdd8d61e7dc05f9c267reed@google.com
354cb543d6057b692e1099e9f115155f0bf323a0c8senorblanco@chromium.org    virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&,
36ae761f7545d8ebf181d220169afac2056b057b8ccommit-bot@chromium.org                               SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE;
37c4b12f19a46946e1c02f3525e0ea4902b09feac5senorblanco@chromium.org    virtual bool onFilterBounds(const SkIRect& src, const SkMatrix&,
38c4b12f19a46946e1c02f3525e0ea4902b09feac5senorblanco@chromium.org                                SkIRect* dst) const SK_OVERRIDE;
3976dd277b1fa021c42fc3acdd8d61e7dc05f9c267reed@google.com
40302cffba86a188373c99833d83392f33e6014542senorblanco@chromium.org    bool canFilterImageGPU() const SK_OVERRIDE { return true; }
414cb543d6057b692e1099e9f115155f0bf323a0c8senorblanco@chromium.org    virtual bool filterImageGPU(Proxy* proxy, const SkBitmap& src, const Context& ctx,
42ae761f7545d8ebf181d220169afac2056b057b8ccommit-bot@chromium.org                                SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE;
43302cffba86a188373c99833d83392f33e6014542senorblanco@chromium.org
4460014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.orgprivate:
4560014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org    SkSize   fSigma;
46377c14a1e648f4427bd11474fad8ac264d98aff2senorblanco@chromium.org    typedef SkImageFilter INHERITED;
4760014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org};
4860014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org
4960014ca38710d3fc265f4376b05c0fefd0e044cfsenorblanco@chromium.org#endif
50