1 /*****************************************************************************
5 ** Purpose: Header file for Document routines of CTSim program
6 ** Programmer: Kevin Rosenberg
7 ** Date Started: July 2000
9 ** This is part of the CTSim program
10 ** Copyright (c) 1983-2001 Kevin Rosenberg
12 ** $Id: docs.h,v 1.30 2001/03/11 18:52:03 kevin Exp $
14 ** This program is free software; you can redistribute it and/or modify
15 ** it under the terms of the GNU General Public License (version 2) as
16 ** published by the Free Software Foundation.
18 ** This program is distributed in the hope that it will be useful,
19 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
20 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 ** GNU General Public License for more details.
23 ** You should have received a copy of the GNU General Public License
24 ** along with this program; if not, write to the Free Software
25 ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26 ******************************************************************************/
35 #include "wx/docview.h"
38 #include "imagefile.h"
40 #include "projections.h"
42 #include "threadrecon.h"
44 class ProjectionFileView;
45 class PhantomFileView;
49 class Graph3dFileView;
51 class ImageFileDocument: public wxDocument
54 DECLARE_DYNAMIC_CLASS(ImageFileDocument)
55 ImageFile* m_pImageFile;
59 virtual bool OnSaveDocument (const wxString& filename);
60 virtual bool OnOpenDocument (const wxString& filename);
61 virtual bool IsModified () const;
62 virtual bool Revert ();
63 virtual void Modify (bool mod);
66 : m_bBadFileOpen(false)
68 m_pImageFile = new ImageFile;
71 virtual ~ImageFileDocument ()
76 const ImageFile& getImageFile() const { return *m_pImageFile; }
77 ImageFile& getImageFile() { return *m_pImageFile; }
78 void setImageFile (ImageFile* pImageFile)
81 m_pImageFile = pImageFile;
84 ImageFileView* getView() const;
85 bool getBadFileOpen() const { return m_bBadFileOpen; }
86 void setBadFileOpen() { m_bBadFileOpen = true; }
90 class BackgroundProcessingDocument : public wxDocument
93 DECLARE_DYNAMIC_CLASS(BackgroundProcessingDocument)
95 typedef BackgroundSupervisor BackgroundObject;
96 typedef std::vector<BackgroundObject*> BackgroundContainer;
97 BackgroundContainer m_vecpBackgroundSupervisors;
98 wxCriticalSection m_criticalSection;
102 BackgroundProcessingDocument()
106 void cancelRunningTasks();
107 #ifdef HAVE_WXTHREADS
108 void addBackgroundSupervisor (BackgroundSupervisor* pSupervisor);
109 void removeBackgroundSupervisor (BackgroundSupervisor* pSupervisor);
112 DECLARE_EVENT_TABLE()
115 class ProjectionFileDocument: public BackgroundProcessingDocument
118 DECLARE_DYNAMIC_CLASS(ProjectionFileDocument)
119 Projections* m_pProjectionFile;
123 virtual bool OnSaveDocument (const wxString& filename);
124 virtual bool OnOpenDocument (const wxString& filename);
125 virtual bool IsModified () const;
126 virtual void Modify (bool mod);
128 ProjectionFileDocument ()
129 : m_bBadFileOpen(false)
131 m_pProjectionFile = new Projections;
134 virtual ~ProjectionFileDocument ();
136 const Projections& getProjections () const { return *m_pProjectionFile; }
137 Projections& getProjections () { return *m_pProjectionFile; }
139 void setProjections (Projections* pProjections)
140 { delete m_pProjectionFile;
141 m_pProjectionFile = pProjections;
144 ProjectionFileView* getView() const;
145 bool getBadFileOpen() const { return m_bBadFileOpen; }
146 void setBadFileOpen() { m_bBadFileOpen = true; }
151 class PhantomFileDocument: public BackgroundProcessingDocument
154 DECLARE_DYNAMIC_CLASS(PhantomFileDocument)
157 wxString m_namePhantom;
161 PhantomFileDocument ()
162 : m_idPhantom(Phantom::PHM_INVALID), m_bBadFileOpen(false)
165 virtual ~PhantomFileDocument ();
167 const int getPhantomID () const { return m_idPhantom; }
169 const wxString& getPhantomName () const { return m_namePhantom; }
171 const Phantom& getPhantom () const { return m_phantom; }
173 Phantom& getPhantom () { return m_phantom; }
175 virtual bool OnOpenDocument (const wxString& filename);
176 virtual bool OnSaveDocument (const wxString& filename);
177 virtual bool IsModified () const;
178 virtual void Modify (bool mod);
179 PhantomFileView* getView() const;
180 bool getBadFileOpen() const { return m_bBadFileOpen; }
181 void setBadFileOpen() { m_bBadFileOpen = true; }
186 class PlotFileDocument: public wxDocument
189 DECLARE_DYNAMIC_CLASS(PlotFileDocument)
196 : m_bBadFileOpen(false)
199 virtual ~PlotFileDocument ()
202 const wxString& getPlotName () const
203 { return m_namePlot; }
205 const PlotFile& getPlotFile () const
208 PlotFile& getPlotFile ()
211 virtual bool OnOpenDocument (const wxString& filename);
212 virtual bool OnSaveDocument (const wxString& filename);
213 virtual bool IsModified () const;
214 virtual void Modify (bool mod);
215 PlotFileView* getView() const;
216 bool getBadFileOpen() const { return m_bBadFileOpen; }
217 void setBadFileOpen() { m_bBadFileOpen = true; }
222 class TextFileDocument: public wxDocument
225 DECLARE_DYNAMIC_CLASS(TextFileDocument)
229 TextFileDocument(void)
230 : m_bBadFileOpen(false)
233 virtual ~TextFileDocument(void) {}
235 virtual bool OnSaveDocument(const wxString& filename);
236 virtual bool OnOpenDocument(const wxString& filename);
237 virtual bool IsModified(void) const;
239 wxTextCtrl* getTextCtrl();
241 TextFileView* getView() const;
242 bool getBadFileOpen() const { return m_bBadFileOpen; }
243 void setBadFileOpen() { m_bBadFileOpen = true; }
251 typedef GLfloat glTripleFloat[3];
253 class Graph3dFileDocument: public wxDocument
255 friend Graph3dFileView;
258 DECLARE_DYNAMIC_CLASS(Graph3dFileDocument)
261 glTripleFloat* m_pVertices;
262 glTripleFloat* m_pNormals;
265 ImageFileArray m_array;
268 Graph3dFileDocument(void);
269 virtual ~Graph3dFileDocument(void);
271 virtual bool OnSaveDocument (const wxString& filename);
272 virtual bool OnOpenDocument (const wxString& filename);
273 virtual bool IsModified () const;
275 Graph3dFileView* getView() const;
276 bool getBadFileOpen() const { return m_bBadFileOpen; }
277 void setBadFileOpen() { m_bBadFileOpen = true; }
278 bool createFromImageFile (const ImageFile& rImageFile);
280 int nx() const { return m_nx; }
281 int ny() const { return m_ny; }
282 ImageFileArray getArray() { return m_array; }
283 ImageFileArrayConst getArray() const { return m_array; }
286 #endif // wxUSE_GLCANVAS