35 QAbstractAnimationPrivate();
36 virtual ~QAbstractAnimationPrivate();
38 static QAbstractAnimationPrivate *get(QAbstractAnimation *q)
43 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(QAbstractAnimationPrivate, QAbstractAnimation::State,
44 state, QAbstractAnimation::Stopped)
45 void setState(QAbstractAnimation::State state);
47 void setDirection(QAbstractAnimation::Direction direction)
49 q_func()->setDirection(direction);
51 void emitDirectionChanged() { Q_EMIT q_func()->directionChanged(direction); }
52 Q_OBJECT_COMPAT_PROPERTY_WITH_ARGS(QAbstractAnimationPrivate, QAbstractAnimation::Direction,
53 direction, &QAbstractAnimationPrivate::setDirection,
54 &QAbstractAnimationPrivate::emitDirectionChanged,
55 QAbstractAnimation::Forward)
57 void setCurrentTime(
int msecs) { q_func()->setCurrentTime(msecs); }
58 Q_OBJECT_COMPAT_PROPERTY_WITH_ARGS(QAbstractAnimationPrivate,
int, totalCurrentTime,
59 &QAbstractAnimationPrivate::setCurrentTime, 0)
62 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(QAbstractAnimationPrivate,
int, loopCount, 1)
64 void emitCurrentLoopChanged() { Q_EMIT q_func()->currentLoopChanged(currentLoop); }
65 Q_OBJECT_COMPAT_PROPERTY_WITH_ARGS(QAbstractAnimationPrivate,
int, currentLoop,
nullptr,
66 &QAbstractAnimationPrivate::emitCurrentLoopChanged, 0)
68 bool deleteWhenStopped =
false;
69 bool hasRegisteredTimer =
false;
73 QAnimationGroup *group =
nullptr;
76 Q_DECLARE_PUBLIC(QAbstractAnimation)
134 ~QUnifiedTimer() override;
136 static QUnifiedTimer *instance();
137 static QUnifiedTimer *instance(
bool create);
139 static void startAnimationTimer(QAbstractAnimationTimer *timer);
140 static void stopAnimationTimer(QAbstractAnimationTimer *timer);
142 static void pauseAnimationTimer(QAbstractAnimationTimer *timer,
int duration);
143 static void resumeAnimationTimer(QAbstractAnimationTimer *timer);
146 void setTimingInterval(
int interval);
149
150
151
152 void setConsistentTiming(
bool consistent) { consistentTiming = consistent; }
156 qreal getSpeedModifier()
const {
return speedModifier; }
157 void setSpeedModifier(qreal speed) { speedModifier = speed; }
159 void installAnimationDriver(QAnimationDriver *driver);
160 void uninstallAnimationDriver(QAnimationDriver *driver);
161 bool canUninstallAnimationDriver(QAnimationDriver *driver);
164 void maybeUpdateAnimationsToCurrentTime();
165 void updateAnimationTimers();
168 qsizetype runningAnimationCount()
const;
169 void registerProfilerCallback(
void (*cb)(qint64));
171 void startAnimationDriver();
172 void stopAnimationDriver();
173 qint64 elapsed()
const;
176 void timerEvent(QTimerEvent *) override;
183 friend class QDefaultAnimationDriver;
184 friend class QAnimationDriver;
186 QAnimationDriver *driver;
187 QDefaultAnimationDriver defaultDriver;
189 QBasicTimer pauseTimer;
195 int currentAnimationIdx;
198 bool consistentTiming;
199 bool startTimersPending;
200 bool stopTimerPending;
201 bool allowNegativeDelta;
207 QList<QAbstractAnimationTimer*> animationTimers, animationTimersToStart;
208 QList<QAbstractAnimationTimer*> pausedAnimationTimers;
211 int closestPausedAnimationTimerTimeToFinish();
213 void (*profilerCallback)(qint64);
215 qint64 driverStartTime;
216 qint64 temporalDrift;
235
236
237
241
242
243
258 int currentAnimationIdx;
260 bool startAnimationPending;
261 bool stopTimerPending;
263 QList<QAbstractAnimation*> animations, animationsToStart;
266 int runningLeafAnimations;
267 QList<QAbstractAnimation*> runningPauseAnimations;
269 void registerRunningAnimation(QAbstractAnimation *animation);
270 void unregisterRunningAnimation(QAbstractAnimation *animation);
272 int closestPauseAnimationTimeToFinish();