-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinteractivemap.h
87 lines (70 loc) · 1.85 KB
/
interactivemap.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#ifndef INTERACTIVEMAP_H
#define INTERACTIVEMAP_H
#include <QObject>
#include <QWidget>
#include <QMouseEvent>
#include <QWheelEvent>
#include <QPixmap>
#include <QPainter>
#include <QSettings>
#include <QMap>
#include <QList>
#include <QPicture>
#include <QMutex>
#include <QtConcurrent>
#include <QVector>
#include <QImage>
#include "worldstate.h"
class CloseObjects
{
public:
CloseObjects() {}
CloseObjects(EntityRange *r, QPointF p): range(r), coords(p) {}
QString findCloseObjects() const;
private:
EntityRange* range;
QPointF coords;
};
class InteractiveMap : public QWidget
{
Q_OBJECT
public:
InteractiveMap(QWidget* pwgt = nullptr);
virtual ~InteractiveMap();
protected:
virtual void paintEvent(QPaintEvent* pe);
private:
const float minScale = 1.0f;
const float maxScale = 8.0f;
const float scaleStep= 2.0f;
void updateScale(const qreal value, const QPointF& dpos);
void updateTranslate(const QPointF& value);
bool getFilterValue(EntityData::type t);
bool getFilterValue(QString t);
void mousePressEvent (QMouseEvent* pe);
void mouseMoveEvent (QMouseEvent* pe);
void wheelEvent (QWheelEvent *pe);
void findCloseObjects(QPointF coords);
QVector<CloseObjects>* input;
QPainter* painter;
QPixmap* image;
WorldState* worldState;
qreal scale;
QPointF translate;
QPoint startMove;
QPixmap cache;
QMutex renderMutex;
QFutureWatcher<QString> closeObjWatcher;
QFuture<QString> closeObjFuture;
public slots:
void loadState(QString stateFile);
void loadDump(QString dumpFile, QString idxFile);
void closeState();
void saveState(QString stateFile);
void updateCache();
void sendCloseObjects();
signals:
void showCloseObjects(QString str);
void saveStateChanged(bool state);
};
#endif // INTERACTIVEMAP_H