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