[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>
diff --git a/experimental/skottie/Skottie.cpp b/experimental/skottie/Skottie.cpp
index 5b0e836..ad513fd 100644
--- a/experimental/skottie/Skottie.cpp
+++ b/experimental/skottie/Skottie.cpp
@@ -1095,8 +1095,18 @@
 
     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;