diff options
author | David Faure <faure@kde.org> | 2009-05-29 12:41:19 (GMT) |
---|---|---|
committer | David Faure <faure@kde.org> | 2009-05-29 12:41:19 (GMT) |
commit | 5d0870bd71f33c9267572655d0f842c82b017d6a (patch) | |
tree | f983ac36c0c46aa226a8b51b4e6db13b4f76ff40 /tests/benchmarks/qanimation/rectanimation.cpp | |
parent | 1d8a4f55ce40400fcb35a645f2e94837e6ab0a24 (diff) | |
parent | 9088aeae9daf02546769377853824397458ba822 (diff) | |
download | Qt-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.cpp | 58 |
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); +} |