Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_signal_compressor_with_param.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2014 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef __KIS_SIGNAL_COMPRESSOR_WITH_PARAM_H
8#define __KIS_SIGNAL_COMPRESSOR_WITH_PARAM_H
9
11#include <functional>
12
13
31class KRITAGLOBAL_EXPORT SignalToFunctionProxy : public QObject
32{
33 Q_OBJECT
34public:
35 using TrivialFunction = std::function<void ()>;
36
37public:
39 : m_function(function)
40 {
41 }
42
43public Q_SLOTS:
44 void start() {
45 m_function();
46 }
47
48private:
50};
51
67class KRITAGLOBAL_EXPORT FunctionToSignalProxy : public QObject
68{
69 Q_OBJECT
70
71public:
72 void start() {
73 Q_EMIT timeout();
74 }
75
76Q_SIGNALS:
77 void timeout();
78};
79
80
81
110template <typename T>
112{
113public:
114 using CallbackFunction = std::function<void (T)>;
115
116public:
118 : m_compressor(delay, mode),
119 m_function(function)
120 {
121 std::function<void ()> callback(
123 m_signalProxy.reset(new SignalToFunctionProxy(callback));
124
125 m_compressor.connect(&m_compressor, SIGNAL(timeout()), m_signalProxy.data(), SLOT(start()));
126 }
127
131
132 void start(T param) {
133 m_currentParamValue = param;
135 }
136
137 void stop() {
139 }
140
141 bool isActive() const {
142 return m_compressor.isActive();
143 }
144
145 void setDelay(int value) {
147 }
148
149private:
153
154private:
157 QScopedPointer<SignalToFunctionProxy> m_signalProxy;
159};
160
161#endif /* __KIS_SIGNAL_COMPRESSOR_WITH_PARAM_H */
float value(const T *src, size_t ch)
KisSignalCompressorWithParam(int delay, CallbackFunction function, KisSignalCompressor::Mode mode=KisSignalCompressor::FIRST_ACTIVE)
QScopedPointer< SignalToFunctionProxy > m_signalProxy
void setDelay(std::function< bool()> idleCallback, int idleDelay, int timeout)
SignalToFunctionProxy(TrivialFunction function)
typedef void(QOPENGLF_APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC)(GLuint buffer)