history.h

changeset 91
b4dda6348e7e
parent 90
03f718ed5b33
child 92
586d294ca83f
equal deleted inserted replaced
90:03f718ed5b33 91:b4dda6348e7e
20 #define HISTORY_H 20 #define HISTORY_H
21 21
22 #include "common.h" 22 #include "common.h"
23 23
24 #define IMPLEMENT_HISTORY_TYPE(N) \ 24 #define IMPLEMENT_HISTORY_TYPE(N) \
25 virtual HistoryType_e getType () const { \
26 return HISTORY_##N; \
27 } \
28 virtual ~N##History (); \ 25 virtual ~N##History (); \
29 virtual void undo (); \ 26 virtual void undo (); \
30 virtual void redo (); 27 virtual void redo ();
31 28
32 enum HistoryType_e {
33 HISTORY_Delete,
34 HISTORY_SetColor,
35 HISTORY_SetContents,
36 };
37 29
38 // ============================================================================= 30 // =============================================================================
39 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 31 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
40 // ============================================================================= 32 // =============================================================================
41 class HistoryEntry { 33 class HistoryEntry {
42 public: 34 public:
43 virtual void undo () {} 35 virtual void undo () {}
44 virtual void redo () {} 36 virtual void redo () {}
45 virtual ~HistoryEntry () {} 37 virtual ~HistoryEntry () {}
46
47 virtual HistoryType_e getType () const {
48 return (HistoryType_e)(0);
49 };
50 }; 38 };
51 39
52 // ============================================================================= 40 // =============================================================================
53 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
54 // ============================================================================= 42 // =============================================================================
76 64
77 SetColorHistory (vector<ulong> ulaIndices, vector<short> daColors, short dNewColor) : 65 SetColorHistory (vector<ulong> ulaIndices, vector<short> daColors, short dNewColor) :
78 ulaIndices (ulaIndices), daColors (daColors), dNewColor (dNewColor) {} 66 ulaIndices (ulaIndices), daColors (daColors), dNewColor (dNewColor) {}
79 }; 67 };
80 68
69 // =============================================================================
70 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
71 // =============================================================================
81 class SetContentsHistory : public HistoryEntry { 72 class SetContentsHistory : public HistoryEntry {
82 public: 73 public:
83 IMPLEMENT_HISTORY_TYPE (SetContents) 74 IMPLEMENT_HISTORY_TYPE (SetContents)
84 75
85 ulong ulIndex; 76 ulong ulIndex;
90 }; 81 };
91 82
92 // ============================================================================= 83 // =============================================================================
93 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 84 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
94 // ============================================================================= 85 // =============================================================================
86 class ListMoveHistory : public HistoryEntry {
87 public:
88 IMPLEMENT_HISTORY_TYPE (ListMove)
89
90 std::vector<ulong> ulaIndices;
91 bool bUp;
92
93 std::vector<LDObject*> getObjects (short ofs);
94 ListMoveHistory (vector<ulong> ulaIndices, const bool bUp) :
95 ulaIndices (ulaIndices), bUp (bUp) {}
96 };
97
98 // =============================================================================
99 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
100 // =============================================================================
95 namespace History { 101 namespace History {
96 extern std::vector<HistoryEntry*> entries; 102 extern std::vector<HistoryEntry*> entries;
97 103
98 void addEntry (HistoryEntry* entry); 104 void addEntry (HistoryEntry* entry);
99 void undo (); 105 void undo ();

mercurial