18 #ifndef LIBS_MVA_GUI_INCLUDE_ANIMATIONS_ABSTRACT_ANIMATION_H_
19 #define LIBS_MVA_GUI_INCLUDE_ANIMATIONS_ABSTRACT_ANIMATION_H_
24 #include "abstractitem.h"
29 Q_PROPERTY(qreal start_time READ startTime WRITE setStartTime NOTIFY startTimeChanged FINAL)
30 Q_PROPERTY(qreal duration READ duration WRITE setDuration NOTIFY durationChanged FINAL)
33 enum class State { NOT_STARTED, RUNNING, DONE };
37 qreal startTime()
const {
return m_start_time; }
38 qreal duration()
const {
return m_duration; }
40 void setStartTime(
const qreal start_time);
41 void setDuration(
const qreal duration);
43 State state(
const qreal time)
const;
45 void setFrameTime(
const qreal frame_time);
47 void setProperties(
const QVariantMap& properties);
49 virtual QJsonObject toJson()
const;
50 virtual void applyAnimation(
AbstractItem* item,
const qreal time)
const = 0;
52 inline bool operator<(
const AbstractAnimation& rhs) {
return startTime() < rhs.startTime(); }
55 void startTimeChanged(
const qreal new_start_time);
56 void durationChanged(
const qreal new_duration);
59 bool isStarted(
const qreal time)
const;
60 bool isDone(
const qreal time)
const;
62 qreal m_start_time = 0.0;
63 qreal m_duration = 1.0;
65 qreal m_frame_time = 1.0 / 24.0;
Definition: abstract_animation.h:26
An abstract class representing a visible item like a circle or a rectangle.
Definition: abstractitem.h:56