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