Add basic custom easing curve docs and test

Change-Id: Id38434cb71417276635b501d13d0145759de9864
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
This commit is contained in:
Martin Jones 2011-12-08 10:36:44 +10:00 committed by Qt by Nokia
parent de33a805de
commit 2a3990fc41
2 changed files with 25 additions and 0 deletions

View File

@ -1916,6 +1916,7 @@ void QDeclarativePropertyAnimation::setTo(const QVariant &t)
\qmlproperty real QtQuick2::PropertyAnimation::easing.amplitude
\qmlproperty real QtQuick2::PropertyAnimation::easing.overshoot
\qmlproperty real QtQuick2::PropertyAnimation::easing.period
\qmlproperty list<real> QtQuick2::PropertyAnimation::easing.bezierCurve
\brief the easing curve used for the animation.
To specify an easing curve you need to specify at least the type. For some curves you can also specify
@ -2095,6 +2096,10 @@ void QDeclarativePropertyAnimation::setTo(const QVariant &t)
\o \c Easing.OutInBounce
\o Easing curve for a bounce (exponentially decaying parabolic bounce) function easing out/in: deceleration until halfway, then acceleration.
\o \inlineimage qeasingcurve-outinbounce.png
\row
\o \c Easing.Bezier
\o Custom easing curve defined by the easing.bezierCurve property.
\o
\endtable
\c easing.amplitude is only applicable for bounce and elastic curves (curves of type
@ -2107,6 +2112,10 @@ void QDeclarativePropertyAnimation::setTo(const QVariant &t)
\c easing.period is only applicable if easing.type is: \c Easing.InElastic, \c Easing.OutElastic,
\c Easing.InOutElastic or \c Easing.OutInElastic.
\c easing.bezierCurve is only applicable if easing.type is: \c Easing.Bezier. This property is a list<real> containing
groups of three points defining a curve from 0,0 to 1,1 - control1, control2,
end point: [cx1, cy1, cx2, cy2, endx, endy, ...]. The last point must be 1,1.
See the \l {declarative/animation/easing}{easing} example for a demonstration of
the different easing settings.
*/

View File

@ -938,6 +938,22 @@ void tst_qdeclarativeanimations::easingProperties()
QCOMPARE(animObject->easing().type(), QEasingCurve::InOutBack);
QCOMPARE(animObject->easing().overshoot(), 2.0);
}
{
QDeclarativeEngine engine;
QString componentStr = "import QtQuick 2.0\nPropertyAnimation { easing.type: \"Bezier\"; easing.bezierCurve: [0.5, 0.2, 0.13, 0.65, 1.0, 1.0] }";
QDeclarativeComponent animationComponent(&engine);
animationComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile(""));
QDeclarativePropertyAnimation *animObject = qobject_cast<QDeclarativePropertyAnimation*>(animationComponent.create());
QVERIFY(animObject != 0);
QCOMPARE(animObject->easing().type(), QEasingCurve::BezierSpline);
QList<QPointF> points = animObject->easing().cubicBezierSpline();
QCOMPARE(points.count(), 3);
QCOMPARE(points.at(0), QPointF(0.5, 0.2));
QCOMPARE(points.at(1), QPointF(0.13, 0.65));
QCOMPARE(points.at(2), QPointF(1.0, 1.0));
}
}
void tst_qdeclarativeanimations::rotation()