summaryrefslogtreecommitdiffhomepage
path: root/Magic2/MagicDoc.h
blob: 624284222336e181fd984d48c3c90c43d9e8eff4 (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
/*  Starshatter: The Open Source Project
    Copyright (c) 2021-2022, Starshatter: The Open Source Project Contributors
    Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors
    Copyright (c) 1997-2006, Destroyer Studios LLC.

    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_)