From fa087b44e8ad2d4d9b9ecdd6e140019ea597635b Mon Sep 17 00:00:00 2001 From: subhransu mohanty Date: Mon, 20 Aug 2018 11:22:31 +0900 Subject: [PATCH] lottie/parser: treat root layer as a special precomp layer. Change-Id: Ic9a2b171ee349f132e52db5395a92587c9e44c08 --- src/lottie/lottieitem.cpp | 3 ++- src/lottie/lottiemodel.h | 2 ++ src/lottie/lottieparser.cpp | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lottie/lottieitem.cpp b/src/lottie/lottieitem.cpp index fd044fd..c835e02 100644 --- a/src/lottie/lottieitem.cpp +++ b/src/lottie/lottieitem.cpp @@ -322,7 +322,8 @@ LOTCompLayerItem::LOTCompLayerItem(LOTLayerData *layerModel) [id](const auto& val){ return val->id() == id;}); if (search != mLayers.end()) i->setParentLayer(*search); } - i->setPrecompLayer(this); + // update the precomp layer if its not the root layer. + if (!layerModel->root()) i->setPrecompLayer(this); } } diff --git a/src/lottie/lottiemodel.h b/src/lottie/lottiemodel.h index 1321d92..3f16213 100644 --- a/src/lottie/lottiemodel.h +++ b/src/lottie/lottiemodel.h @@ -312,6 +312,7 @@ public: bool hasGradient() const noexcept {return mHasGradient;} bool hasMask() const noexcept {return mHasMask;} bool hasRepeater() const noexcept {return mHasRepeater;} + bool root() const noexcept {return mRoot;} int id() const noexcept{ return mId;} int parentId() const noexcept{ return mParentId;} int inFrame() const noexcept{return mInFrame;} @@ -346,6 +347,7 @@ public: bool mHasMask{false}; bool mHasRepeater{false}; bool mHasGradient{false}; + bool mRoot{false}; std::vector> mMasks; }; diff --git a/src/lottie/lottieparser.cpp b/src/lottie/lottieparser.cpp index d4e6db3..05b8bb8 100644 --- a/src/lottie/lottieparser.cpp +++ b/src/lottie/lottieparser.cpp @@ -636,6 +636,7 @@ std::shared_ptr LottieParserImpl::parseAsset() void LottieParserImpl::parseLayers(LOTCompositionData *comp) { comp->mRootLayer = std::make_shared(); + comp->mRootLayer->mRoot = true; comp->mRootLayer->mLayerType = LayerType::Precomp; comp->mRootLayer->mTransform = std::make_shared(); bool staticFlag = true; -- 2.34.1