Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_timed_signal_threshold.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2016 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8#include <QElapsedTimer>
9#include "kis_debug.h"
10
11
13{
14 Private(int _delay, int _cancelDelay)
15 : delay(_delay),
16 cancelDelay(0),
17 enabled(true)
18 {
19 setCancelDelay(_cancelDelay);
20 }
21
23 cancelDelay = value >= 0 ? value : 2 * delay;
24 }
25
26 QElapsedTimer timer;
27 int delay;
29 bool enabled;
30};
31
32
33KisTimedSignalThreshold::KisTimedSignalThreshold(int delay, int cancelDelay, QObject *parent)
34 : QObject(parent),
35 m_d(new Private(delay, cancelDelay))
36{
37}
38
42
44{
45 stop();
46 Q_EMIT timeout();
47}
48
50{
51 if (!m_d->enabled) return;
52
53 if (!m_d->timer.isValid()) {
54 m_d->timer.start();
55 } else if (m_d->timer.elapsed() > m_d->cancelDelay) {
56 stop();
57 } else if (m_d->timer.elapsed() > m_d->delay) {
58 forceDone();
59 }
60}
61
63{
64 m_d->timer.invalidate();
65}
66
68{
69 m_d->enabled = value;
70 if (!m_d->enabled) {
71 stop();
72 }
73}
74
75void KisTimedSignalThreshold::setDelayThreshold(int delay, int cancelDelay)
76{
77 m_d->delay = delay;
78 m_d->setCancelDelay(cancelDelay);
79}
float value(const T *src, size_t ch)
void setDelayThreshold(int delay, int cancelDelay=-1)
const QScopedPointer< Private > m_d
KisTimedSignalThreshold(int delay, int cancelDelay=-1, QObject *parent=0)