21#ifndef VELOCITY_CALCULATOR_H
22#define VELOCITY_CALCULATOR_H
24#include "LomiriGesturesQmlGlobal.h"
26#include <QtCore/QObject>
27#include <LomiriGestures/private/timesource_p.h>
52class LOMIRIGESTURESQML_EXPORT AxisVelocityCalculator :
public QObject
59 Q_PROPERTY(qreal trackedPosition READ trackedPosition WRITE setTrackedPosition
60 NOTIFY trackedPositionChanged)
66 AxisVelocityCalculator(QObject *parent = 0);
71 AxisVelocityCalculator(
const UG_PREPEND_NAMESPACE(SharedTimeSource) &timeSource, QObject *parent = 0);
73 virtual ~AxisVelocityCalculator();
75 qreal trackedPosition()
const;
76 void setTrackedPosition(qreal value);
81 Q_INVOKABLE qreal calculate();
86 Q_INVOKABLE
void reset();
88 int numSamples()
const;
93 void setTimeSource(
const UG_PREPEND_NAMESPACE(SharedTimeSource) &timeSource);
98 static const int MIN_SAMPLES_NEEDED = 2;
103 static const int MAX_SAMPLES = 50;
109 static const int AGE_OLDEST_SAMPLE = 100;
112 void trackedPositionChanged(qreal value);
122 void updateIdleTime();
127 void processMovement(qreal movement);
137 Sample m_samples[MAX_SAMPLES];
141 UG_PREPEND_NAMESPACE(SharedTimeSource) m_timeSource;
143 qreal m_trackedPosition;