diff options
author | Florin Malita <fmalita@chromium.org> | 2018-03-05 14:01:41 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-03-05 20:11:05 +0000 |
commit | a016be94993aa57a3a5afcea07d70e6e18068d48 (patch) | |
tree | dd8a313268b3c81377e818784244f046f1d76018 /experimental/sksg/effects/SkSGMaskEffect.h | |
parent | 07edbd45c24b13c6d8c638c50f04291c427e9575 (diff) |
[skottie] Inverted matte support
TBR=
Change-Id: I761d80d27d9a737710123a183af37135c270b8a7
Reviewed-on: https://skia-review.googlesource.com/112162
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'experimental/sksg/effects/SkSGMaskEffect.h')
-rw-r--r-- | experimental/sksg/effects/SkSGMaskEffect.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/experimental/sksg/effects/SkSGMaskEffect.h b/experimental/sksg/effects/SkSGMaskEffect.h index aef82b4ef6..c4fd0120e5 100644 --- a/experimental/sksg/effects/SkSGMaskEffect.h +++ b/experimental/sksg/effects/SkSGMaskEffect.h @@ -18,23 +18,30 @@ namespace sksg { */ class MaskEffect final : public EffectNode { public: - static sk_sp<MaskEffect> Make(sk_sp<RenderNode> child, sk_sp<RenderNode> mask) { + enum class Mode { + kNormal, + kInvert + }; + + static sk_sp<MaskEffect> Make(sk_sp<RenderNode> child, sk_sp<RenderNode> mask, + Mode mode = Mode::kNormal) { return (child && mask) - ? sk_sp<MaskEffect>(new MaskEffect(std::move(child), std::move(mask))) + ? sk_sp<MaskEffect>(new MaskEffect(std::move(child), std::move(mask), mode)) : nullptr; } ~MaskEffect() override; protected: - MaskEffect(sk_sp<RenderNode>, sk_sp<RenderNode> mask); + MaskEffect(sk_sp<RenderNode>, sk_sp<RenderNode> mask, Mode); void onRender(SkCanvas*) const override; SkRect onRevalidate(InvalidationController*, const SkMatrix&) override; private: - sk_sp<RenderNode> fMaskNode; + const sk_sp<RenderNode> fMaskNode; + const Mode fMaskMode; typedef EffectNode INHERITED; }; |