From 857fde3fa7be1f6bdc391c0dd986233f458d3d16 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Wed, 22 Aug 2018 14:25:56 +0900 Subject: [PATCH] lottieplayer: polishing getFrameDuration(), getFrameRate() Change-Id: I4344a6689c7ee8890e33978bfc5ca6a2c401da36 --- src/lottie/lottiemodel.h | 6 +++--- src/lottie/lottieplayer.cpp | 28 ++++++++++++++++++++++------ 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/lottie/lottiemodel.h b/src/lottie/lottiemodel.h index 2c484b1..bc1d373 100644 --- a/src/lottie/lottiemodel.h +++ b/src/lottie/lottiemodel.h @@ -355,11 +355,11 @@ class LOTCompositionData : public LOTData { public: LOTCompositionData():LOTData(LOTData::Type::Composition){} - long frameDuration()const{return mEndFrame - mStartFrame -1;} - long frameRate()const{return mFrameRate;} + long frameDuration() const {return mEndFrame - mStartFrame -1;} + float frameRate() const {return mFrameRate;} long startFrame() const {return mStartFrame;} long endFrame() const {return mEndFrame;} - VSize size() const { return mSize;} + VSize size() const {return mSize;} void processRepeaterObjects(); void accept(LOTDataVisitor *visitor) override {visitor->visit(this); mRootLayer->accept(visitor);} diff --git a/src/lottie/lottieplayer.cpp b/src/lottie/lottieplayer.cpp index c1215ab..733d464 100644 --- a/src/lottie/lottieplayer.cpp +++ b/src/lottie/lottieplayer.cpp @@ -19,8 +19,8 @@ public: VSize size() const; float playTime() const; float pos(); - float getFrameRate() const { return mFrameRate; } - long getTotalFrame() const { return mTotalFrame; } + float getFrameRate() const; + long getTotalFrame() const; const std::vector &renderList(float pos); bool render(float pos, const LOTBuffer &buffer, bool forceRender); @@ -31,10 +31,28 @@ private: VSize mSize; std::atomic mRenderInProgress; float mPos = 0.0; - float mFrameRate; - long mTotalFrame; }; +float LOTPlayerPrivate::getFrameRate() const +{ + if (!mModel) { + vWarning << "Model Data is not existed yet, please setFilePath() first."; + return 0.0f; + } + + return mModel->frameRate(); +} + +long LOTPlayerPrivate::getTotalFrame() const +{ + if (!mModel) { + vWarning << "Model Data is not existed yet, please setFilePath() first."; + return 0.0f; + } + + return mModel->frameDuration(); +} + void LOTPlayerPrivate::setSize(const VSize &sz) { mSize = sz; @@ -128,8 +146,6 @@ bool LOTPlayerPrivate::setFilePath(std::string path) if (loader.load(path)) { mModel = loader.model(); mCompItem = std::make_unique(mModel.get()); - mTotalFrame = mModel->frameDuration(); - mFrameRate = mModel->frameRate(); return true; } return false; -- 2.34.1