From b15ad1e093db6bed4d2160fddea1b608a0a775e1 Mon Sep 17 00:00:00 2001 From: subhransu mohanty Date: Fri, 7 Dec 2018 11:28:58 +0900 Subject: [PATCH] lottie/parser: support start and end opacity property in transform object. the start and end opacity property only exists for repater's transform object. Change-Id: I9bd7f59957ca4d90894bab5981c10c992508556c --- src/lottie/lottiemodel.cpp | 5 ----- src/lottie/lottiemodel.h | 6 +++++- src/lottie/lottieparser.cpp | 6 +++++- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/lottie/lottiemodel.cpp b/src/lottie/lottiemodel.cpp index 1b5cd98..c9b6b62 100644 --- a/src/lottie/lottiemodel.cpp +++ b/src/lottie/lottiemodel.cpp @@ -55,11 +55,6 @@ VMatrix LOTTransformData::matrix(int frameNo, bool autoOrient) const return computeMatrix(frameNo, autoOrient); } -float LOTTransformData::opacity(int frameNo) const -{ - return mOpacity.value(frameNo) / 100.f; -} - void LOTTransformData::cacheMatrix() { mCachedMatrix = computeMatrix(0); diff --git a/src/lottie/lottiemodel.h b/src/lottie/lottiemodel.h index da6502d..8ceb1c5 100644 --- a/src/lottie/lottiemodel.h +++ b/src/lottie/lottiemodel.h @@ -444,7 +444,9 @@ class LOTTransformData : public LOTData public: LOTTransformData():LOTData(LOTData::Type::Transform),mScale({100, 100}){} VMatrix matrix(int frameNo, bool autoOrient = false) const; - float opacity(int frameNo) const; + float opacity(int frameNo) const { return mOpacity.value(frameNo)/100;} + float startOpacity(int frameNo) const { return mStartOpacity.value(frameNo)/100;} + float endOpacity(int frameNo) const { return mEndOpacity.value(frameNo)/100;} void cacheMatrix(); bool staticMatrix() const {return mStaticMatrix;} bool ddd() const {return m3D ? true : false;} @@ -461,6 +463,8 @@ public: LOTAnimatable mOpacity{100}; /* "o" */ LOTAnimatable mSkew{0}; /* "sk" */ LOTAnimatable mSkewAxis{0}; /* "sa" */ + LOTAnimatable mStartOpacity{100}; /* "so" */ + LOTAnimatable mEndOpacity{100}; /* "eo" */ bool mStaticMatrix{true}; bool mSeparate{false}; VMatrix mCachedMatrix; diff --git a/src/lottie/lottieparser.cpp b/src/lottie/lottieparser.cpp index 176db2d..b63d1e9 100644 --- a/src/lottie/lottieparser.cpp +++ b/src/lottie/lottieparser.cpp @@ -1222,7 +1222,11 @@ std::shared_ptr LottieParserImpl::parseTransformObject(bool dd parseProperty(obj->mSkewAxis); } else if (0 == strcmp(key, "o")) { parseProperty(obj->mOpacity); - } else if (0 == strcmp(key, "hd")) { + } else if (0 == strcmp(key, "so")) { + parseProperty(obj->mStartOpacity); + } else if (0 == strcmp(key, "eo")) { + parseProperty(obj->mEndOpacity); + } else if (0 == strcmp(key, "hd")) { obj->mHidden = GetBool(); } else if (0 == strcmp(key, "rx")) { parseProperty(obj->m3D->mRx); -- 2.34.1