1 #ifndef OSMSCOUT_CLIENT_QT_INPUTHANDLER_H 2 #define OSMSCOUT_CLIENT_QT_INPUTHANDLER_H 25 #include <QTouchEvent> 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;
105 void tap(
const QPoint p);
106 void doubleTap(
const QPoint p);
107 void longTap(
const QPoint p);
108 void tapLongTap(
const QPoint p);
109 void tapAndDrag(
const QPoint p);
133 QQueue<AccumulatorEvent> events;
135 double vectorLengthTreshold;
145 inline MoveAccumulator(
int memory = 100,
double factor = 4,
double vectorLengthTreshold = 5):
146 memory(memory), factor(factor), vectorLengthTreshold(vectorLengthTreshold)
164 Q_PROPERTY(
double lat READ GetLat CONSTANT)
165 Q_PROPERTY(
double lon READ GetLon CONSTANT)
166 Q_PROPERTY(
double angle READ GetAngle CONSTANT)
167 Q_PROPERTY(
double mag READ GetMag CONSTANT)
168 Q_PROPERTY(uint32_t magLevel READ GetMagLevel CONSTANT)
169 Q_PROPERTY(
double mapDpi READ GetMapDpi CONSTANT)
172 explicit inline
MapView(QObject *parent=
nullptr): QObject(parent) {}
175 const osmscout::GeoCoord ¢er,
176 const Bearing &angle,
177 const osmscout::Magnification &magnification,
179 QObject(parent), center(center), angle(angle), magnification(magnification), mapDpi(mapDpi) {}
181 inline MapView(
const osmscout::GeoCoord ¢er,
182 const Bearing &angle,
183 const osmscout::Magnification &magnification,
185 center(center), angle(angle), magnification(magnification), mapDpi(mapDpi) {}
193 QObject(), center(mv.center), angle(mv.angle), magnification(mv.magnification), mapDpi(mv.mapDpi) {}
197 inline double GetLat()
const{
return center.GetLat(); }
198 inline double GetLon()
const{
return center.GetLon(); }
199 inline double GetAngle()
const{
return angle.AsRadians(); }
200 inline double GetMag()
const{
return magnification.GetMagnification(); }
201 inline double GetMagLevel()
const{
return magnification.GetLevel(); }
204 inline bool IsValid()
const{
return mapDpi > 0; }
254 virtual void painted();
255 virtual bool animationInProgress();
257 virtual bool showCoordinates(
const osmscout::GeoCoord &coord,
const osmscout::Magnification &magnification,
const osmscout::Bearing &bearing);
258 virtual bool zoom(
double zoomFactor,
const QPoint &widgetPosition,
const QRect &widgetDimension);
259 virtual bool move(
const QVector2D &vector);
260 virtual bool rotateTo(
double angle);
261 virtual bool rotateBy(
double angleChange);
262 virtual bool touch(
const QTouchEvent &event);
263 virtual bool currentPosition(
bool locationValid, osmscout::GeoCoord currentPosition);
265 virtual bool isLockedToPosition();
266 virtual bool isFollowVehicle();
267 virtual bool focusOutEvent(QFocusEvent *event);
268 virtual void widgetResized(
const QSizeF &widgetSize);
271 void viewChanged(
const MapView &view);
287 QElapsedTimer animationStart;
291 osmscout::Magnification targetMagnification;
293 int animationDuration;
295 const int MOVE_ANIMATION_DURATION = 1000;
296 const int ZOOM_ANIMATION_DURATION = 500;
297 const int ROTATE_ANIMATION_DURATION = 1000;
298 const int ANIMATION_TICK = 16;
307 bool animationInProgress()
override;
315 bool moveNow(
const QVector2D &vector);
317 bool zoom(
double zoomFactor,
const QPoint &widgetPosition,
const QRect &widgetDimension)
override;
318 bool move(
const QVector2D &vector)
override;
319 bool rotateTo(
double angle)
override;
320 bool rotateBy(
double angleChange)
override;
321 bool touch(
const QTouchEvent &event)
override;
333 Magnification startMag;
346 bool touch(
const QTouchEvent &event)
override;
358 QElapsedTimer animationStart;
364 double moveAnimationDuration;
365 double zoomAnimationDuration;
367 static constexpr
int ANIMATION_DURATION = 1000;
368 static constexpr
int ANIMATION_TICK = 16;
375 double moveAnimationDuration = (
double)ANIMATION_DURATION,
376 double zoomAnimationDuration = (
double)ANIMATION_DURATION);
380 bool animationInProgress()
override;
381 bool showCoordinates(
const osmscout::GeoCoord &coord,
const osmscout::Magnification &magnification,
const osmscout::Bearing &bearing)
override;
395 bool animationInProgress()
override;
397 bool zoom(
double zoomFactor,
const QPoint &widgetPosition,
const QRect &widgetDimension)
override;
398 bool move(
const QVector2D &vector)
override;
399 bool rotateBy(
double angleChange)
override;
401 bool touch(
const QTouchEvent &event)
override;
425 bool animationInProgress()
override;
427 bool zoom(
double zoomFactor,
const QPoint &widgetPosition,
const QRect &widgetDimension)
override;
428 bool move(
const QVector2D &vector)
override;
429 bool rotateBy(
double angleChange)
override;
431 bool touch(
const QTouchEvent &event)
override;
441 QTouchEvent::TouchPoint startPointA;
442 QTouchEvent::TouchPoint startPointB;
459 bool currentPosition(
bool locationValid, osmscout::GeoCoord currentPosition)
override;
460 bool showCoordinates(
const osmscout::GeoCoord &coord,
const osmscout::Magnification &magnification,
const osmscout::Bearing &bearing)
override;
461 bool isLockedToPosition()
override;
462 bool focusOutEvent(QFocusEvent *event)
override;
463 void widgetResized(
const QSizeF &widgetSize)
override;
480 bool isLockedToPosition()
override;
481 bool isFollowVehicle()
override;
482 void widgetResized(
const QSizeF &widgetSize)
override;
Definition: InputHandler.h:473
double GetLat() const
Definition: InputHandler.h:197
double GetMagLevel() const
Definition: InputHandler.h:201
MapView(const osmscout::GeoCoord ¢er, const Bearing &angle, const osmscout::Magnification &magnification, double mapDpi)
Definition: InputHandler.h:181
#define OSMSCOUT_CLIENT_QT_API
Definition: ClientQtImportExport.h:45
MapView & operator=(const MapView &mv)
Definition: InputHandler.h:206
Definition: InputHandler.h:450
QElapsedTimer time
Definition: InputHandler.h:118
MoveAccumulator & operator+=(const QPointF p)
osmscout::Magnification magnification
Definition: InputHandler.h:218
MapView(QObject *parent, const osmscout::GeoCoord ¢er, const Bearing &angle, const osmscout::Magnification &magnification, double mapDpi)
Definition: InputHandler.h:174
double angle
Definition: InputHandler.h:166
bool operator!=(const MapViewStruct &r1, const MapViewStruct &r2)
Definition: DBThread.h:61
Definition: InputHandler.h:283
Definition: InputHandler.h:329
Definition: InputHandler.h:389
LockHandler(const MapView &view, const QSizeF &widgetSize)
Definition: InputHandler.h:453
Definition: InputHandler.h:354
double GetMapDpi() const
Definition: InputHandler.h:202
void setPhysicalDpi(double physicalDpi)
Definition: InputHandler.h:99
MapView(const MapView &mv)
Definition: InputHandler.h:192
MoveAccumulator(int memory=100, double factor=4, double vectorLengthTreshold=5)
Definition: InputHandler.h:145
double GetMag() const
Definition: InputHandler.h:200
double mapDpi
Definition: InputHandler.h:169
Bearing angle
Definition: InputHandler.h:217
double GetAngle() const
Definition: InputHandler.h:199
~MoveAccumulator() override=default
bool operator==(const MapView &a, const MapView &b)
Definition: InputHandler.h:222
Definition: VehiclePosition.h:40
TapRecognizer()
Definition: InputHandler.h:84
osmscout::GeoCoord center
Definition: InputHandler.h:216
double GetLon() const
Definition: InputHandler.h:198
QPointF pos
Definition: InputHandler.h:117
Definition: InputHandler.h:115
Definition: InputHandler.h:128
Definition: InputHandler.h:160
Definition: InputHandler.h:58
bool IsValid() const
Definition: InputHandler.h:204
Definition: InputHandler.h:419