aboutsummaryrefslogtreecommitdiff
path: root/transitionworkerthread.cpp
blob: 2ee1d0e6b6cad188d964385167ce6acc9d95b1c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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);
}