]> Creatis software - cpPlugins.git/blob - appli/ImageMPR/ImageMPR.h
1cc16c9cb368ed1fa33d75f6112992e7d7ddf573
[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   // Plugins types
123   /*
124     typedef cpPlugins::Interface::Interface        TPluginsInterface;
125     typedef cpPlugins::Interface::Object           TPluginObject;
126     typedef cpPlugins::Interface::DataObject       TPluginData;
127     typedef cpPlugins::Interface::Image            TPluginImage;
128     typedef cpPlugins::Interface::ImplicitFunction TPluginImplicitFunction;
129     typedef cpPlugins::Interface::Mesh             TPluginMesh;
130     typedef cpPlugins::Interface::ProcessObject    TPluginFilter;
131     typedef cpPlugins::Interface::Parameters       TParameters;
132     typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
133   */
134
135 public:
136   explicit ImageMPR( QWidget* parent = 0 );
137   virtual ~ImageMPR( );
138
139   /*
140     protected:
141     bool _LoadPlugins( const std::string& filename );
142     std::string _LoadImage( TPluginImage::Pointer& image );
143     std::string _ConfigureMeshActors( );
144   */
145
146 private slots:
147   void _aOpenImage( );
148   void _aOpenSegmentation( );
149   void _aOpenPolyData( );
150   void _aSaveImage( );
151   void _aSaveSegmentation( );
152   void _aSavePolyData( );
153   void _aUndo( );
154   void _aRedo( );
155   void _aLoadPlugins( );
156   void _aShowPlugins( );
157
158   void _execPlugin( );
159
160 private:
161   Ui::ImageMPR* m_UI;
162
163   // Some state flags
164   bool m_ImageLoaded;
165
166   // Plugins objects
167   /*
168     TPluginsInterface m_Plugins;
169
170     // Needed object from plugins
171     std::string m_ImageReaderClass;
172     std::string m_ImageWriterClass;
173     std::string m_MeshReaderClass;
174     std::string m_MeshWriterClass;
175     std::string m_MeshCutterClass;
176
177     // Real data
178     TPluginImage::Pointer m_Image;
179     TPluginImage::Pointer m_Segmentation;
180     TPluginMesh::Pointer  m_Mesh;
181
182     // Cutters
183     TPluginFilter::Pointer m_Cutters[ 3 ];
184     TPluginImplicitFunction::Pointer m_Planes[ 3 ];
185
186     // Visualization stuff
187     vtkSmartPointer< TMPRObjects > m_MPRObjects;
188
189     // Memento stuff
190     unsigned long m_state;
191     unsigned long m_max_state;
192   */
193
194   /* TODO
195      vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget;
196   */
197 };
198
199 #endif // __IMAGEMPR__H__
200
201 // eof - $RCSfile$