forked from yvt/terravox
-
Notifications
You must be signed in to change notification settings - Fork 2
/
session.h
66 lines (48 loc) · 1.39 KB
/
session.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
#ifndef SESSION_H
#define SESSION_H
#include <QObject>
#include <QList>
#include <QSharedPointer>
#include <QRect>
class Terrain;
class TerrainEdit;
class ToolController;
class Session : public QObject
{
Q_OBJECT
public:
explicit Session(QObject *parent = 0);
~Session();
QSharedPointer<TerrainEdit> beginEdit();
void endEdit();
void cancelEdit();
const QSharedPointer<Terrain> &terrain() const { return terrain_; }
void setTerrain(QSharedPointer<Terrain> t) { terrain_ = t; }
QSharedPointer<ToolController> tool() const { return tool_; }
void setTool(QSharedPointer<ToolController> t);
quint32 primaryColor() const { return primaryColor_; }
void setPrimaryColor(quint32 color);
bool isEditActive() const { return currentEdit_; }
bool canUndo();
bool canRedo();
void terrainUpdate(const QRect &rect = QRect());
signals:
void terrainUpdated(const QRect&);
void toolChanged();
void primaryColorChanged();
void canUndoChanged(bool);
void canRedoChanged(bool);
public slots:
void undo();
void redo();
private slots:
void edited(const QRect&);
private:
QSharedPointer<Terrain> terrain_;
QList<QSharedPointer<TerrainEdit>> editHistory_;
QSharedPointer<ToolController> tool_;
int nextEditHistoryIndex_;
QSharedPointer<TerrainEdit> currentEdit_;
quint32 primaryColor_;
};
#endif // SESSION_H