[skottie] Simplify AttachOpacity
BindProperty can already check for no-op static props, so let's use it.
TBR=
Change-Id: If1c327871702b57ad9e6db9a8b112c6775cb7f53
Reviewed-on: https://skia-review.googlesource.com/127140
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
diff --git a/experimental/skottie/Skottie.cpp b/experimental/skottie/Skottie.cpp
index 0ac1b4e..381c9be 100644
--- a/experimental/skottie/Skottie.cpp
+++ b/experimental/skottie/Skottie.cpp
@@ -124,21 +124,17 @@
if (!jtransform.isObject() || !childNode)
return childNode;
- // This is more peeky than other attachers, because we want to avoid redundant opacity
- // nodes for the extremely common case of static opaciy == 100.
- const auto opacity = jtransform["o"];
- if (!opacity["a"].toDefault(true) &&
- opacity["k"].toDefault<int>(-1) == 100) {
- // Ignoring static full opacity.
- return childNode;
- }
-
+ static constexpr ScalarValue kNoopOpacity = 100;
auto opacityNode = sksg::OpacityEffect::Make(childNode);
- BindProperty<ScalarValue>(opacity, &ctx->fAnimators,
+
+ if (!BindProperty<ScalarValue>(jtransform["o"], &ctx->fAnimators,
[opacityNode](const ScalarValue& o) {
// BM opacity is [0..100]
opacityNode->setOpacity(o * 0.01f);
- });
+ }, &kNoopOpacity)) {
+ // We can ignore static full opacity.
+ return childNode;
+ }
return std::move(opacityNode);
}