size_t AnimationImpl::frameAtPos(double pos) const
{
- if (pos < 0) pos = 0;
- if (pos > 1) pos = 1;
-
- if (mModel->isStatic()) return 0;
-
- return mModel->startFrame() + pos * mModel->frameDuration();
+ return mModel->frameAtPos(pos);
}
VSize AnimationImpl::size() const
double AnimationImpl::duration() const
{
- if (mModel->isStatic()) return 0;
- return double(mModel->frameDuration()) / double(mModel->frameRate());
+ return mModel->duration();
}
bool AnimationImpl::update(size_t frameNo, const VSize &size)
{
public:
LOTCompositionData():LOTData(LOTData::Type::Composition){}
+ double duration() const {
+ return isStatic() ? startFrame() :
+ frameDuration() / frameRate(); // in second
+ }
+ size_t frameAtPos(double pos) const {
+ if (pos < 0) pos = 0;
+ if (pos > 1) pos = 1;
+ return isStatic() ? startFrame() :
+ startFrame() + pos * frameDuration();
+ }
long frameDuration() const {return mEndFrame - mStartFrame -1;}
float frameRate() const {return mFrameRate;}
long startFrame() const {return mStartFrame;}
class LOTModel
{
public:
- bool isStatic() const{return mRoot->isStatic();}
- size_t frameDuration() {return mRoot->frameDuration();}
- size_t frameRate() {return mRoot->frameRate();}
- size_t startFrame() {return mRoot->startFrame();}
+ bool isStatic() const {return mRoot->isStatic();}
+ double duration() const {return mRoot->duration();}
+ size_t frameDuration() const {return mRoot->frameDuration();}
+ size_t frameRate() const {return mRoot->frameRate();}
+ size_t startFrame() const {return mRoot->startFrame();}
+ size_t frameAtPos(double pos) const {return mRoot->frameAtPos(pos);}
public:
std::shared_ptr<LOTCompositionData> mRoot;
};