95 lines
1.4 KiB
C++
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
|