player: update seek behavior. 31/184331/6
authorHermet Park <hermetpark@gmail.com>
Tue, 17 Jul 2018 08:20:29 +0000 (17:20 +0900)
committerSubhransu Mohanty <sub.mohanty@samsung.com>
Tue, 17 Jul 2018 10:19:21 +0000 (10:19 +0000)
1. set default position 0
2. renamed to setPos()
3. add getter()

Change-Id: Ibf4038f666e686ff00d17066c012e7fb2d8e2709

example/lottieview.cpp
inc/lottieplayer.h
src/lottie/lottieplayer.cpp

index da757d6..075ff3b 100644 (file)
@@ -146,7 +146,7 @@ void LottieView::seek(float pos)
             evas_object_image_data_update_add(mImage, 0 , 0, buf.width, buf.height);
         }
     } else {
-        mPlayer->seek(pos);
+        mPlayer->setPos(pos);
         const std::vector<LOTNode *> &renderList = mPlayer->renderList();
         update(renderList);
     }
index c227799..8644f1d 100644 (file)
@@ -48,7 +48,8 @@ public:
 
     float playTime() const;
 
-    void seek(float pos);
+    void setPos(float pos);
+    float pos();
 
     const std::vector<LOTNode *>& renderList() const;
 
index bda3213..314a8f2 100644 (file)
@@ -15,14 +15,18 @@ public:
    void setSize(const VSize &sz);
    void size(int &w, int &h) const;
    float playTime() const;
-   bool seek(float pos);
+   bool  setPos(float pos);
+   float pos();
    const std::vector<LOTNode *>& renderList()const;
    bool render(float pos, const LOTBuffer &buffer);
 public:
    std::string                     mFilePath;
    std::shared_ptr<LOTModel>       mModel;
    std::unique_ptr<LOTCompItem>    mCompItem;
-   VSize                          mSize;
+   VSize                           mSize;
+
+private:
+   float                           mPos;
 };
 
 void LOTPlayerPrivate::setSize(const VSize &sz)
@@ -63,20 +67,28 @@ float LOTPlayerPrivate::playTime() const
    return float(mModel->frameDuration()) / float(mModel->frameRate());
 }
 
-bool LOTPlayerPrivate::seek(float pos)
+bool LOTPlayerPrivate::setPos(float pos)
 {
    if (!mModel || !mCompItem) return false;
 
    if (pos > 1.0) pos = 1.0;
    if (pos < 0) pos = 0;
    if (mModel->isStatic()) pos = 0;
+
+   if (vCompare(pos, mPos)) return true;
+
    int frameNumber = mModel->startFrame() + pos * mModel->frameDuration();
    return mCompItem->update(frameNumber);
 }
 
+float LOTPlayerPrivate::pos()
+{
+   return mPos;
+}
+
 bool LOTPlayerPrivate::render(float pos, const LOTBuffer &buffer)
 {
-    if (seek(pos)) {
+    if (setPos(pos)) {
         if (mCompItem->render(buffer))
             return true;
         else
@@ -86,7 +98,7 @@ bool LOTPlayerPrivate::render(float pos, const LOTBuffer &buffer)
     }
 }
 
-LOTPlayerPrivate::LOTPlayerPrivate()
+LOTPlayerPrivate::LOTPlayerPrivate():mPos(-1)
 {
 
 }
@@ -103,6 +115,7 @@ LOTPlayerPrivate::setFilePath(std::string path)
    if (loader.load(path)) {
       mModel = loader.model();
       mCompItem =  std::unique_ptr<LOTCompItem>(new LOTCompItem(mModel.get()));
+      setPos(0);
       return true;
    }
    return false;
@@ -145,9 +158,14 @@ float LOTPlayer::playTime() const
    return d->playTime();
 }
 
-void LOTPlayer::seek(float pos)
+void LOTPlayer::setPos(float pos)
+{
+   d->setPos(pos);
+}
+
+float LOTPlayer::pos()
 {
-   d->seek(pos);
+   return d->pos();
 }
 
 const std::vector<LOTNode *>& LOTPlayer::renderList()const