diff options
Diffstat (limited to 'include/effects/SkBlurDrawLooper.h')
-rw-r--r-- | include/effects/SkBlurDrawLooper.h | 60 |
1 files changed, 6 insertions, 54 deletions
diff --git a/include/effects/SkBlurDrawLooper.h b/include/effects/SkBlurDrawLooper.h index 415018a2ad..45289c8941 100644 --- a/include/effects/SkBlurDrawLooper.h +++ b/include/effects/SkBlurDrawLooper.h @@ -10,61 +10,13 @@ #define SkBlurDrawLooper_DEFINED #include "SkDrawLooper.h" -#include "SkColor.h" -class SkArenaAlloc; -class SkMaskFilter; -class SkColorFilter; - -/** \class SkBlurDrawLooper - This class draws a shadow of the object (possibly offset), and then draws - the original object in its original position. - should there be an option to just draw the shadow/blur layer? webkit? -*/ -class SK_API SkBlurDrawLooper : public SkDrawLooper { -public: - static sk_sp<SkDrawLooper> Make(SkColor color, SkScalar sigma, SkScalar dx, SkScalar dy) { - return sk_sp<SkDrawLooper>(new SkBlurDrawLooper(color, sigma, dx, dy)); - } - - SkDrawLooper::Context* makeContext(SkCanvas*, SkArenaAlloc*) const override; - - SK_TO_STRING_OVERRIDE() - SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBlurDrawLooper) - -protected: - SkBlurDrawLooper(SkColor color, SkScalar sigma, SkScalar dx, SkScalar dy); - - void flatten(SkWriteBuffer&) const override; - - bool asABlurShadow(BlurShadowRec*) const override; - -private: - sk_sp<SkMaskFilter> fBlur; - SkScalar fDx, fDy, fSigma; - SkColor fBlurColor; - - enum State { - kBeforeEdge, - kAfterEdge, - kDone - }; - - class BlurDrawLooperContext : public SkDrawLooper::Context { - public: - explicit BlurDrawLooperContext(const SkBlurDrawLooper* looper); - - bool next(SkCanvas* canvas, SkPaint* paint) override; - - private: - const SkBlurDrawLooper* fLooper; - State fState; - }; - - void init(SkScalar sigma, SkScalar dx, SkScalar dy, SkColor color); - void initEffects(); - - typedef SkDrawLooper INHERITED; +/** + * Draws a shadow of the object (possibly offset), and then draws the original object in + * its original position. + */ +namespace SkBlurDrawLooper { + sk_sp<SkDrawLooper> Make(SkColor color, SkScalar sigma, SkScalar dx, SkScalar dy); }; #endif |