Home | History | Annotate | Download | only in effects
      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