]> Creatis software - cpPlugins.git/blob - appli/ImageMPR/ImageMPR.h
widget sphere update: works with mouse but is still buggy with key board
[cpPlugins.git] / appli / ImageMPR / ImageMPR.h
1 #ifndef __IMAGEMPR__H__
2 #define __IMAGEMPR__H__
3
4 #include <vector>
5
6 // Qt stuff
7 #include <QApplication>
8 #include <QMainWindow>
9
10 // vtk stuff
11 #include <vtkSmartPointer.h>
12 #include <cpExtensions/Visualization/MPRObjects.h>
13
14 // Plugins interface
15 #include <cpPlugins/Interface/Plugins.h>
16
17 // -------------------------------------------------------------------------
18 namespace Ui
19 {
20   class ImageMPR;
21 }
22
23 //==========================================================================
24 // Plugins types
25 //typedef cpPlugins::Interface::Interface        TPluginsInterface;
26 //typedef cpPlugins::Interface::Object           TPluginObject;
27 //typedef cpPlugins::Interface::DataObject       TPluginData;
28 //typedef cpPlugins::Interface::Image            TPluginImage;
29 //typedef cpPlugins::Interface::ImplicitFunction TPluginImplicitFunction;
30 //typedef cpPlugins::Interface::Mesh             TPluginMesh;
31 //typedef cpPlugins::Interface::ProcessObject    TPluginFilter;
32 //typedef cpPlugins::Interface::Parameters       TParameters;
33 //
34 //typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
35
36
37
38
39 //class MementoState
40 //{
41 //private:
42 //      long m_Id;
43 //      
44 //public:
45 //      
46 //      MementoState()
47 //      {
48 //              m_Id = 0;
49 //      };
50 //
51 //      MementoState(long id, TPluginImage* _img)
52 //      {
53 //              char * base = "state";
54 //              std::ostringstream oss;
55 //              oss << id;
56 //              std::string str = oss.str();
57 //              auto complement = str.c_str();
58 //
59 //              std::string fileName(base);
60 //              fileName.append(complement);
61 //              fileName.append(".mhd");
62 //
63 //              std::string fileNameRaw(base);
64 //              fileNameRaw.append(complement);
65 //              fileNameRaw.append(".raw");
66 //              save(fileName, fileNameRaw, _img);
67 //      }
68 //
69 //      vtkSmartPointer<vtkMetaImageReader> getMemento(long id)
70 //      {
71 //              char * base = "state";
72 //              std::ostringstream oss;
73 //              oss << id;
74 //              std::string str = oss.str();
75 //              auto complement = str.c_str();
76 //
77 //              std::string fileName(base);
78 //              fileName.append(complement);
79 //              fileName.append(".mhd");
80 //              return load(fileName);
81 //      }
82 //
83 //      void save(const std::string& filename, const std::string& filenameRaw, TPluginImage* img) {
84 //              vtkSmartPointer<vtkMetaImageWriter> writer =
85 //                      vtkSmartPointer<vtkMetaImageWriter>::New();
86 //              writer->SetInputData(img->GetVTK< vtkImageData >());
87 //              writer->SetFileName(filename.c_str());
88 //              writer->SetRAWFileName(filenameRaw.c_str());
89 //              writer->Write();
90 //      }
91 //
92 //      vtkSmartPointer<vtkMetaImageReader> load(const std::string& filename) {
93 //              vtkSmartPointer<vtkMetaImageReader> reader =
94 //              vtkSmartPointer<vtkMetaImageReader>::New();
95 //              reader->SetFileName(filename.c_str());
96 //              reader->Update();       
97 //              return reader;
98 //      }
99 //
100 //};
101
102 //==========================================================================
103
104 // -------------------------------------------------------------------------
105 /**
106  */
107
108
109
110 class ImageMPR
111   : public QMainWindow
112 {
113   Q_OBJECT;
114
115 public:
116   typedef ImageMPR    Self;
117   typedef QMainWindow Superclass;
118
119   typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
120   typedef cpPlugins::Interface::Plugins           TPlugins;
121
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 protected:
140   inline void _Block( )
141     {
142       QApplication::setOverrideCursor( Qt::WaitCursor );
143       this->setEnabled( false );
144     }
145   inline void _Unblock( )
146     {
147       QApplication::restoreOverrideCursor( );
148       this->setEnabled( true );
149     }
150
151   /*
152     protected:
153     bool _LoadPlugins( const std::string& filename );
154     std::string _LoadImage( TPluginImage::Pointer& image );
155     std::string _ConfigureMeshActors( );
156   */
157
158 private slots:
159   void _aOpenImage( );
160   void _aOpenDICOMSeries( );
161   void _aOpenSegmentation( );
162   void _aOpenPolyData( );
163   void _aSaveImage( );
164   void _aSaveSegmentation( );
165   void _aSavePolyData( );
166   void _aUndo( );
167   void _aRedo( );
168   void _aLoadPlugins( );
169   void _aShowPlugins( );
170
171   void _execPlugin( );
172
173 private:
174   Ui::ImageMPR* m_UI;
175   TPlugins*     m_Plugins;
176
177   // Objects
178   TPlugins::TImage::Pointer m_MainImage;
179   std::vector< TPlugins::TMesh::Pointer > m_Meshes;
180
181   // Plugins objects
182   /*
183     TPluginsInterface m_Plugins;
184
185     // Needed object from plugins
186     std::string m_ImageReaderClass;
187     std::string m_ImageWriterClass;
188     std::string m_MeshReaderClass;
189     std::string m_MeshWriterClass;
190     std::string m_MeshCutterClass;
191
192     // Real data
193     TPluginImage::Pointer m_Image;
194     TPluginImage::Pointer m_Segmentation;
195     TPluginMesh::Pointer  m_Mesh;
196
197     // Cutters
198     TPluginFilter::Pointer m_Cutters[ 3 ];
199     TPluginImplicitFunction::Pointer m_Planes[ 3 ];
200
201     // Visualization stuff
202     vtkSmartPointer< TMPRObjects > m_MPRObjects;
203
204     // Memento stuff
205     unsigned long m_state;
206     unsigned long m_max_state;
207   */
208
209   /* TODO
210      vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget;
211   */
212 };
213
214 #endif // __IMAGEMPR__H__
215
216 // eof - $RCSfile$