21 #ifndef VELOCITY_CALCULATOR_H
22 #define VELOCITY_CALCULATOR_H
24 #include "UbuntuGesturesQmlGlobal.h"
26 #include <QtCore/QObject>
27 #include "TimeSource.h"
52 class UBUNTUGESTURESQML_EXPORT AxisVelocityCalculator :
public QObject
59 Q_PROPERTY(qreal trackedPosition READ trackedPosition WRITE setTrackedPosition
60 NOTIFY trackedPositionChanged)
66 AxisVelocityCalculator(QObject *parent = 0);
71 AxisVelocityCalculator(
const UbuntuGestures::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 UbuntuGestures::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 UbuntuGestures::SharedTimeSource m_timeSource;
143 qreal m_trackedPosition;
146 #endif // VELOCITY_CALCULATOR_H