summaryrefslogtreecommitdiffstats
path: root/tests/benchmarks/qanimation/rectanimation.cpp
diff options
context:
space:
mode:
authorDavid Faure <faure@kde.org>2009-05-29 12:41:19 (GMT)
committerDavid Faure <faure@kde.org>2009-05-29 12:41:19 (GMT)
commit5d0870bd71f33c9267572655d0f842c82b017d6a (patch)
treef983ac36c0c46aa226a8b51b4e6db13b4f76ff40 /tests/benchmarks/qanimation/rectanimation.cpp
parent1d8a4f55ce40400fcb35a645f2e94837e6ab0a24 (diff)
parent9088aeae9daf02546769377853824397458ba822 (diff)
downloadQt-5d0870bd71f33c9267572655d0f842c82b017d6a.zip
Qt-5d0870bd71f33c9267572655d0f842c82b017d6a.tar.gz
Qt-5d0870bd71f33c9267572655d0f842c82b017d6a.tar.bz2
Merge branch 'master' of git://gitorious.org/qt/qt
Diffstat (limited to 'tests/benchmarks/qanimation/rectanimation.cpp')
-rw-r--r--tests/benchmarks/qanimation/rectanimation.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/benchmarks/qanimation/rectanimation.cpp b/tests/benchmarks/qanimation/rectanimation.cpp
new file mode 100644
index 0000000..d60a943
--- /dev/null
+++ b/tests/benchmarks/qanimation/rectanimation.cpp
@@ -0,0 +1,58 @@
+#include "rectanimation.h"
+#include "dummyobject.h"
+
+static inline int interpolateInteger(int from, int to, qreal progress)
+{
+ return from + (to - from) * progress;
+}
+
+
+RectAnimation::RectAnimation(DummyObject *obj) : m_object(obj), m_dura(250)
+{
+}
+
+void RectAnimation::setEndValue(const QRect &rect)
+{
+ m_end = rect;
+}
+
+void RectAnimation::setStartValue(const QRect &rect)
+{
+ m_start = rect;
+}
+
+void RectAnimation::setDuration(int d)
+{
+ m_dura = d;
+}
+
+int RectAnimation::duration() const
+{
+ return m_dura;
+}
+
+
+void RectAnimation::updateCurrentTime(int msecs)
+{
+ qreal progress = m_easing.valueForProgress( qreal(msecs) / qreal(m_dura) );
+ QRect now;
+ now.setCoords(interpolateInteger(m_start.left(), m_end.left(), progress),
+ interpolateInteger(m_start.top(), m_end.top(), progress),
+ interpolateInteger(m_start.right(), m_end.right(), progress),
+ interpolateInteger(m_start.bottom(), m_end.bottom(), progress));
+
+ bool changed = (now != m_current);
+ if (changed)
+ m_current = now;
+
+ if (state() == Stopped)
+ return;
+
+ if (m_object)
+ m_object->setRect(m_current);
+}
+
+void RectAnimation::updateState(QAbstractAnimation::State state)
+{
+ Q_UNUSED(state);
+}