]> Shamusworld >> Repos - guemap/blob - src/mapdoc.h
Fix room adding to work properly, misc. small changes.
[guemap] / src / mapdoc.h
1 //
2 // GUEmap
3 // (C) 1997-2007 by Christopher J. Madsen
4 // (C) 2019 James Hammons
5 //
6 // GUEmap is licensed under either version 2 of the GPL, or (at your option)
7 // any later version.  See LICENSE file for details.
8 //
9 // mapdoc.h: interface of the MapDoc class
10 //
11
12 #ifndef __MAPDOC_H__
13 #define __MAPDOC_H__
14
15 #include <QtWidgets>
16 #include <stdio.h>
17 //#include <stdint.h>
18 #include "globals.h"
19
20 const long
21         dupDeletedRoom    = 1,
22         dupNavigationMode = 2,
23         dupRoomComment    = 3,
24         dupPageCount      = 4;
25
26 extern const RoomCorner oppositeCorner[rcNumCorners];
27
28 const QSize defaultRoomSize(roomWidth, roomHeight);
29
30 class UndoRec;
31
32 class MapDoc
33 {
34         public:
35                 RoomArray room;
36                 EdgeVec   edge;
37                 PageVec   page;
38                 string    name;
39                 string    note;
40                 QSize     docSize;
41                 QSize     pageSize;
42                 UndoRec * undoData;
43                 bool      needBackup;
44                 string filename;
45                 bool isDirty;
46                 bool locked;
47
48         // Stuff that needs implementation
49         public:
50                 void UpdateAllViews(void *, int, void *) { /* SORRY, NOTHING */ }
51
52                 MapDoc();
53                 virtual ~MapDoc();
54
55 #if 0
56         // Overrides
57         public:
58                 virtual CFile * GetFile(const char * fileName, unsigned int openFlags, CFileException * error);
59
60         protected:
61                 virtual bool DoSave(const char * pathName, bool replace = TRUE);
62
63         // ClassWizard generated virtual function overrides
64         //{{AFX_VIRTUAL(MapDoc)
65         public:
66                 virtual bool OnNewDocument();
67                 virtual void ReportSaveLoadException(const char * lpszPathName, CException * e, bool bSaving, unsigned int nIDPDefault);
68                 virtual void Serialize(CArchive & ar);
69         //}}AFX_VIRTUAL
70 #endif
71                 void DeleteContents(void);
72
73         public:
74                 void getGridRect(QRect & rect);
75                 void getGridSize(QSize & size);
76                 void setUndoData(UndoRec * newUndo);
77                 int addCorner(RoomNum r, int e);
78                 void addEdge(const MapEdge & newEdge);
79                 void addEdges(int n);
80                 void deleteCorner(RoomNum r);
81                 void deleteEdge(int n);
82                 int findEdge(RoomNum n, RoomCorner corner, MapEdge & newEdge) const;
83                 int findOtherEnd(EdgeConstItr start, RoomNumVec * cornerRooms = NULL) const;
84                 int findOtherEnd(int n) const;
85                 void getEdgePoints(const MapEdge & e, QPoint & p1, QPoint & p2) const;
86                 void getEdgePoints(int n, QPoint & p1, QPoint & p2) const;
87                 void getEdgeRect(const MapEdge & e, QRect & r) const;
88                 void addPage(int n, const MapPage & newPage);
89                 void addPages(int n);
90                 void addPages(const PageVec & newPages);
91                 void deletePage(int n);
92                 QRect getPageRect(int p);
93                 QRect getPageRect(const MapPage & p);
94                 void layoutPages();
95                 void movePage(int n, const QSize & offset);
96                 bool needRepaginate();
97                 int pageBorderHit(const QPoint & pos);
98
99                 int addRoom(const QPoint & pos);
100                 void addRoom(int n, MapRoom * newRoom);
101                 void addRooms(int n);
102                 MapRoom * extractRoom(int n);
103                 void deleteRoom(int n);
104                 int findRoom(const QPoint & pos) const;
105                 void moveRoom(int n, const QSize & offset);
106                 int roomHit(const QPoint & pos, RoomCorner * corner = NULL);
107                 RoomCorner CornerHit(const QPoint & pos);
108                 void setName(const char * newName);
109                 void setNote(const char * newNote);
110                 void setRoomFlags(int n, RoomFlags set, RoomFlags clear = 0);
111                 void setRoomName(int n, const char * newName);
112                 void setRoomNote(int n, const char * newNote);
113                 void shortestPath(string & path, RoomNum start, RoomNum end) const;
114
115 #if 0
116         // Generated message map functions
117         protected:
118         //{{AFX_MSG(MapDoc)
119                 afx_msg void OnNavigationMode();
120 //              afx_msg void OnEditUndo();
121                 afx_msg void OnFileExport();
122 //              afx_msg void OnUpdateEditUndo(CCmdUI * pCmdUI);
123                 afx_msg void OnUpdateNavigationMode(CCmdUI * pCmdUI);
124                 afx_msg void OnEditMoveMap(unsigned int cmd);
125                 afx_msg void OnUpdateEditMoveMap(CCmdUI * pCmdUI);
126         //}}AFX_MSG
127 #endif
128 };
129
130 #if 0
131 class RoomScrap
132 {
133         protected:
134                 EdgeVec   edges;
135                 PageVec   pages;
136                 RoomArray rooms;
137
138         public:
139                 RoomScrap(const MapDoc & doc, int numSelected, const ByteVec & selectedRooms, int numSelectedPages, const ByteVec & selectedPages);
140                 ~RoomScrap() {}
141                 UndoRec * paste(MapDoc & doc) const;
142 };
143 #endif
144
145 #endif  // __MAPDOC_H__