1#ifndef OSMSCOUT_CLIENT_QT_INPUTHANDLER_H
2#define OSMSCOUT_CLIENT_QT_INPUTHANDLER_H
27#include <QElapsedTimer>
91 timer.setSingleShot(
true);
92 connect(&timer, &QTimer::timeout,
this, &TapRecognizer::onTimeout);
97 void touch(
const QTouchEvent &event);
101 moveTolerance = physicalDpi / 10.0;
133 QQueue<AccumulatorEvent> events;
135 double vectorLengthTreshold;
145 MoveAccumulator(
int memory = 100,
double factor = 4,
double vectorLengthTreshold = 5):
146 memory(memory), factor(factor), vectorLengthTreshold(vectorLengthTreshold)
172 explicit inline
MapView(QObject *parent=
nullptr): QObject(parent) {}
175 const osmscout::GeoCoord&
center,
176 const Bearing&
angle,
188 const Bearing&
angle,
274 virtual bool showCoordinates(
const osmscout::GeoCoord &coord,
const osmscout::Magnification &magnification,
const osmscout::Bearing &bearing);
275 virtual bool zoom(
double zoomFactor,
const QPoint &widgetPosition,
const QRect &widgetDimension);
276 virtual bool move(
const QVector2D &vector);
279 virtual bool touch(
const QTouchEvent &event);
304 QElapsedTimer animationStart;
308 osmscout::Magnification targetMagnification;
310 int animationDuration;
312 const int MOVE_ANIMATION_DURATION = 1000;
313 const int ZOOM_ANIMATION_DURATION = 500;
314 const int ROTATE_ANIMATION_DURATION = 1000;
315 const int ANIMATION_TICK = 16;
334 bool zoom(
double zoomFactor,
const QPoint &widgetPosition,
const QRect &widgetDimension)
override;
335 bool move(
const QVector2D &vector)
override;
338 bool touch(
const QTouchEvent &event)
override;
350 Magnification startMag;
363 bool touch(
const QTouchEvent &event)
override;
375 QElapsedTimer animationStart;
381 double moveAnimationDuration;
382 double zoomAnimationDuration;
384 static constexpr int ANIMATION_DURATION = 1000;
385 static constexpr int ANIMATION_TICK = 16;
392 double moveAnimationDuration = (
double)ANIMATION_DURATION,
393 double zoomAnimationDuration = (
double)ANIMATION_DURATION);
398 bool showCoordinates(
const osmscout::GeoCoord &coord,
const osmscout::Magnification &magnification,
const osmscout::Bearing &bearing)
override;
414 bool zoom(
double zoomFactor,
const QPoint &widgetPosition,
const QRect &widgetDimension)
override;
415 bool move(
const QVector2D &vector)
override;
418 bool touch(
const QTouchEvent &event)
override;
444 bool zoom(
double zoomFactor,
const QPoint &widgetPosition,
const QRect &widgetDimension)
override;
445 bool move(
const QVector2D &vector)
override;
448 bool touch(
const QTouchEvent &event)
override;
458 QTouchEvent::TouchPoint startPointA;
459 QTouchEvent::TouchPoint startPointB;
477 bool showCoordinates(
const osmscout::GeoCoord &coord,
const osmscout::Magnification &magnification,
const osmscout::Bearing &bearing)
override;
#define OSMSCOUT_CLIENT_QT_API
Definition ClientQtImportExport.h:45
~DragHandler() override=default
bool touch(const QTouchEvent &event) override
bool animationInProgress() override
bool zoom(double zoomFactor, const QPoint &widgetPosition, const QRect &widgetDimension) override
bool rotateBy(double angleChange) override
bool move(const QVector2D &vector) override
DragHandler(const MapView &view)
bool animationInProgress() override
JumpHandler(const MapView &view, double moveAnimationDuration=(double) ANIMATION_DURATION, double zoomAnimationDuration=(double) ANIMATION_DURATION)
~JumpHandler() override=default
bool showCoordinates(const osmscout::GeoCoord &coord, const osmscout::Magnification &magnification, const osmscout::Bearing &bearing) override
bool showCoordinates(const osmscout::GeoCoord &coord, const osmscout::Magnification &magnification, const osmscout::Bearing &bearing) override
bool isLockedToPosition() override
~LockHandler() override=default
bool focusOutEvent(QFocusEvent *event) override
bool currentPosition(bool locationValid, osmscout::GeoCoord currentPosition) override
void widgetResized(const QSizeF &widgetSize) override
LockHandler(const MapView &view, const QSizeF &widgetSize)
Definition InputHandler.h:470
Definition InputHandler.h:161
double GetAngle() const
Definition InputHandler.h:216
MapView(QObject *parent, const osmscout::GeoCoord ¢er, const Bearing &angle, const osmscout::Magnification &magnification, double mapDpi)
Definition InputHandler.h:174
double GetMagLevel() const
Definition InputHandler.h:218
double mag
Definition InputHandler.h:167
MapView(QObject *parent=nullptr)
Definition InputHandler.h:172
double GetLon() const
Definition InputHandler.h:215
MapView(const MapView &mv)
Definition InputHandler.h:203
osmscout::GeoCoord center
Definition InputHandler.h:233
double lon
Definition InputHandler.h:165
bool IsValid() const
Definition InputHandler.h:221
MapView & operator=(const MapView &mv)
Definition InputHandler.h:223
MapView(const osmscout::GeoCoord ¢er, const Bearing &angle, const osmscout::Magnification &magnification, double mapDpi)
Definition InputHandler.h:187
~MapView() override=default
double mapDpi
Definition InputHandler.h:169
double GetLat() const
Definition InputHandler.h:214
double angle
Definition InputHandler.h:166
double lat
Definition InputHandler.h:164
double GetMapDpi() const
Definition InputHandler.h:219
uint32_t magLevel
Definition InputHandler.h:168
osmscout::Magnification magnification
Definition InputHandler.h:235
double GetMag() const
Definition InputHandler.h:217
Definition InputHandler.h:128
MoveAccumulator & operator+=(const QPointF p)
~MoveAccumulator() override=default
MoveAccumulator(int memory=100, double factor=4, double vectorLengthTreshold=5)
Definition InputHandler.h:145
bool moveNow(const QVector2D &vector)
bool zoom(double zoomFactor, const QPoint &widgetPosition, const QRect &widgetDimension) override
MoveHandler(const MapView &view)
~MoveHandler() override=default
bool rotateBy(double angleChange) override
bool rotateTo(double angle) override
bool move(const QVector2D &vector) override
bool touch(const QTouchEvent &event) override
bool animationInProgress() override
~MultitouchHandler() override=default
bool animationInProgress() override
bool move(const QVector2D &vector) override
bool touch(const QTouchEvent &event) override
MultitouchHandler(const MapView &view)
bool rotateBy(double angleChange) override
bool zoom(double zoomFactor, const QPoint &widgetPosition, const QRect &widgetDimension) override
void tapAndDrag(const QPoint p)
void setPhysicalDpi(double physicalDpi)
Definition InputHandler.h:99
TapRecognizer()
Definition InputHandler.h:84
void tapLongTap(const QPoint p)
void longTap(const QPoint p)
void doubleTap(const QPoint p)
void touch(const QTouchEvent &event)
~TapRecognizer() override=default
void widgetResized(const QSizeF &widgetSize) override
bool isLockedToPosition() override
bool isFollowVehicle() override
~VehicleFollowHandler() override=default
VehicleFollowHandler(const MapView &view, const QSizeF &widgetSize)
bool vehiclePosition(const VehiclePosition &vehiclePosition, bool autoRotateMap) override
Definition VehiclePosition.h:41
~ZoomGestureHandler() override=default
ZoomGestureHandler(const MapView &view, const QPoint &p, double zoomDistance)
bool touch(const QTouchEvent &event) override
bool operator!=(const MapView &a, const MapView &b)
Definition InputHandler.h:243
bool operator==(const MapView &a, const MapView &b)
Definition InputHandler.h:239
Definition InputHandler.h:116
QElapsedTimer timer
Definition InputHandler.h:118
QPointF pos
Definition InputHandler.h:117