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