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#include "SkColor.h"
9#include "SkImageFilter.h"
10#include "SkScalar.h"
11
12class SK_API SkDropShadowImageFilter : public SkImageFilter {
13public:
14    static SkDropShadowImageFilter* Create(SkScalar dx, SkScalar dy, SkScalar sigma,
15                                           SkColor color, SkImageFilter* input = NULL) {
16        return SkNEW_ARGS(SkDropShadowImageFilter, (dx, dy, sigma, color, input));
17    }
18    static SkDropShadowImageFilter* Create(SkScalar dx, SkScalar dy,
19                                           SkScalar sigmaX, SkScalar sigmaY, SkColor color,
20                                           SkImageFilter* input = NULL,
21                                           const CropRect* cropRect = NULL) {
22        return SkNEW_ARGS(SkDropShadowImageFilter, (dx, dy, sigmaX, sigmaY,
23                                                    color, input, cropRect));
24    }
25    virtual void computeFastBounds(const SkRect&, SkRect*) const SK_OVERRIDE;
26    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDropShadowImageFilter)
27
28protected:
29    SkDropShadowImageFilter(SkScalar dx, SkScalar dy, SkScalar sigma, SkColor,
30                            SkImageFilter* input);
31    SkDropShadowImageFilter(SkScalar dx, SkScalar dy, SkScalar sigmaX, SkScalar sigmaY, SkColor,
32                            SkImageFilter* input, const CropRect* cropRect);
33    explicit SkDropShadowImageFilter(SkReadBuffer&);
34    virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
35    virtual bool onFilterImage(Proxy*, const SkBitmap& source, const Context&, SkBitmap* result, SkIPoint* loc) const SK_OVERRIDE;
36    virtual bool onFilterBounds(const SkIRect& src, const SkMatrix&,
37                                SkIRect* dst) const SK_OVERRIDE;
38
39private:
40    SkScalar fDx, fDy, fSigmaX, fSigmaY;
41    SkColor fColor;
42    typedef SkImageFilter INHERITED;
43};
44