Update copyright date; remove old CVS keyword
[ctsim.git] / src / docs.h
index 54fa2a4ed3107e6fa41176c3b56d038d14c93425..670a6b21afe5594a513013b83a5159b3ec03be7b 100644 (file)
@@ -7,9 +7,7 @@
 **   Date Started:  July 2000
 **
 **  This is part of the CTSim program
-**  Copyright (c) 1983-2001 Kevin Rosenberg
-**
-**  $Id: docs.h,v 1.17 2001/01/30 05:05:41 kevin Exp $
+**  Copyright (c) 1983-2009 Kevin Rosenberg
 **
 **  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
 **  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 ******************************************************************************/
 
-#ifdef __GNUG__
-// #pragma interface
-#endif
-
 #ifndef __DOCSH__
 #define __DOCSH__
 
 #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
 {
@@ -59,14 +56,14 @@ public:
     virtual bool IsModified () const;
     virtual bool Revert ();
     virtual void Modify (bool mod);
-    
-    ImageFileDocument () 
+
+    ImageFileDocument ()
       : m_bBadFileOpen(false)
     {
       m_pImageFile = new ImageFile;
     }
 
-    virtual ~ImageFileDocument () 
+    virtual ~ImageFileDocument ()
     {
       delete m_pImageFile;
     }
@@ -74,7 +71,7 @@ public:
     const ImageFile& getImageFile() const { return *m_pImageFile; }
     ImageFile& getImageFile() { return *m_pImageFile; }
     void setImageFile (ImageFile* pImageFile)
-    { 
+    {
       delete m_pImageFile;
       m_pImageFile = pImageFile;
     }
@@ -82,10 +79,35 @@ public:
     ImageFileView* getView() const;
     bool getBadFileOpen() const { return m_bBadFileOpen; }
     void setBadFileOpen() { m_bBadFileOpen = true; }
+    void Activate();
 };
 
+class BackgroundProcessingDocument : public wxDocument
+{
+private:
+    DECLARE_DYNAMIC_CLASS(BackgroundProcessingDocument)
+#ifdef HAVE_WXTHREADS
+    typedef BackgroundSupervisor BackgroundObject;
+    typedef std::vector<BackgroundObject*> BackgroundContainer;
+    BackgroundContainer m_vecpBackgroundSupervisors;
+    wxCriticalSection m_criticalSection;
+#endif
+
+public:
+  BackgroundProcessingDocument()
+    : wxDocument()
+      {}
+
+  void cancelRunningTasks();
+#ifdef HAVE_WXTHREADS
+  void addBackgroundSupervisor (BackgroundSupervisor* pSupervisor);
+  void removeBackgroundSupervisor (BackgroundSupervisor* pSupervisor);
+#endif
+
+  DECLARE_EVENT_TABLE()
+};
 
-class ProjectionFileDocument: public wxDocument
+class ProjectionFileDocument: public BackgroundProcessingDocument
 {
 private:
     DECLARE_DYNAMIC_CLASS(ProjectionFileDocument)
@@ -97,20 +119,17 @@ public:
     virtual bool OnOpenDocument (const wxString& filename);
     virtual bool IsModified () const;
     virtual void Modify (bool mod);
-    
-    ProjectionFileDocument () 
+
+    ProjectionFileDocument ()
           : m_bBadFileOpen(false)
     {
       m_pProjectionFile = new Projections;
     }
 
-    virtual ~ProjectionFileDocument () 
-    {
-      delete m_pProjectionFile;
-    }
+    virtual ~ProjectionFileDocument ();
 
-    const Projections& getProjections () const { return *m_pProjectionFile; }
-    Projections& getProjections ()     { return *m_pProjectionFile; }
+    const Projections& getProjections () const  { return *m_pProjectionFile; }
+    Projections& getProjections ()      { return *m_pProjectionFile; }
 
     void setProjections (Projections* pProjections)
     { delete m_pProjectionFile;
@@ -120,10 +139,11 @@ public:
     ProjectionFileView* getView() const;
     bool getBadFileOpen() const { return m_bBadFileOpen; }
     void setBadFileOpen() { m_bBadFileOpen = true; }
+    void Activate();
 };
 
 
-class PhantomFileDocument: public wxDocument
+class PhantomFileDocument: public BackgroundProcessingDocument
 {
 private:
     DECLARE_DYNAMIC_CLASS(PhantomFileDocument)
@@ -133,20 +153,19 @@ private:
     bool m_bBadFileOpen;
 
 public:
-    PhantomFileDocument () 
-       : m_idPhantom(Phantom::PHM_INVALID), m_bBadFileOpen(false)
+    PhantomFileDocument ()
+        : m_idPhantom(Phantom::PHM_INVALID), m_bBadFileOpen(false)
     {}
 
-    virtual ~PhantomFileDocument () 
-    {}
+    virtual ~PhantomFileDocument ();
 
     const int getPhantomID () const { return m_idPhantom; }
 
     const wxString& getPhantomName () const { return m_namePhantom; }
 
-    const Phantom& getPhantom () const         { return m_phantom; }
+    const Phantom& getPhantom () const  { return m_phantom; }
 
-    Phantom& getPhantom ()     { return m_phantom; }
+    Phantom& getPhantom ()      { return m_phantom; }
 
     virtual bool OnOpenDocument (const wxString& filename);
     virtual bool OnSaveDocument (const wxString& filename);
@@ -155,6 +174,7 @@ public:
     PhantomFileView* getView() const;
     bool getBadFileOpen() const { return m_bBadFileOpen; }
     void setBadFileOpen() { m_bBadFileOpen = true; }
+    void Activate();
 };
 
 
@@ -167,21 +187,21 @@ private:
     bool m_bBadFileOpen;
 
 public:
-    PlotFileDocument () 
+    PlotFileDocument ()
       : m_bBadFileOpen(false)
     {}
 
-    virtual ~PlotFileDocument () 
-       {}
+    virtual ~PlotFileDocument ()
+        {}
 
     const wxString& getPlotName () const
-       { return m_namePlot; }
+        { return m_namePlot; }
 
     const PlotFile& getPlotFile () const
-       { return m_plot; }
+        { return m_plot; }
 
     PlotFile& getPlotFile ()
-       { return m_plot; }
+        { return m_plot; }
 
     virtual bool OnOpenDocument (const wxString& filename);
     virtual bool OnSaveDocument (const wxString& filename);
@@ -190,6 +210,7 @@ public:
     PlotFileView* getView() const;
     bool getBadFileOpen() const { return m_bBadFileOpen; }
     void setBadFileOpen() { m_bBadFileOpen = true; }
+    void Activate();
 };
 
 
@@ -200,7 +221,7 @@ class TextFileDocument: public wxDocument
   bool m_bBadFileOpen;
 
  public:
-  TextFileDocument(void) 
+  TextFileDocument(void)
         : m_bBadFileOpen(false)
   {}
 
@@ -218,4 +239,46 @@ class TextFileDocument: public wxDocument
 };
 
 
+#if wxUSE_GLCANVAS
+#include <GL/gl.h>
+#include <GL/glu.h>
+
+typedef GLfloat glTripleFloat[3];
+
+class Graph3dFileDocument: public wxDocument
+{
+  friend class 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; }
+  void Activate();
+};
+#endif // wxUSE_GLCANVAS
+
+
 #endif