summaryrefslogtreecommitdiffhomepage
path: root/Magic2/MagicDoc.h
blob: 489f5dcb68eb71d353043a9956facde69e4658d8 (plain)
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/*  Project Magic 2.0
    Destroyer Studios LLC
    Copyright © 1997-2004. All Rights Reserved.

    SUBSYSTEM:    Magic.exe
    FILE:         MagicDoc.h
    AUTHOR:       John DiCamillo


    OVERVIEW
    ========
    Interface of the MagicDoc class
*/


#if !defined(AFX_MAGICDOC_H__8B8D63A3_30F9_4023_BFA8_DB79891487C2__INCLUDED_)
#define AFX_MAGICDOC_H__8B8D63A3_30F9_4023_BFA8_DB79891487C2__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

// +--------------------------------------------------------------------+

#include "List.h"

// +--------------------------------------------------------------------+

class Bitmap;
class Command;
class Editor;
class Solid;
class Model;
class Surface;
class Segment;
class Selection;
class Selector;

// +--------------------------------------------------------------------+

class MagicDoc : public CDocument
{
protected: // create from serialization only
	MagicDoc();
	DECLARE_DYNCREATE(MagicDoc)

// Attributes
public:

// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(MagicDoc)
	public:
	virtual BOOL OnNewDocument();
	virtual void Serialize(CArchive& ar);
	virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
	virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
	virtual void DeleteContents();
	//}}AFX_VIRTUAL

   void        InitCommandStack();
   void        Exec(Command* command);
   void        Undo();
   void        Redo();
   int         NumUndo()      const;
   int         NumRedo()      const;
   const char* GetUndoName()  const;
   const char* GetRedoName()  const;

// Implementation
public:
	virtual ~MagicDoc();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

   Solid*      GetSolid()           { return solid;      }
   Selection*  GetSelection()       { return selection;  }
   Selector*   GetSelector()        { return selector;   }
   Editor*     GetEditor()          { return editor;     }

   bool  ImportFile(LPCTSTR path_name);
   bool  ExportFile(LPCTSTR path_name);

protected:
   Solid*         solid;
   Selection*     selection;
   Selector*      selector;
   Editor*        editor;

   List<Command>  commands;
   int            nundo;

// Generated message map functions
protected:
	//{{AFX_MSG(MagicDoc)
	afx_msg void OnSurfaceOptimize();
	afx_msg void OnSurfaceExplode();
	afx_msg void OnUpdateSurfaceOptimize(CCmdUI* pCmdUI);
	afx_msg void OnUpdateSurfaceExplode(CCmdUI* pCmdUI);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

// +--------------------------------------------------------------------+

int LoadBuffer(const char* filename, BYTE*& buf, bool null_terminate=false);
int LoadTexture(const char* name, Bitmap*& bmp, int type=0);
int LoadAlpha(const char* name, Bitmap& bitmap, int type=0);

// +--------------------------------------------------------------------+

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MAGICDOC_H__8B8D63A3_30F9_4023_BFA8_DB79891487C2__INCLUDED_)