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