Back to home page

EIC code displayed by LXR

 
 

    


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 // Copyright (C) 2016 The Qt Company Ltd.
0002 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
0003 // Qt-Security score:significant reason:default
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 //QVARIANTANIMATION_H