Warning, file /include/QtCore/qvariantanimation.h was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005 #ifndef QVARIANTANIMATION_H
0006 #define QVARIANTANIMATION_H
0007
0008 #include <QtCore/qabstractanimation.h>
0009 #include <QtCore/qeasingcurve.h>
0010 #include <QtCore/qlist.h>
0011 #include <QtCore/qpair.h>
0012 #include <QtCore/qvariant.h>
0013
0014 QT_REQUIRE_CONFIG(animation);
0015
0016 QT_BEGIN_NAMESPACE
0017
0018 class QVariantAnimationPrivate;
0019 class Q_CORE_EXPORT QVariantAnimation : public QAbstractAnimation
0020 {
0021 Q_OBJECT
0022 Q_PROPERTY(QVariant startValue READ startValue WRITE setStartValue)
0023 Q_PROPERTY(QVariant endValue READ endValue WRITE setEndValue)
0024 Q_PROPERTY(QVariant currentValue READ currentValue NOTIFY valueChanged)
0025 Q_PROPERTY(int duration READ duration WRITE setDuration BINDABLE bindableDuration)
0026 Q_PROPERTY(QEasingCurve easingCurve READ easingCurve WRITE setEasingCurve
0027 BINDABLE bindableEasingCurve)
0028
0029 public:
0030 using KeyValue = std::pair<qreal, QVariant>;
0031 typedef QList<KeyValue> KeyValues;
0032
0033 QVariantAnimation(QObject *parent = nullptr);
0034 ~QVariantAnimation();
0035
0036 QVariant startValue() const;
0037 void setStartValue(const QVariant &value);
0038
0039 QVariant endValue() const;
0040 void setEndValue(const QVariant &value);
0041
0042 QVariant keyValueAt(qreal step) const;
0043 void setKeyValueAt(qreal step, const QVariant &value);
0044
0045 KeyValues keyValues() const;
0046 void setKeyValues(const KeyValues &values);
0047
0048 QVariant currentValue() const;
0049
0050 int duration() const override;
0051 void setDuration(int msecs);
0052 QBindable<int> bindableDuration();
0053
0054 QEasingCurve easingCurve() const;
0055 void setEasingCurve(const QEasingCurve &easing);
0056 QBindable<QEasingCurve> bindableEasingCurve();
0057
0058 typedef QVariant (*Interpolator)(const void *from, const void *to, qreal progress);
0059
0060 Q_SIGNALS:
0061 void valueChanged(const QVariant &value);
0062
0063 protected:
0064 QVariantAnimation(QVariantAnimationPrivate &dd, QObject *parent = nullptr);
0065 bool event(QEvent *event) override;
0066
0067 void updateCurrentTime(int) override;
0068 void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) override;
0069
0070 virtual void updateCurrentValue(const QVariant &value);
0071 virtual QVariant interpolated(const QVariant &from, const QVariant &to, qreal progress) const;
0072
0073 private:
0074 template <typename T> friend void qRegisterAnimationInterpolator(QVariant (*func)(const T &, const T &, qreal));
0075 static void registerInterpolator(Interpolator func, int interpolationType);
0076
0077 Q_DISABLE_COPY(QVariantAnimation)
0078 Q_DECLARE_PRIVATE(QVariantAnimation)
0079 };
0080
0081 template <typename T>
0082 void qRegisterAnimationInterpolator(QVariant (*func)(const T &from, const T &to, qreal progress)) {
0083 QVariantAnimation::registerInterpolator(reinterpret_cast<QVariantAnimation::Interpolator>(reinterpret_cast<void(*)()>(func)), qMetaTypeId<T>());
0084 }
0085
0086 QT_END_NAMESPACE
0087
0088 #endif