vector: refactor pathmesure to keep a scratch path object for memory efficieny
authorsubhransu mohanty <sub.mohanty@samsung.com>
Thu, 26 Sep 2019 01:16:10 +0000 (10:16 +0900)
committerJongmin Lee <jm105.lee@samsung.com>
Thu, 26 Sep 2019 22:00:49 +0000 (07:00 +0900)
src/vector/vpathmesure.cpp
src/vector/vpathmesure.h

index f0f305b075a7ff4820338c486ab93c907321d19b..929c2e7f862e7f8213b2d392525f1d08bd725843 100644 (file)
@@ -46,7 +46,8 @@ VPath VPathMesure::trim(const VPath &path)
             std::numeric_limits<float>::max(),  // 2nd segment
         };
         VDasher dasher(array, 4);
-        return dasher.dashed(path);
+        dasher.dashed(path, mScratchObject);
+        return mScratchObject;
     } else {
         float array[4] = {
             length * mEnd, (mStart - mEnd) * length,  // 1st segment
@@ -54,7 +55,8 @@ VPath VPathMesure::trim(const VPath &path)
             std::numeric_limits<float>::max(),  // 2nd segment
         };
         VDasher dasher(array, 4);
-        return dasher.dashed(path);
+        dasher.dashed(path, mScratchObject);
+        return mScratchObject;
     }
 }
 
index de3e82405226a381080cbd263ae5db11b24d540f..2cb521b57668b306ad365a9477ef7d9cac4b81e5 100644 (file)
@@ -25,12 +25,14 @@ V_BEGIN_NAMESPACE
 
 class VPathMesure {
 public:
+    void setRange(float start, float end) {mStart = start; mEnd = end;}
     void  setStart(float start){mStart = start;}
     void  setEnd(float end){mEnd = end;}
     VPath trim(const VPath &path);
 private:
     float mStart{0.0f};
     float mEnd{1.0f};
+    VPath mScratchObject;
 };
 
 V_END_NAMESPACE