r582: no message
[ctsim.git] / src / docs.h
index 9d09e879ea61c163edb039e2db4f09977c2fa3ff..f841bcdfe51489dd296182f43dc78522ad254362 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: docs.h,v 1.16 2001/01/30 02:20:50 kevin Exp $
+**  $Id: docs.h,v 1.25 2001/02/25 10:52:55 kevin Exp $
 **
 **  This program is free software; you can redistribute it and/or modify
 **  it under the terms of the GNU General Public License (version 2) as
 #include "phantom.h"
 #include "projections.h"
 #include "plotfile.h"
+#include "threadrecon.h"
 
 class ProjectionFileView;
 class PhantomFileView;
 class ImageFileView;
 class PlotFileView;
 class TextFileView;
+class Graph3dFileView;
 
 class ImageFileDocument: public wxDocument
 {
 private:
     DECLARE_DYNAMIC_CLASS(ImageFileDocument)
-    ImageFile m_imageFile;
+    ImageFile* m_pImageFile;
     bool m_bBadFileOpen;
 
 public:
     virtual bool OnSaveDocument (const wxString& filename);
     virtual bool OnOpenDocument (const wxString& filename);
     virtual bool IsModified () const;
+    virtual bool Revert ();
     virtual void Modify (bool mod);
     
     ImageFileDocument () 
       : m_bBadFileOpen(false)
-    {}
-
-    virtual ~ImageFileDocument () {}
+    {
+      m_pImageFile = new ImageFile;
+    }
+
+    virtual ~ImageFileDocument () 
+    {
+      delete m_pImageFile;
+    }
+
+    const ImageFile& getImageFile() const { return *m_pImageFile; }
+    ImageFile& getImageFile() { return *m_pImageFile; }
+    void setImageFile (ImageFile* pImageFile)
+    { 
+      delete m_pImageFile;
+      m_pImageFile = pImageFile;
+    }
 
-    const ImageFile& getImageFile() const { return m_imageFile; }
-
-    ImageFile& getImageFile() { return m_imageFile; }
     ImageFileView* getView() const;
     bool getBadFileOpen() const { return m_bBadFileOpen; }
+    void setBadFileOpen() { m_bBadFileOpen = true; }
 };
 
+class BackgroundProcessingDocument : public wxDocument
+{
+private:
+    DECLARE_DYNAMIC_CLASS(BackgroundProcessingDocument)
+    typedef BackgroundSupervisor BackgroundObject;
+    typedef std::vector<BackgroundObject*> BackgroundContainer;
+    BackgroundContainer m_vecpBackgroundSupervisors;
+    wxCriticalSection m_criticalSection;
+
+public:
+  BackgroundProcessingDocument()
+    : wxDocument()
+      {}
+
+  void cancelRunningTasks();
+  void OnAddBackground (wxCommandEvent& event);
+  void OnRemoveBackground (wxCommandEvent& event);
+
+  DECLARE_EVENT_TABLE()
+};
 
-class ProjectionFileDocument: public wxDocument
+class ProjectionFileDocument: public BackgroundProcessingDocument
 {
 private:
     DECLARE_DYNAMIC_CLASS(ProjectionFileDocument)
-    Projections m_projectionFile;
+    Projections* m_pProjectionFile;
     bool m_bBadFileOpen;
-
+    
 public:
     virtual bool OnSaveDocument (const wxString& filename);
     virtual bool OnOpenDocument (const wxString& filename);
@@ -88,19 +122,27 @@ public:
     
     ProjectionFileDocument () 
           : m_bBadFileOpen(false)
-    {}
+    {
+      m_pProjectionFile = new Projections;
+    }
+
+    virtual ~ProjectionFileDocument ();
 
-    virtual ~ProjectionFileDocument () {}
+    const Projections& getProjections () const { return *m_pProjectionFile; }
+    Projections& getProjections ()     { return *m_pProjectionFile; }
 
-    const Projections& getProjections () const { return m_projectionFile; }
-    Projections& getProjections ()     { return m_projectionFile; }
+    void setProjections (Projections* pProjections)
+    { delete m_pProjectionFile;
+      m_pProjectionFile = pProjections;
+    }
 
     ProjectionFileView* getView() const;
     bool getBadFileOpen() const { return m_bBadFileOpen; }
+    void setBadFileOpen() { m_bBadFileOpen = true; }
 };
 
 
-class PhantomFileDocument: public wxDocument
+class PhantomFileDocument: public BackgroundProcessingDocument
 {
 private:
     DECLARE_DYNAMIC_CLASS(PhantomFileDocument)
@@ -131,6 +173,7 @@ public:
     virtual void Modify (bool mod);
     PhantomFileView* getView() const;
     bool getBadFileOpen() const { return m_bBadFileOpen; }
+    void setBadFileOpen() { m_bBadFileOpen = true; }
 };
 
 
@@ -165,6 +208,7 @@ public:
     virtual void Modify (bool mod);
     PlotFileView* getView() const;
     bool getBadFileOpen() const { return m_bBadFileOpen; }
+    void setBadFileOpen() { m_bBadFileOpen = true; }
 };
 
 
@@ -189,7 +233,49 @@ class TextFileDocument: public wxDocument
 
   TextFileView* getView() const;
   bool getBadFileOpen() const { return m_bBadFileOpen; }
+  void setBadFileOpen() { m_bBadFileOpen = true; }
+};
+
+
+#if wxUSE_GLCANVAS
+#include <GL/gl.h>
+#include <GL/glu.h>
+
+typedef GLfloat glTripleFloat[3];
+
+class Graph3dFileDocument: public wxDocument
+{
+  friend Graph3dFileView;
+
+ private:
+  DECLARE_DYNAMIC_CLASS(Graph3dFileDocument)
+  bool m_bBadFileOpen;
+  GLint m_nVertices;
+  glTripleFloat* m_pVertices;
+  glTripleFloat* m_pNormals;
+  unsigned int m_nx;
+  unsigned int m_ny;
+  ImageFileArray m_array;
+
+ public:
+  Graph3dFileDocument(void);
+  virtual ~Graph3dFileDocument(void); 
+  virtual bool OnSaveDocument (const wxString& filename);
+  virtual bool OnOpenDocument (const wxString& filename);
+  virtual bool IsModified () const;
+
+  Graph3dFileView* getView() const;
+  bool getBadFileOpen() const { return m_bBadFileOpen; }
+  void setBadFileOpen()       { m_bBadFileOpen = true; }
+  bool createFromImageFile (const ImageFile& rImageFile);
+
+  int nx() const  { return m_nx; }
+  int ny() const { return m_ny; }
+  ImageFileArray getArray() { return m_array; }
+  ImageFileArrayConst getArray() const { return m_array; }
 };
+#endif // wxUSE_GLCANVAS
 
 
 #endif