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