From: Hermet Park Date: Tue, 17 Jul 2018 08:20:29 +0000 (+0900) Subject: player: update seek behavior. X-Git-Tag: submit/tizen/20180917.042405~235 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5c0a4f4414e83598decbc5fa3424712d191a9cb1;p=platform%2Fcore%2Fuifw%2Flottie-player.git player: update seek behavior. 1. set default position 0 2. renamed to setPos() 3. add getter() Change-Id: Ibf4038f666e686ff00d17066c012e7fb2d8e2709 --- diff --git a/example/lottieview.cpp b/example/lottieview.cpp index da757d6..075ff3b 100644 --- a/example/lottieview.cpp +++ b/example/lottieview.cpp @@ -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 &renderList = mPlayer->renderList(); update(renderList); } diff --git a/inc/lottieplayer.h b/inc/lottieplayer.h index c227799..8644f1d 100644 --- a/inc/lottieplayer.h +++ b/inc/lottieplayer.h @@ -48,7 +48,8 @@ public: float playTime() const; - void seek(float pos); + void setPos(float pos); + float pos(); const std::vector& renderList() const; diff --git a/src/lottie/lottieplayer.cpp b/src/lottie/lottieplayer.cpp index bda3213..314a8f2 100644 --- a/src/lottie/lottieplayer.cpp +++ b/src/lottie/lottieplayer.cpp @@ -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& renderList()const; bool render(float pos, const LOTBuffer &buffer); public: std::string mFilePath; std::shared_ptr mModel; std::unique_ptr 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(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& LOTPlayer::renderList()const