Revision control

++ // Copyright (C) 2016 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
++ // Qt-Security score:significant reason:default
++
++ #ifndef QEASINGCURVE_H
++ #define QEASINGCURVE_H
++
++ #include <QtCore/qglobal.h>
++
++ QT_REQUIRE_CONFIG(easingcurve);
++
++ #include <QtCore/qcompare.h>
++ #include <QtCore/qlist.h>
++ #include <QtCore/qobjectdefs.h>
++
++ QT_BEGIN_NAMESPACE
++
++ class QEasingCurvePrivate;
++ class QPointF;
++ class Q_CORE_EXPORT QEasingCurve
++ {
++ Q_GADGET
++ public:
++ enum Type {
++ Linear,
++ InQuad, OutQuad, InOutQuad, OutInQuad,
++ InCubic, OutCubic, InOutCubic, OutInCubic,
++ InQuart, OutQuart, InOutQuart, OutInQuart,
++ InQuint, OutQuint, InOutQuint, OutInQuint,
++ InSine, OutSine, InOutSine, OutInSine,
++ InExpo, OutExpo, InOutExpo, OutInExpo,
++ InCirc, OutCirc, InOutCirc, OutInCirc,
++ InElastic, OutElastic, InOutElastic, OutInElastic,
++ InBack, OutBack, InOutBack, OutInBack,
++ InBounce, OutBounce, InOutBounce, OutInBounce,
++ InCurve, OutCurve, SineCurve, CosineCurve,
++ BezierSpline, TCBSpline, Custom, NCurveTypes
++ };
++ Q_ENUM(Type)
++
++ QEasingCurve(Type type = Linear);
++ QEasingCurve(const QEasingCurve &other);
++ ~QEasingCurve();
++
++ QEasingCurve &operator=(const QEasingCurve &other)
++ { if ( this != &other ) { QEasingCurve copy(other); swap(copy); } return *this; }
++ QEasingCurve(QEasingCurve &&other) noexcept : d_ptr(other.d_ptr) { other.d_ptr = nullptr; }
++ QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QEasingCurve)
++
++ void swap(QEasingCurve &other) noexcept { qt_ptr_swap(d_ptr, other.d_ptr); }
++
++ #if QT_CORE_REMOVED_SINCE(6, 8)
++ bool operator==(const QEasingCurve &other) const;
++ inline bool operator!=(const QEasingCurve &other) const
++ { return !(this->operator==(other)); }
++ #endif
++
++ qreal amplitude() const;
++ void setAmplitude(qreal amplitude);
++
++ qreal period() const;
++ void setPeriod(qreal period);
++
++ qreal overshoot() const;
++ void setOvershoot(qreal overshoot);
++
++ void addCubicBezierSegment(const QPointF &c1, const QPointF &c2, const QPointF &endPoint);
++ void addTCBSegment(const QPointF &nextPoint, qreal t, qreal c, qreal b);
++ QList<QPointF> toCubicSpline() const;
++
++ Type type() const;
++ void setType(Type type);
++ typedef qreal (*EasingFunction)(qreal progress);
++ void setCustomType(EasingFunction func);
++ EasingFunction customType() const;
++
++ qreal valueForProgress(qreal progress) const;
++
++ static QEasingCurve fromCubicBezier(QPointF c1, QPointF c2);
++
++ private:
++ QEasingCurvePrivate *d_ptr;
++ #ifndef QT_NO_DEBUG_STREAM
++ friend Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QEasingCurve &item);
++ #endif
++ #ifndef QT_NO_DATASTREAM
++ friend Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QEasingCurve &);
++ friend Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QEasingCurve &);
++ #endif
++ friend Q_CORE_EXPORT bool
++ comparesEqual(const QEasingCurve &lhs, const QEasingCurve &rhs);
++ #if !QT_CORE_REMOVED_SINCE(6, 8)
++ Q_DECLARE_EQUALITY_COMPARABLE_NON_NOEXCEPT(QEasingCurve)
++ #endif
++ };
++ Q_DECLARE_SHARED(QEasingCurve)
++
++ #ifndef QT_NO_DEBUG_STREAM
++ Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QEasingCurve &item);
++ #endif
++
++ #ifndef QT_NO_DATASTREAM
++ Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QEasingCurve &);
++ Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QEasingCurve &);
++ #endif
++
++ QT_END_NAMESPACE
++
++ #endif