• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
12 class SK_API SkDropShadowImageFilter : public SkImageFilter {
13 public:
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 
28 protected:
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 
39 private:
40     SkScalar fDx, fDy, fSigmaX, fSigmaY;
41     SkColor fColor;
42     typedef SkImageFilter INHERITED;
43 };
44