rlottie: refactor VGradient to remove unnecessary inheritance
authorsubhransu mohanty <sub.mohanty@samsung.com>
Mon, 1 Jul 2019 09:37:09 +0000 (18:37 +0900)
committerHermet Park <hermetpark@gmail.com>
Wed, 10 Jul 2019 01:56:52 +0000 (10:56 +0900)
src/lottie/lottiemodel.cpp
src/vector/vbrush.cpp
src/vector/vbrush.h

index a657b61..4156c9f 100644 (file)
@@ -265,9 +265,9 @@ void LOTGradient::update(std::unique_ptr<VGradient> &grad, int frameNo)
     bool init = false;
     if (!grad) {
         if (mGradientType == 1)
-            grad = std::make_unique<VLinearGradient>(0, 0, 0, 0);
+            grad = std::make_unique<VGradient>(VGradient::Type::Linear);
         else
-            grad = std::make_unique<VRadialGradient>(0, 0, 0, 0, 0, 0);
+            grad = std::make_unique<VGradient>(VGradient::Type::Radial);
         grad->mSpread = VGradient::Spread::Pad;
         init = true;
     }
index cdc114e..11ec6eb 100644 (file)
@@ -25,6 +25,11 @@ VGradient::VGradient(VGradient::Type type)
       mSpread(VGradient::Spread::Pad),
       mMode(VGradient::Mode::Absolute)
 {
+    if (mType == Type::Linear)
+        linear.x1 = linear.y1 = linear.x2 = linear.y2 = 0.0f;
+    else
+        radial.cx = radial.cy = radial.fx =
+        radial.fy = radial.cradius = radial.fradius = 0.0f;
 }
 
 void VGradient::setStops(const VGradientStops &stops)
@@ -32,49 +37,6 @@ void VGradient::setStops(const VGradientStops &stops)
     mStops = stops;
 }
 
-VLinearGradient::VLinearGradient(const VPointF &start, const VPointF &stop)
-    : VGradient(VGradient::Type::Linear)
-{
-    linear.x1 = start.x();
-    linear.y1 = start.y();
-    linear.x1 = stop.x();
-    linear.y1 = stop.y();
-}
-
-VLinearGradient::VLinearGradient(float xStart, float yStart, float xStop,
-                                 float yStop)
-    : VGradient(VGradient::Type::Linear)
-{
-    linear.x1 = xStart;
-    linear.y1 = yStart;
-    linear.x1 = xStop;
-    linear.y1 = yStop;
-}
-
-VRadialGradient::VRadialGradient(const VPointF &center, float cradius,
-                                 const VPointF &focalPoint, float fradius)
-    : VGradient(VGradient::Type::Radial)
-{
-    radial.cx = center.x();
-    radial.cy = center.y();
-    radial.fx = focalPoint.x();
-    radial.fy = focalPoint.y();
-    radial.cradius = cradius;
-    radial.fradius = fradius;
-}
-
-VRadialGradient::VRadialGradient(float cx, float cy, float cradius, float fx,
-                                 float fy, float fradius)
-    : VGradient(VGradient::Type::Radial)
-{
-    radial.cx = cx;
-    radial.cy = cy;
-    radial.fx = fx;
-    radial.fy = fy;
-    radial.cradius = cradius;
-    radial.fradius = fradius;
-}
-
 VBrush::VBrush(const VColor &color) : mType(VBrush::Type::Solid), mColor(color)
 {
 }
index 348e2ec..94db6d0 100644 (file)
@@ -58,20 +58,6 @@ public:
     VMatrix mMatrix;
 };
 
-class VLinearGradient : public VGradient {
-public:
-    VLinearGradient(const VPointF &start, const VPointF &stop);
-    VLinearGradient(float xStart, float yStart, float xStop, float yStop);
-};
-
-class VRadialGradient : public VGradient {
-public:
-    VRadialGradient(const VPointF &center, float cradius,
-                    const VPointF &focalPoint, float fradius);
-    VRadialGradient(float cx, float cy, float cradius, float fx, float fy,
-                    float fradius);
-};
-
 class VBrush {
 public:
     enum class Type { NoBrush, Solid, LinearGradient, RadialGradient, Texture };