src/corelib/animation/qvariantanimation.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
--- a/src/corelib/animation/qvariantanimation.cpp	Tue Jan 26 12:42:25 2010 +0200
+++ b/src/corelib/animation/qvariantanimation.cpp	Tue Feb 02 00:43:10 2010 +0200
@@ -104,15 +104,32 @@
         \o \l{QMetaType::}{QLine}
         \o \l{QMetaType::}{QLineF}
         \o \l{QMetaType::}{QPoint}
+        \o \l{QMetaType::}{QPointF}
         \o \l{QMetaType::}{QSize}
         \o \l{QMetaType::}{QSizeF}
         \o \l{QMetaType::}{QRect}
         \o \l{QMetaType::}{QRectF}
+        \o \l{QMetaType::}{QColor}
     \endlist
 
     If you need to interpolate other variant types, including custom
     types, you have to implement interpolation for these yourself.
-    You do this by reimplementing interpolated(), which returns
+    To do this, you can register an interpolator function for a given
+    type. This function takes 3 parameters: the start value, the end value
+    and the current progress.
+
+    Example:
+    \code
+        QVariant myColorInterpolator(const QColor &start, const QColor &end, qreal progress)
+        {
+            ...
+            return QColor(...);
+        }
+        ...
+        qRegisterAnimationInterpolator<QColor>(myColorInterpolator);
+    \endcode
+
+    Another option is to reimplement interpolated(), which returns
     interpolation values for the value being interpolated.
 
     \omit We need some snippets around here. \endomit
@@ -356,6 +373,13 @@
     Another example is QEasingCurve::InOutElastic, which provides an
     elastic effect on the values of the interpolated variant.
 
+    QVariantAnimation will use the QEasingCurve::valueForProgress() to
+    transform the "normalized progress" (currentTime / totalDuration)
+    of the animation into the effective progress actually
+    used by the animation. It is this effective progress that will be
+    the progress when interpolated() is called. Also, the steps in the
+    keyValues are referring to this effective progress.
+
     The easing curve is used with the interpolator, the interpolated()
     virtual function, the animation's duration, and iterationCount, to
     control how the current value changes as the animation progresses.
@@ -621,8 +645,8 @@
 /*!
     \reimp
 */
-void QVariantAnimation::updateState(QAbstractAnimation::State oldState,
-                                    QAbstractAnimation::State newState)
+void QVariantAnimation::updateState(QAbstractAnimation::State newState,
+                                    QAbstractAnimation::State oldState)
 {
     Q_UNUSED(oldState);
     Q_UNUSED(newState);