- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files
- Directories
- Examples

- File List
- File Members

# qeasingcurve.h

Go to the documentation of this file.

    00001 /****************************************************************************
    00002 **
    00003 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
    00004 ** All rights reserved.
    00005 ** Contact: Nokia Corporation (qt-info@nokia.com)
    00006 **
    00007 ** This file is part of the QtCore module of the Qt Toolkit.
    00008 **
    00009 ** $QT_BEGIN_LICENSE:LGPL$
    00010 ** Commercial Usage
    00011 ** Licensees holding valid Qt Commercial licenses may use this file in
    00012 ** accordance with the Qt Commercial License Agreement provided with the
    00013 ** Software or, alternatively, in accordance with the terms contained in
    00014 ** a written agreement between you and Nokia.
    00015 **
    00016 ** GNU Lesser General Public License Usage
    00017 ** Alternatively, this file may be used under the terms of the GNU Lesser
    00018 ** General Public License version 2.1 as published by the Free Software
    00019 ** Foundation and appearing in the file LICENSE.LGPL included in the
    00020 ** packaging of this file.  Please review the following information to
    00021 ** ensure the GNU Lesser General Public License version 2.1 requirements
    00022 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    00023 **
    00024 ** In addition, as a special exception, Nokia gives you certain additional
    00025 ** rights.  These rights are described in the Nokia Qt LGPL Exception
    00026 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this module.
    00027 **
    00028 ** GNU General Public License Usage
    00029 ** Alternatively, this file may be used under the terms of the GNU
    00030 ** General Public License version 3.0 as published by the Free Software
    00031 ** Foundation and appearing in the file LICENSE.GPL included in the
    00032 ** packaging of this file.  Please review the following information to
    00033 ** ensure the GNU General Public License version 3.0 requirements will be
    00034 ** met: http://www.gnu.org/copyleft/gpl.html.
    00035 **
    00036 ** If you have questions regarding the use of this file, please contact
    00037 ** Nokia at qt-info@nokia.com.
    00038 ** $QT_END_LICENSE$
    00039 **
    00040 ****************************************************************************/
    00041
    00042 #ifndef QEASINGCURVE_H
    00043 #define QEASINGCURVE_H
    00044
    00045 #include <QtCore/qglobal.h>
    00046 #include <QtCore/qobjectdefs.h>
    00047
    00048 QT_BEGIN_HEADER
    00049
    00050 QT_BEGIN_NAMESPACE
    00051
    00052 QT_MODULE(Core)
    00053
    00054 class QEasingCurvePrivate;
    00055 class Q_CORE_EXPORT QEasingCurve
    00056 {
    00057     Q_GADGET
    00058     Q_ENUMS(Type)
    00059 public:
    00060     enum Type {
    00061         Linear,
    00062         InQuad, OutQuad, InOutQuad, OutInQuad,
    00063         InCubic, OutCubic, InOutCubic, OutInCubic,
    00064         InQuart, OutQuart, InOutQuart, OutInQuart,
    00065         InQuint, OutQuint, InOutQuint, OutInQuint,
    00066         InSine, OutSine, InOutSine, OutInSine,
    00067         InExpo, OutExpo, InOutExpo, OutInExpo,
    00068         InCirc, OutCirc, InOutCirc, OutInCirc,
    00069         InElastic, OutElastic, InOutElastic, OutInElastic,
    00070         InBack, OutBack, InOutBack, OutInBack,
    00071         InBounce, OutBounce, InOutBounce, OutInBounce,
    00072         InCurve, OutCurve, SineCurve, CosineCurve,
    00073         Custom, NCurveTypes
    00074     };
    00075
    00076     QEasingCurve(Type type = Linear);
    00077     QEasingCurve(const QEasingCurve &other);
    00078     ~QEasingCurve();
    00079
    00080     QEasingCurve &operator=(const QEasingCurve &other);
    00081     bool operator==(const QEasingCurve &other) const;
    00082     inline bool operator!=(const QEasingCurve &other) const
    00083     { return !(this->operator==(other)); }
    00084
    00085     qreal amplitude() const;
    00086     void setAmplitude(qreal amplitude);
    00087
    00088     qreal period() const;
    00089     void setPeriod(qreal period);
    00090
    00091     qreal overshoot() const;
    00092     void setOvershoot(qreal overshoot);
    00093
    00094     Type type() const;
    00095     void setType(Type type);
    00096     typedef qreal (*EasingFunction)(qreal progress);
    00097     void setCustomType(EasingFunction func);
    00098     EasingFunction customType() const;
    00099
    00100     qreal valueForProgress(qreal progress) const;
    00101 private:
    00102     QEasingCurvePrivate *d_ptr;
    00103 #ifndef QT_NO_DEBUG_STREAM
    00104     friend Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QEasingCurve &item);
    00105 #endif
    00106 #ifndef QT_NO_DATASTREAM
    00107     friend Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QEasingCurve&);
    00108     friend Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QEasingCurve &);
    00109 #endif
    00110 };
    00111
    00112 #ifndef QT_NO_DEBUG_STREAM
    00113 Q_CORE_EXPORT QDebug operator<<(QDebug debug, const QEasingCurve &item);
    00114 #endif
    00115
    00116 #ifndef QT_NO_DATASTREAM
    00117 Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QEasingCurve&);
    00118 Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QEasingCurve &);
    00119 #endif
    00120
    00121 QT_END_NAMESPACE
    00122
    00123 QT_END_HEADER
    00124
    00125 #endif