This repository has been archived on 2020-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
Files
IndoorMap/mapview/2D/tools/ToolMoveMap.h
kazu 076c0e9157 changed 3D rendering
added pan/zoom gesture
2018-02-04 17:02:14 +01:00

68 lines
1.3 KiB
C++

#ifndef TOOLMOVEMAP_H
#define TOOLMOVEMAP_H
#include "Tool.h"
#include "../MapView2D.h"
#include <QPanGesture>
/**
* this tool allows moving the 2D map
* using the mouse
*/
class ToolMoveMap : public Tool {
private:
bool mouseIsDown = false;
Point3 startOffset;
int sx;
int sy;
const std::string getName() const override {
return "MapMove";
}
public:
virtual bool mousePressEvent(MapView2D* m, QMouseEvent* e) override {
if (e->button() == Qt::MouseButton::MidButton) {
mouseIsDown = true;
this->sx = e->x();
this->sy = e->y();
this->startOffset = m->getScaler().getOffset();
return true;
}
return false;
}
virtual bool mouseMoveEvent(MapView2D* m, QMouseEvent* e) override {
if (!mouseIsDown) {return false;}
m->getScaler().setOffset(startOffset);
m->getScaler().addOffset(e->x()-sx, e->y()-sy);
return true;
}
virtual bool mouseReleaseEvent(MapView2D* m, QMouseEvent* e) override {
(void) m;
(void) e;
mouseIsDown = false;
return false;
}
virtual bool panTriggered(MapView2D *m, QPanGesture *g) override {
m->getScaler().addOffset(g->delta().x(), g->delta().y());
return true;
}
// virtual void keyPressEvent(MapView2D* m, QKeyEvent* e) override {
// (void) m;
// (void) e;
// // TODO: move on arrow keys?
// }
};
#endif // TOOLMOVEMAP_H