lottie/parser: support start and end opacity property in transform object. 78/194678/1
authorsubhransu mohanty <sub.mohanty@samsung.com>
Fri, 7 Dec 2018 02:28:58 +0000 (11:28 +0900)
committersubhransu mohanty <sub.mohanty@samsung.com>
Fri, 7 Dec 2018 02:55:41 +0000 (11:55 +0900)
the start and end opacity property only exists for repater's transform object.

Change-Id: I9bd7f59957ca4d90894bab5981c10c992508556c

src/lottie/lottiemodel.cpp
src/lottie/lottiemodel.h
src/lottie/lottieparser.cpp

index 1b5cd98cb67a91c00af4279300a33ce840150558..c9b6b62b9c41bef8cb22ac7e11e306b035ba4ecd 100644 (file)
@@ -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);
index da6502d6f76a4ff04c6ece0438b4f7ecb8c87730..8ceb1c5dd5ddc5ba7bd3cb7b978f6c78ad783eee 100644 (file)
@@ -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<float>          mOpacity{100};   /* "o" */
     LOTAnimatable<float>          mSkew{0};      /* "sk" */
     LOTAnimatable<float>          mSkewAxis{0};  /* "sa" */
+    LOTAnimatable<float>          mStartOpacity{100}; /* "so" */
+    LOTAnimatable<float>          mEndOpacity{100};   /* "eo" */
     bool                          mStaticMatrix{true};
     bool                          mSeparate{false};
     VMatrix                       mCachedMatrix;
index 176db2d98b04ace0e5240476d80822d60e6f390e..b63d1e9e07125cde6ccb6a61c1d501eaaf7af776 100644 (file)
@@ -1222,7 +1222,11 @@ std::shared_ptr<LOTTransformData> 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);