From 7ff263736cc72c47966a430391455501f8dde111 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Sun, 7 Jul 2019 17:12:31 +0200 Subject: [PATCH] Added tgs check --- submodules/RLottie/Sources/rlottie/inc/rlottie.h | 2 ++ .../Sources/rlottie/src/lottie/lottieanimation.cpp | 8 +++++++- .../RLottie/Sources/rlottie/src/lottie/lottiemodel.h | 2 ++ .../RLottie/Sources/rlottie/src/lottie/lottieparser.cpp | 5 ++++- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/submodules/RLottie/Sources/rlottie/inc/rlottie.h b/submodules/RLottie/Sources/rlottie/inc/rlottie.h index 74def69ebc..ab70720b2b 100644 --- a/submodules/RLottie/Sources/rlottie/inc/rlottie.h +++ b/submodules/RLottie/Sources/rlottie/inc/rlottie.h @@ -423,6 +423,8 @@ public: * @internal */ ~Animation(); + + bool isTgs() const; private: void setValue(Color_Type, Property, const std::string &, Color); diff --git a/submodules/RLottie/Sources/rlottie/src/lottie/lottieanimation.cpp b/submodules/RLottie/Sources/rlottie/src/lottie/lottieanimation.cpp index 7b11f4f8ce..91514858e7 100644 --- a/submodules/RLottie/Sources/rlottie/src/lottie/lottieanimation.cpp +++ b/submodules/RLottie/Sources/rlottie/src/lottie/lottieanimation.cpp @@ -47,7 +47,8 @@ public: Surface render(size_t frameNo, const Surface &surface); std::future renderAsync(size_t frameNo, Surface &&surface); const LOTLayerNode * renderTree(size_t frameNo, const VSize &size); - + bool isTgs() const { return mModel->isTgs(); } + const LayerInfoList &layerInfoList() const { return mModel->layerInfoList(); @@ -266,6 +267,11 @@ std::unique_ptr Animation::loadFromFile(const std::string &path) return nullptr; } +bool Animation::isTgs() const +{ + return d->isTgs(); +} + void Animation::size(size_t &width, size_t &height) const { VSize sz = d->size(); diff --git a/submodules/RLottie/Sources/rlottie/src/lottie/lottiemodel.h b/submodules/RLottie/Sources/rlottie/src/lottie/lottiemodel.h index 6fe933593e..2353cb7a05 100644 --- a/submodules/RLottie/Sources/rlottie/src/lottie/lottiemodel.h +++ b/submodules/RLottie/Sources/rlottie/src/lottie/lottiemodel.h @@ -569,6 +569,7 @@ public: VSize size() const {return mSize;} void processRepeaterObjects(); public: + int mTgs; std::string mVersion; VSize mSize; long mStartFrame{0}; @@ -954,6 +955,7 @@ public: class LOTModel { public: + bool isTgs() const {return mRoot->mTgs == 1;} bool isStatic() const {return mRoot->isStatic();} double duration() const {return mRoot->duration();} size_t totalFrame() const {return mRoot->totalFrame();} diff --git a/submodules/RLottie/Sources/rlottie/src/lottie/lottieparser.cpp b/submodules/RLottie/Sources/rlottie/src/lottie/lottieparser.cpp index a0d40122d6..9def4aa8a0 100644 --- a/submodules/RLottie/Sources/rlottie/src/lottie/lottieparser.cpp +++ b/submodules/RLottie/Sources/rlottie/src/lottie/lottieparser.cpp @@ -558,7 +558,10 @@ void LottieParserImpl::parseComposition() LOTCompositionData *comp = sharedComposition.get(); compRef = comp; while (const char *key = NextObjectKey()) { - if (0 == strcmp(key, "v")) { + if (0 == strcmp(key, "tgs")) { + RAPIDJSON_ASSERT(PeekType() == kNumberType); + comp->mTgs = GetInt(); + }else if (0 == strcmp(key, "v")) { RAPIDJSON_ASSERT(PeekType() == kStringType); comp->mVersion = std::string(GetString()); } else if (0 == strcmp(key, "w")) {