]> Creatis software - cpPlugins.git/blob - appli/ImageMPR/ImageMPR.h
Tree data updated.
[cpPlugins.git] / appli / ImageMPR / ImageMPR.h
1 #ifndef __IMAGEMPR__H__
2 #define __IMAGEMPR__H__
3
4 #include <map>
5 #include <vector>
6
7 // Qt stuff
8 #include <QApplication>
9 #include <QMainWindow>
10
11 // vtk stuff
12 #include <vtkSmartPointer.h>
13 #include <cpExtensions/Visualization/MPRObjects.h>
14
15 // Plugins interface
16 #include <cpPlugins/Interface/Plugins.h>
17
18 // -------------------------------------------------------------------------
19 namespace Ui
20 {
21   class ImageMPR;
22 }
23
24 //==========================================================================
25 // Plugins types
26 //typedef cpPlugins::Interface::Interface        TPluginsInterface;
27 //typedef cpPlugins::Interface::Object           TPluginObject;
28 //typedef cpPlugins::Interface::DataObject       TPluginData;
29 //typedef cpPlugins::Interface::Image            TPluginImage;
30 //typedef cpPlugins::Interface::ImplicitFunction TPluginImplicitFunction;
31 //typedef cpPlugins::Interface::Mesh             TPluginMesh;
32 //typedef cpPlugins::Interface::ProcessObject    TPluginFilter;
33 //typedef cpPlugins::Interface::Parameters       TParameters;
34 //
35 //typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
36
37
38
39
40 //class MementoState
41 //{
42 //private:
43 //      long m_Id;
44 //      
45 //public:
46 //      
47 //      MementoState()
48 //      {
49 //              m_Id = 0;
50 //      };
51 //
52 //      MementoState(long id, TPluginImage* _img)
53 //      {
54 //              char * base = "state";
55 //              std::ostringstream oss;
56 //              oss << id;
57 //              std::string str = oss.str();
58 //              auto complement = str.c_str();
59 //
60 //              std::string fileName(base);
61 //              fileName.append(complement);
62 //              fileName.append(".mhd");
63 //
64 //              std::string fileNameRaw(base);
65 //              fileNameRaw.append(complement);
66 //              fileNameRaw.append(".raw");
67 //              save(fileName, fileNameRaw, _img);
68 //      }
69 //
70 //      vtkSmartPointer<vtkMetaImageReader> getMemento(long id)
71 //      {
72 //              char * base = "state";
73 //              std::ostringstream oss;
74 //              oss << id;
75 //              std::string str = oss.str();
76 //              auto complement = str.c_str();
77 //
78 //              std::string fileName(base);
79 //              fileName.append(complement);
80 //              fileName.append(".mhd");
81 //              return load(fileName);
82 //      }
83 //
84 //      void save(const std::string& filename, const std::string& filenameRaw, TPluginImage* img) {
85 //              vtkSmartPointer<vtkMetaImageWriter> writer =
86 //                      vtkSmartPointer<vtkMetaImageWriter>::New();
87 //              writer->SetInputData(img->GetVTK< vtkImageData >());
88 //              writer->SetFileName(filename.c_str());
89 //              writer->SetRAWFileName(filenameRaw.c_str());
90 //              writer->Write();
91 //      }
92 //
93 //      vtkSmartPointer<vtkMetaImageReader> load(const std::string& filename) {
94 //              vtkSmartPointer<vtkMetaImageReader> reader =
95 //              vtkSmartPointer<vtkMetaImageReader>::New();
96 //              reader->SetFileName(filename.c_str());
97 //              reader->Update();       
98 //              return reader;
99 //      }
100 //
101 //};
102
103 //==========================================================================
104
105 // -------------------------------------------------------------------------
106 /**
107  */
108
109
110
111 class ImageMPR
112   : public QMainWindow
113 {
114   Q_OBJECT;
115
116 public:
117   typedef ImageMPR    Self;
118   typedef QMainWindow Superclass;
119
120   typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
121   typedef cpPlugins::Interface::Plugins           TPlugins;
122
123   // Plugins types
124   /*
125     typedef cpPlugins::Interface::Interface        TPluginsInterface;
126     typedef cpPlugins::Interface::Object           TPluginObject;
127     typedef cpPlugins::Interface::DataObject       TPluginData;
128     typedef cpPlugins::Interface::Image            TPluginImage;
129     typedef cpPlugins::Interface::ImplicitFunction TPluginImplicitFunction;
130     typedef cpPlugins::Interface::Mesh             TPluginMesh;
131     typedef cpPlugins::Interface::ProcessObject    TPluginFilter;
132     typedef cpPlugins::Interface::Parameters       TParameters;
133     typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
134   */
135
136 public:
137   explicit ImageMPR( QWidget* parent = 0 );
138   virtual ~ImageMPR( );
139
140 protected:
141   inline void _Block( )
142     {
143       QApplication::setOverrideCursor( Qt::WaitCursor );
144       this->setEnabled( false );
145     }
146   inline void _Unblock( )
147     {
148       QApplication::restoreOverrideCursor( );
149       this->setEnabled( true );
150     }
151
152   /*
153     protected:
154     bool _LoadPlugins( const std::string& filename );
155     std::string _LoadImage( TPluginImage::Pointer& image );
156     std::string _ConfigureMeshActors( );
157   */
158
159 private slots:
160   void _aOpenImage( );
161   void _aOpenDICOMSeries( );
162   void _aOpenSegmentation( );
163   void _aOpenPolyData( );
164   void _aSaveImage( );
165   void _aSaveSegmentation( );
166   void _aSavePolyData( );
167   void _aUndo( );
168   void _aRedo( );
169   void _aLoadPlugins( );
170   void _aShowPlugins( );
171
172   void _execPlugin( );
173
174 private:
175   Ui::ImageMPR* m_UI;
176   TPlugins*     m_Plugins;
177
178   // Objects
179   typedef std::pair< std::string, TPlugins::TDataObject::Pointer > TTreeNode;
180   typedef std::map< std::string, TTreeNode > TTree;
181   TTree m_Objects;
182
183   // Plugins objects
184   /*
185     TPluginsInterface m_Plugins;
186
187     // Needed object from plugins
188     std::string m_ImageReaderClass;
189     std::string m_ImageWriterClass;
190     std::string m_MeshReaderClass;
191     std::string m_MeshWriterClass;
192     std::string m_MeshCutterClass;
193
194     // Real data
195     TPluginImage::Pointer m_Image;
196     TPluginImage::Pointer m_Segmentation;
197     TPluginMesh::Pointer  m_Mesh;
198
199     // Cutters
200     TPluginFilter::Pointer m_Cutters[ 3 ];
201     TPluginImplicitFunction::Pointer m_Planes[ 3 ];
202
203     // Visualization stuff
204     vtkSmartPointer< TMPRObjects > m_MPRObjects;
205
206     // Memento stuff
207     unsigned long m_state;
208     unsigned long m_max_state;
209   */
210
211   /* TODO
212      vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget;
213   */
214 };
215
216 #endif // __IMAGEMPR__H__
217
218 // eof - $RCSfile$