aboutsummaryrefslogtreecommitdiffhomepage
path: root/experimental/skottie/Skottie.cpp
diff options
context:
space:
mode:
authorGravatar Florin Malita <fmalita@chromium.org>2018-03-05 14:01:41 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-03-05 20:11:05 +0000
commita016be94993aa57a3a5afcea07d70e6e18068d48 (patch)
treedd8a313268b3c81377e818784244f046f1d76018 /experimental/skottie/Skottie.cpp
parent07edbd45c24b13c6d8c638c50f04291c427e9575 (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.cpp14
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;