From 7d96918246b866a0b4aac6b4dc70e4c049c0ada9 Mon Sep 17 00:00:00 2001 From: Samuel Fadel Date: Thu, 11 Feb 2016 16:12:21 -0200 Subject: RewindWorkerThread renamed to TransitionWorkerThread. Also, added easing curve customization. --- transitionworkerthread.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 transitionworkerthread.cpp (limited to 'transitionworkerthread.cpp') diff --git a/transitionworkerthread.cpp b/transitionworkerthread.cpp new file mode 100644 index 0000000..2ee1d0e --- /dev/null +++ b/transitionworkerthread.cpp @@ -0,0 +1,35 @@ +#include "transitionworkerthread.h" + +// The full duration (usecs) of the restoration animation +static const double DURATION = 250000; + +// The time to wait (usecs) before the next animation tick +static const double TICK_TIME = DURATION / 60.0; + +// The amount to increase 't' per time step +static const double TICK_SIZE = TICK_TIME / DURATION; + +TransitionWorkerThread::TransitionWorkerThread(TransitionControl *control) + : m_control(control) +{ +} + +TransitionWorkerThread::TransitionWorkerThread(TransitionControl *control, + const QEasingCurve &easing) + : m_control(control) + , m_easing(easing) +{ +} + +void TransitionWorkerThread::run() +{ + double t = m_control->t(); + + while (t + TICK_SIZE < 1.0) { + t += TICK_SIZE; + m_control->setT(m_easing.valueForProgress(t)); + QThread::usleep(TICK_TIME); + } + + m_control->setT(1.0); +} -- cgit v1.2.3