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/MapView2D.h
kazu 076c0e9157 changed 3D rendering
added pan/zoom gesture
2018-02-04 17:02:14 +01:00

95 lines
1.4 KiB
C++

#ifndef MAP2D_H
#define MAP2D_H
#include <QWidget>
#include <QOpenGLWidget>
#include "../../fixC11.h"
#include "Scaler.h"
class MapModel;
class MV2DElement;
class QGestureEvent;
class QPinchGesture;
class QSwipeGesture;
#include "tools/Tools.h"
/**
* view to render (and edit) MapElements
*/
class MapView2D : public QOpenGLWidget {
Q_OBJECT
private:
/** scaling within the map */
Scaler s;
/** the currently active tool (if any) */
Tools tools;
/** the underlying data-model */
MapModel* model = nullptr;
public:
/** ctor */
MapView2D(QWidget* parent = nullptr);
void layerChange() {
update();
tools.layerChange(this);
}
public:
void paintGL();
void initializeGL();
void resizeGL();
Tools& getTools() {return tools;}
/** get the underlying data-model */
MapModel* getModel() {return model;}
/** set the underlying data-model */
void setModel(MapModel* mdl) {
this->model = mdl;
update();
}
/** get the underlying scaling device */
Scaler& getScaler() {return s;}
signals:
void onElementChange(MV2DElement*e);
protected:
void mousePressEvent(QMouseEvent* e);
void mouseMoveEvent(QMouseEvent* e);
void mouseReleaseEvent(QMouseEvent* e);
void wheelEvent(QWheelEvent* e);
void keyPressEvent(QKeyEvent* e);
// android
bool event(QEvent *e) override;
bool gestureEvent(QGestureEvent* event);
void pinchTriggered(QPinchGesture* gesture);
void panTriggered(QPanGesture* gesture);
};
#endif // MAP2D_H