history.h

changeset 183
f1b8cb53d2a2
parent 182
9374fea8f77f
child 184
fae3bc9ce319
--- a/history.h	Wed May 08 14:57:48 2013 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,215 +0,0 @@
-/*
- *  LDForge: LDraw parts authoring CAD
- *  Copyright (C) 2013 Santeri Piippo
- *  
- *  This program is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  (at your option) any later version.
- *  
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *  
- *  You should have received a copy of the GNU General Public License
- *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef HISTORY_H
-#define HISTORY_H
-
-#include "common.h"
-#include "ldtypes.h"
-
-#define IMPLEMENT_HISTORY_TYPE(N) \
-	virtual ~N##History (); \
-	virtual void undo (); \
-	virtual void redo (); \
-	virtual HistoryType type () { return HISTORY_##N; }
-
-// =============================================================================
-enum HistoryType {
-	HISTORY_Del,
-	HISTORY_SetColor,
-	HISTORY_Edit,
-	HISTORY_ListMove,
-	HISTORY_Add,
-	HISTORY_QuadSplit,
-	HISTORY_Inline,
-	HISTORY_Move,
-	HISTORY_Combo,
-};
-
-// =============================================================================
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-// =============================================================================
-class HistoryEntry {
-public:
-	virtual void undo () {}
-	virtual void redo () {}
-	virtual ~HistoryEntry () {}
-	virtual HistoryType type () { return (HistoryType)(0); }
-};
-
-// =============================================================================
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-// =============================================================================
-class DelHistory : public HistoryEntry {
-public:
-	enum Type {
-		Cut,	// were deleted with a cut operation
-		Other,	// were deleted witout specific reason
-	};
-	
-	IMPLEMENT_HISTORY_TYPE (Del)
-	
-	vector<ulong> indices;
-	vector<LDObject*> cache;
-	const Type eType;
-	
-	DelHistory (vector<ulong> indices, vector<LDObject*> cache, const Type eType = Other) :
-		indices (indices), cache (cache), eType (eType) {}
-};
-
-// =============================================================================
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-// =============================================================================
-class SetColorHistory : public HistoryEntry {
-public:
-	IMPLEMENT_HISTORY_TYPE (SetColor)
-	
-	vector<ulong> ulaIndices;
-	vector<short> daColors;
-	short dNewColor;
-	
-	SetColorHistory (vector<ulong> ulaIndices, vector<short> daColors, short dNewColor) :
-		ulaIndices (ulaIndices), daColors (daColors), dNewColor (dNewColor) {}
-};
-
-// =============================================================================
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-// =============================================================================
-class EditHistory : public HistoryEntry {
-public:
-	IMPLEMENT_HISTORY_TYPE (Edit)
-	
-	const std::vector<ulong> ulaIndices;
-	const std::vector<LDObject*> paOldObjs, paNewObjs;
-	
-	EditHistory (std::vector<ulong> ulaIndices, std::vector<LDObject*> paOldObjs,
-		std::vector<LDObject*> paNewObjs) :
-		ulaIndices (ulaIndices), paOldObjs (paOldObjs), paNewObjs (paNewObjs) {}
-};
-
-// =============================================================================
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-// =============================================================================
-class ListMoveHistory : public HistoryEntry {
-public:
-	IMPLEMENT_HISTORY_TYPE (ListMove)
-	
-	std::vector<ulong> ulaIndices;
-	bool bUp;
-	
-	std::vector<LDObject*> getObjects (short ofs);
-	ListMoveHistory (vector<ulong> ulaIndices, const bool bUp) :
-		ulaIndices (ulaIndices), bUp (bUp) {}
-};
-
-// =============================================================================
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-// =============================================================================
-class AddHistory : public HistoryEntry {
-public:
-	enum Type {
-		Other,	// was "just added"
-		Paste,	// was added through a paste operation
-	};
-	
-	IMPLEMENT_HISTORY_TYPE (Add)
-	
-	std::vector<ulong> ulaIndices;
-	std::vector<LDObject*> paObjs;
-	const Type eType;
-	
-	AddHistory (std::vector<ulong> ulaIndices, std::vector<LDObject*> paObjs,
-		const Type eType = Other) :
-		ulaIndices (ulaIndices), paObjs (paObjs), eType (eType) {}
-};
-
-// =============================================================================
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-// =============================================================================
-class QuadSplitHistory : public HistoryEntry {
-public:
-	IMPLEMENT_HISTORY_TYPE (QuadSplit)
-	
-	std::vector<ulong> ulaIndices;
-	std::vector<LDQuad*> paQuads;
-	
-	QuadSplitHistory (std::vector<ulong> ulaIndices, std::vector<LDQuad*> paQuads) :
-		ulaIndices (ulaIndices), paQuads (paQuads) {}
-};
-
-// =============================================================================
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-// =============================================================================
-class InlineHistory : public HistoryEntry {
-public:
-	IMPLEMENT_HISTORY_TYPE (Inline)
-	
-	const std::vector<ulong> ulaBitIndices, ulaRefIndices;
-	const std::vector<LDSubfile*> paRefs;
-	const bool bDeep;
-	
-	InlineHistory (const std::vector<ulong> ulaBitIndices, const std::vector<ulong> ulaRefIndices,
-		const std::vector<LDSubfile*> paRefs, const bool bDeep) :
-		ulaBitIndices (ulaBitIndices), ulaRefIndices (ulaRefIndices), paRefs (paRefs), bDeep (bDeep) {}
-};
-
-// =============================================================================
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-// =============================================================================
-class MoveHistory : public HistoryEntry {
-public:
-	IMPLEMENT_HISTORY_TYPE (Move)
-	
-	const std::vector<ulong> ulaIndices;
-	const vertex vVector;
-	
-	MoveHistory (const std::vector<ulong> ulaIndices, const vertex vVector) :
-		ulaIndices (ulaIndices), vVector (vVector) {}
-};
-
-// =============================================================================
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-// =============================================================================
-class ComboHistory : public HistoryEntry {
-public:
-	IMPLEMENT_HISTORY_TYPE (Combo)
-	
-	std::vector<HistoryEntry*> paEntries;
-	
-	ComboHistory (std::vector<HistoryEntry*> paEntries) : paEntries (paEntries) {}
-	
-	ComboHistory& operator<< (HistoryEntry* entry) {
-		paEntries.push_back (entry);
-		return *this;
-	}
-};
-
-// =============================================================================
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-// =============================================================================
-namespace History {
-	void addEntry (HistoryEntry* entry);
-	void undo ();
-	void redo ();
-	void clear ();
-	void updateActions ();
-	long pos ();
-	std::vector<HistoryEntry*>& entries ();
-};
-
-#endif // HISTORY_H
\ No newline at end of file

mercurial