10#include <QElapsedTimer>
39 if (!
m_d->realEvents.isEmpty()) {
40 m_d->lastPaintInformation =
m_d->realEvents.last();
43 m_d->realEvents.clear();
44 m_d->lastPaintTime.start();
49 if (!
m_d->lastPaintTime.isValid()) {
50 m_d->lastPaintTime.start();
53 m_d->realEvents.append(pi);
58 if (
m_d->realEvents.size() > 0) {
59 dbgKrita <<
"DEBUG: KisStabilizedEventsSampler::addFinishingEvent called "
60 "before `realEvents` is cleared";
64 m_d->elapsedTimeOverride = numSamples;
65 m_d->realEvents.append(
m_d->lastPaintInformation);
75std::pair<KisStabilizedEventsSampler::iterator, KisStabilizedEventsSampler::iterator>
78 const int elapsed = (
m_d->lastPaintTime.restart() +
m_d->elapsedTimeOverride) /
m_d->sampleTime;
79 const qreal alpha = qreal(
m_d->realEvents.size()) / elapsed;
81 m_d->elapsedTimeOverride = 0;
83 return std::make_pair(
iterator(
this, 0, alpha),
const KisPaintInformation & dereference() const
const KisStabilizedEventsSampler * m_sampler
void addEvent(const KisPaintInformation &pi)
void addFinishingEvent(int numSamples)
std::pair< iterator, iterator > range() const
const QScopedPointer< Private > m_d
~KisStabilizedEventsSampler()
KisStabilizedEventsSampler(int sampleTime=1)
KisPaintInformation lastPaintInformation
QList< KisPaintInformation > realEvents
QElapsedTimer lastPaintTime