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/skottie/Skottie.cpp | |
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/skottie/Skottie.cpp')
-rw-r--r-- | experimental/skottie/Skottie.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/experimental/skottie/Skottie.cpp b/experimental/skottie/Skottie.cpp index 5b0e836997..ad513fdc75 100644 --- a/experimental/skottie/Skottie.cpp +++ b/experimental/skottie/Skottie.cpp @@ -1095,8 +1095,18 @@ sk_sp<sksg::RenderNode> AttachLayer(const Json::Value& jlayer, if (layerCtx->fCurrentMatte) { // There is a pending matte. Apply and reset. - return sksg::MaskEffect::Make(std::move(controller_node), - std::move(layerCtx->fCurrentMatte)); + static constexpr sksg::MaskEffect::Mode gMaskModes[] = { + sksg::MaskEffect::Mode::kNormal, // tt: 1 + sksg::MaskEffect::Mode::kInvert, // tt: 2 + }; + const auto matteType = ParseDefault(jlayer["tt"], 1) - 1; + + if (matteType >= 0 && matteType < SkTo<int>(SK_ARRAY_COUNT(gMaskModes))) { + return sksg::MaskEffect::Make(std::move(controller_node), + std::move(layerCtx->fCurrentMatte), + gMaskModes[matteType]); + } + layerCtx->fCurrentMatte.reset(); } return controller_node; |