12class Q_DECL_HIDDEN
TimeLine::Data :
public QSharedData
19 std::chrono::milliseconds elapsed = std::chrono::milliseconds::zero();
20 std::optional<std::chrono::milliseconds> lastTimestamp = std::nullopt;
29 Q_ASSERT(
duration > std::chrono::milliseconds::zero());
43 return static_cast<qreal
>(d->elapsed.count()) / d->duration.count();
49 return d->easingCurve.valueForProgress(
50 d->direction ==
Backward ? 1.0 - t : t);
59 std::chrono::milliseconds delta = std::chrono::milliseconds::zero();
60 if (d->lastTimestamp.has_value()) {
61 delta = timestamp - d->lastTimestamp.value();
64 Q_ASSERT(delta >= std::chrono::milliseconds::zero());
65 d->lastTimestamp = timestamp;
68 if (d->elapsed >= d->duration) {
69 d->elapsed = d->duration;
71 d->lastTimestamp = std::nullopt;
82 Q_ASSERT(
elapsed >= std::chrono::milliseconds::zero());
91 if (d->elapsed >= d->duration) {
92 d->elapsed = d->duration;
94 d->lastTimestamp = std::nullopt;
105 Q_ASSERT(
duration > std::chrono::milliseconds::zero());
109 d->elapsed = std::chrono::milliseconds(qRound(
progress() *
duration.count()));
111 if (d->elapsed == d->duration) {
113 d->lastTimestamp = std::nullopt;
130 if (d->elapsed > std::chrono::milliseconds::zero()
132 d->elapsed = d->duration - d->elapsed;
139 if (d->elapsed >= d->duration) {
141 d->lastTimestamp = std::nullopt;
152 return d->easingCurve;
162 d->easingCurve.setType(
type);
167 return d->elapsed != std::chrono::milliseconds::zero()
168 && d->elapsed != d->duration;
178 d->lastTimestamp = std::nullopt;
179 d->elapsed = std::chrono::milliseconds::zero();
185 return d->sourceRedirectMode;
190 d->sourceRedirectMode = mode;
195 return d->targetRedirectMode;
200 d->targetRedirectMode = mode;
RedirectMode sourceRedirectMode
RedirectMode targetRedirectMode
TimeLine(std::chrono::milliseconds duration=std::chrono::milliseconds(1000), Direction direction=Forward)
void setSourceRedirectMode(RedirectMode mode)
TimeLine & operator=(const TimeLine &other)
void advance(std::chrono::milliseconds timestamp)
void setDuration(std::chrono::milliseconds duration)
void setElapsed(std::chrono::milliseconds elapsed)
void setTargetRedirectMode(RedirectMode mode)
void setDirection(Direction direction)
std::chrono::milliseconds duration
std::chrono::milliseconds elapsed
void setEasingCurve(const QEasingCurve &easingCurve)