Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qquickanimation_p_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QQUICKANIMATION2_P_H
5#define QQUICKANIMATION2_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include "qquickanimation_p.h"
19
20#include <private/qqmlnullablevalue_p.h>
21
22#include <qqml.h>
23#include <qqmlcontext.h>
24
25#include <private/qvariantanimation_p.h>
26#include "private/qpauseanimationjob_p.h"
27#include <QDebug>
28
29#include <private/qobject_p.h>
30#include "private/qanimationgroupjob_p.h"
31#include <QDebug>
32
33#include <private/qobject_p.h>
34#include <QtCore/qpointer.h>
35
37
38//interface for classes that provide animation actions for QActionAnimation
40{
41public:
43 virtual void doAction() = 0;
44 virtual void debugAction(QDebug, int) const {}
45};
46
47//templated animation action
48//allows us to specify an action that calls a function of a class.
49//(so that class doesn't have to inherit QQuickAbstractAnimationAction)
50template<class T, void (T::*method)(), void (T::*debugMethod)(QDebug, int) const>
52{
53public:
54 QAnimationActionProxy(T *instance) : m_instance(instance) {}
55 void doAction() override { (m_instance->*method)(); }
56 void debugAction(QDebug d, int indentLevel) const override { (m_instance->*debugMethod)(d, indentLevel); }
57private:
58 T *m_instance;
59};
60
61//performs an action of type QAbstractAnimationAction
63{
64 Q_DISABLE_COPY(QActionAnimation)
65public:
67
69 ~QActionAnimation() override;
70
71 int duration() const override;
72 void setAnimAction(QAbstractAnimationAction *action);
73
74protected:
75 void updateCurrentTime(int) override;
76 void updateState(State newState, State oldState) override;
77 void debugAnimation(QDebug d) const override;
78
79private:
80 QAbstractAnimationAction *animAction;
81};
82
84{
85public:
87 virtual void setValue(qreal value) = 0;
88 virtual void debugUpdater(QDebug, int) const {}
89};
90
91//animates QQuickBulkValueUpdater (assumes start and end values will be reals or compatible)
93{
94 Q_DISABLE_COPY(QQuickBulkValueAnimator)
95public:
97 ~QQuickBulkValueAnimator() override;
98
99 void setAnimValue(QQuickBulkValueUpdater *value);
100 QQuickBulkValueUpdater *getAnimValue() const { return animValue; }
101
102 void setFromIsSourcedValue(bool *value) { fromIsSourced = value; }
103
104 int duration() const override { return m_duration; }
105 void setDuration(int msecs) { m_duration = msecs; }
106
107 QEasingCurve easingCurve() const { return easing; }
108 void setEasingCurve(const QEasingCurve &curve) { easing = curve; }
109
110protected:
111 void updateCurrentTime(int currentTime) override;
112 void topLevelAnimationLoopChanged() override;
113 void debugAnimation(QDebug d) const override;
114
115private:
116 QQuickBulkValueUpdater *animValue;
117 bool *fromIsSourced;
118 int m_duration;
120};
121
122//an animation that just gives a tick
123template<class T, void (T::*method)(int)>
125{
126 Q_DISABLE_COPY(QTickAnimationProxy)
127public:
128 QTickAnimationProxy(T *instance) : QAbstractAnimationJob(), m_instance(instance) {}
129 int duration() const override { return -1; }
130protected:
131 void updateCurrentTime(int msec) override { (m_instance->*method)(msec); }
132
133private:
134 T *m_instance;
135};
136
138{
139 Q_DECLARE_PUBLIC(QQuickAbstractAnimation)
140public:
142 : running(false), paused(false), alwaysRunToEnd(false),
143 /*connectedTimeLine(false), */componentComplete(true),
144 avoidPropertyValueSourceStart(false), disableUserControl(false),
145 needsDeferredSetRunning(false), loopCount(1), group(nullptr), animationInstance(nullptr) {}
146
147 bool running:1;
148 bool paused:1;
150 //bool connectedTimeLine:1;
155
157
158 void commence();
159 void animationFinished(QAbstractAnimationJob *) override;
160
162
165
166 static QQmlProperty createProperty(QObject *obj, const QString &str, QObject *infoObj, QString *errorMessage = nullptr);
167 void animationGroupDirty();
168};
169
179
199
201{
202 Q_DECLARE_PUBLIC(QQuickPropertyAction)
203public:
206
210 QList<QObject *> targets;
211 QList<QObject *> exclude;
212
213 QQmlNullableValue<QVariant> value;
214};
215
217{
218 Q_DECLARE_PUBLIC(QQuickAnimationGroup)
219public:
222
223 static void append_animation(QQmlListProperty<QQuickAbstractAnimation> *list, QQuickAbstractAnimation *role);
224 static QQuickAbstractAnimation *at_animation(QQmlListProperty<QQuickAbstractAnimation> *list, qsizetype index);
225 static qsizetype count_animation(QQmlListProperty<QQuickAbstractAnimation> *list);
226 static void clear_animation(QQmlListProperty<QQuickAbstractAnimation> *list);
227 static void replace_animation(QQmlListProperty<QQuickAbstractAnimation> *list, qsizetype index,
229 static void removeLast_animation(QQmlListProperty<QQuickAbstractAnimation> *list);
230 QList<QQuickAbstractAnimation *> animations;
231
235};
236
238{
239 Q_DECLARE_PUBLIC(QQuickPropertyAnimation)
240public:
242 : QQuickAbstractAnimationPrivate(), target(nullptr), fromIsDefined(false), toIsDefined(false), ourPropertiesDirty(false),
243 defaultToInterpolatorType(0), interpolatorType(0), interpolator(nullptr), duration(250), actions(nullptr) {}
244
245 void animationCurrentLoopChanged(QAbstractAnimationJob *job) override;
246
249
253 QList<QPointer<QObject>> targets;
254 QList<QObject *> exclude;
256
265
266 // for animations that don't use the QQuickBulkValueAnimator
268
269 static QVariant interpolateVariant(const QVariant &from, const QVariant &to, qreal progress);
270 static void convertVariant(QVariant &variant, QMetaType type);
271};
272
281
283{
284public:
285 QQuickAnimationPropertyUpdater() : interpolatorType(0), interpolator(nullptr), prevInterpolatorType(0), reverse(false), fromIsSourced(false), fromIsDefined(false), wasDeleted(nullptr) {}
287
288 void setValue(qreal v) override;
289
290 void debugUpdater(QDebug d, int indentLevel) const override;
291
293 int interpolatorType; //for Number/ColorAnimation
295 int prevInterpolatorType; //for generic
300};
301
303
304#endif // QQUICKANIMATION2_P_H
virtual void debugAction(QDebug, int) const
virtual void doAction()=0
virtual void debugAnimation(QDebug d) const
virtual void updateState(QAbstractAnimationJob::State newState, QAbstractAnimationJob::State oldState)
virtual void topLevelAnimationLoopChanged()
virtual void updateCurrentTime(int)
void debugAction(QDebug d, int indentLevel) const override
\inmodule QtCore
\inmodule QtCore
\inmodule QtCore
Definition qmetatype.h:341
\inmodule QtCore
Definition qobject.h:103
The QQmlProperty class abstracts accessing properties on objects created from QML.
The QQmlScriptString class encapsulates a script and its context.
QAbstractAnimationJob * animationInstance
static qsizetype count_animation(QQmlListProperty< QQuickAbstractAnimation > *list)
QList< QQuickAbstractAnimation * > animations
void animationCurrentLoopChanged(QAbstractAnimationJob *job) override
static void replace_animation(QQmlListProperty< QQuickAbstractAnimation > *list, qsizetype index, QQuickAbstractAnimation *role)
static void removeLast_animation(QQmlListProperty< QQuickAbstractAnimation > *list)
static QQuickAbstractAnimation * at_animation(QQmlListProperty< QQuickAbstractAnimation > *list, qsizetype index)
static void clear_animation(QQmlListProperty< QQuickAbstractAnimation > *list)
static void append_animation(QQmlListProperty< QQuickAbstractAnimation > *list, QQuickAbstractAnimation *role)
QVariantAnimation::Interpolator interpolator
QQuickBulkValueUpdater * getAnimValue() const
int duration() const override
QEasingCurve easingCurve() const
void setEasingCurve(const QEasingCurve &curve)
void setFromIsSourcedValue(bool *value)
virtual void debugUpdater(QDebug, int) const
virtual void setValue(qreal value)=0
QQmlNullableValue< QVariant > value
static QVariant interpolateVariant(const QVariant &from, const QVariant &to, qreal progress)
QList< QPointer< QObject > > targets
QVariantAnimation::Interpolator interpolator
QQuickRotationAnimation::RotationDirection direction
QAbstractAnimationAction * createAction()
QAnimationActionProxy< QQuickScriptActionPrivate, &QQuickScriptActionPrivate::execute, &QQuickScriptActionPrivate::debugAction > Proxy
void debugAction(QDebug d, int indentLevel) const
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
void updateCurrentTime(int msec) override
int duration() const override
QVariant(* Interpolator)(const void *from, const void *to, qreal progress)
\inmodule QtCore
Definition qvariant.h:65
QString str
[2]
void newState(QList< State > &states, const char *token, const char *lexem, bool pre)
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char * method
static Q_CONSTINIT QBasicAtomicInt running
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLsizei const GLfloat * v
[13]
GLuint index
[2]
GLenum type
GLboolean GLuint group
GLenum target
GLhandleARB obj
[2]
#define Q_AUTOTEST_EXPORT
#define Q_QUICK_AUTOTEST_EXPORT
ptrdiff_t qsizetype
Definition qtypes.h:165
double qreal
Definition qtypes.h:187
static QString errorMessage(QUrlPrivate::ErrorCode errorCode, const QString &errorSource, qsizetype errorPosition)
Definition qurl.cpp:3517
static double currentTime()
QList< int > list
[14]
settings setValue("DataPump/bgcolor", color)
QObject::connect nullptr
QVariant variant
[1]
QEasingCurve easing(QEasingCurve::InOutQuad)
[typedef]