]> Creatis software - cpPlugins.git/blob - appli/ImageMPR/ImageMPR.h
More widgets added
[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 _aOpenSegmentation( );
154   void _aOpenPolyData( );
155   void _aSaveImage( );
156   void _aSaveSegmentation( );
157   void _aSavePolyData( );
158   void _aUndo( );
159   void _aRedo( );
160   void _aLoadPlugins( );
161   void _aShowPlugins( );
162
163   void _execPlugin( );
164
165 private:
166   Ui::ImageMPR* m_UI;
167
168   // Some state flags
169   std::string m_ImageLoaded;
170   bool m_Flooding;
171
172   // Plugins objects
173   /*
174     TPluginsInterface m_Plugins;
175
176     // Needed object from plugins
177     std::string m_ImageReaderClass;
178     std::string m_ImageWriterClass;
179     std::string m_MeshReaderClass;
180     std::string m_MeshWriterClass;
181     std::string m_MeshCutterClass;
182
183     // Real data
184     TPluginImage::Pointer m_Image;
185     TPluginImage::Pointer m_Segmentation;
186     TPluginMesh::Pointer  m_Mesh;
187
188     // Cutters
189     TPluginFilter::Pointer m_Cutters[ 3 ];
190     TPluginImplicitFunction::Pointer m_Planes[ 3 ];
191
192     // Visualization stuff
193     vtkSmartPointer< TMPRObjects > m_MPRObjects;
194
195     // Memento stuff
196     unsigned long m_state;
197     unsigned long m_max_state;
198   */
199
200   /* TODO
201      vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget;
202   */
203 };
204
205 #endif // __IMAGEMPR__H__
206
207 // eof - $RCSfile$