Krita Source Code Documentation
Loading...
Searching...
No Matches
KisStrokeSpeedMeasurer::Private Struct Reference

Classes

struct  StrokeSample
 

Public Member Functions

void addSampleImpl (const QPointF &pt, int time)
 
void purgeOldSamples ()
 

Public Attributes

QPointF lastSamplePos
 
qreal maxSpeed = 0
 
QList< StrokeSamplesamples
 
int startTime = 0
 
int timeSmoothWindow = 0
 

Detailed Description

Definition at line 14 of file KisStrokeSpeedMeasurer.cpp.

Member Function Documentation

◆ addSampleImpl()

void KisStrokeSpeedMeasurer::Private::addSampleImpl ( const QPointF & pt,
int time )

Definition at line 46 of file KisStrokeSpeedMeasurer.cpp.

47{
48 if (samples.isEmpty()) {
49 lastSamplePos = pt;
50 startTime = time;
51 samples.append(Private::StrokeSample(time, 0));
52 } else {
53 Private::StrokeSample &lastSample = samples.last();
54
55 const qreal newStrokeDistance = lastSample.distance + kisDistance(lastSamplePos, pt);
56 lastSamplePos = pt;
57
58 if (lastSample.time >= time) {
59 lastSample.distance = newStrokeDistance;
60 } else {
61 samples.append(Private::StrokeSample(time, newStrokeDistance));
62 }
63 }
64}
qreal kisDistance(const QPointF &pt1, const QPointF &pt2)
Definition kis_global.h:190

References KisStrokeSpeedMeasurer::Private::StrokeSample::distance, kisDistance(), lastSamplePos, samples, startTime, and KisStrokeSpeedMeasurer::Private::StrokeSample::time.

◆ purgeOldSamples()

void KisStrokeSpeedMeasurer::Private::purgeOldSamples ( )

Definition at line 103 of file KisStrokeSpeedMeasurer.cpp.

104{
105 if (samples.size() <= 1) return;
106
107 const Private::StrokeSample lastSample = samples.last();
108
109 auto lastValueToKeep = samples.end();
110
111 for (auto it = samples.begin(); it != samples.end(); ++it) {
112 KIS_SAFE_ASSERT_RECOVER_RETURN(lastSample.time - it->time >= 0);
113
114 if (lastSample.time - it->time < timeSmoothWindow) break;
115 lastValueToKeep = it;
116 }
117
118 if (lastValueToKeep != samples.begin() &&
119 lastValueToKeep != samples.end()) {
120
121 samples.erase(samples.begin(), lastValueToKeep - 1);
122 }
123}
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128

References KIS_SAFE_ASSERT_RECOVER_RETURN, and KisStrokeSpeedMeasurer::Private::StrokeSample::time.

Member Data Documentation

◆ lastSamplePos

QPointF KisStrokeSpeedMeasurer::Private::lastSamplePos

Definition at line 27 of file KisStrokeSpeedMeasurer.cpp.

◆ maxSpeed

qreal KisStrokeSpeedMeasurer::Private::maxSpeed = 0

Definition at line 30 of file KisStrokeSpeedMeasurer.cpp.

◆ samples

QList<StrokeSample> KisStrokeSpeedMeasurer::Private::samples

Definition at line 26 of file KisStrokeSpeedMeasurer.cpp.

◆ startTime

int KisStrokeSpeedMeasurer::Private::startTime = 0

Definition at line 28 of file KisStrokeSpeedMeasurer.cpp.

◆ timeSmoothWindow

int KisStrokeSpeedMeasurer::Private::timeSmoothWindow = 0

Definition at line 24 of file KisStrokeSpeedMeasurer.cpp.


The documentation for this struct was generated from the following file: