1 #ifndef __IMAGEMPR__H__
2 #define __IMAGEMPR__H__
7 #include <QApplication>
11 #include <vtkSmartPointer.h>
12 #include <cpExtensions/Visualization/MPRObjects.h>
15 #include <cpPlugins/Interface/Plugins.h>
17 // -------------------------------------------------------------------------
23 //==========================================================================
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;
34 //typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
51 // MementoState(long id, TPluginImage* _img)
53 // char * base = "state";
54 // std::ostringstream oss;
56 // std::string str = oss.str();
57 // auto complement = str.c_str();
59 // std::string fileName(base);
60 // fileName.append(complement);
61 // fileName.append(".mhd");
63 // std::string fileNameRaw(base);
64 // fileNameRaw.append(complement);
65 // fileNameRaw.append(".raw");
66 // save(fileName, fileNameRaw, _img);
69 // vtkSmartPointer<vtkMetaImageReader> getMemento(long id)
71 // char * base = "state";
72 // std::ostringstream oss;
74 // std::string str = oss.str();
75 // auto complement = str.c_str();
77 // std::string fileName(base);
78 // fileName.append(complement);
79 // fileName.append(".mhd");
80 // return load(fileName);
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());
92 // vtkSmartPointer<vtkMetaImageReader> load(const std::string& filename) {
93 // vtkSmartPointer<vtkMetaImageReader> reader =
94 // vtkSmartPointer<vtkMetaImageReader>::New();
95 // reader->SetFileName(filename.c_str());
102 //==========================================================================
104 // -------------------------------------------------------------------------
116 typedef ImageMPR Self;
117 typedef QMainWindow Superclass;
119 typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
120 typedef cpPlugins::Interface::Plugins TPlugins;
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;
136 explicit ImageMPR( QWidget* parent = 0 );
137 virtual ~ImageMPR( );
140 inline void _Block( )
142 QApplication::setOverrideCursor( Qt::WaitCursor );
143 this->setEnabled( false );
145 inline void _Unblock( )
147 QApplication::restoreOverrideCursor( );
148 this->setEnabled( true );
153 bool _LoadPlugins( const std::string& filename );
154 std::string _LoadImage( TPluginImage::Pointer& image );
155 std::string _ConfigureMeshActors( );
160 void _aOpenDICOMSeries( );
161 void _aOpenSegmentation( );
162 void _aOpenPolyData( );
164 void _aSaveSegmentation( );
165 void _aSavePolyData( );
168 void _aLoadPlugins( );
169 void _aShowPlugins( );
178 TPlugins::TImage::Pointer m_MainImage;
179 std::vector< TPlugins::TMesh::Pointer > m_Meshes;
183 TPluginsInterface m_Plugins;
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;
193 TPluginImage::Pointer m_Image;
194 TPluginImage::Pointer m_Segmentation;
195 TPluginMesh::Pointer m_Mesh;
198 TPluginFilter::Pointer m_Cutters[ 3 ];
199 TPluginImplicitFunction::Pointer m_Planes[ 3 ];
201 // Visualization stuff
202 vtkSmartPointer< TMPRObjects > m_MPRObjects;
205 unsigned long m_state;
206 unsigned long m_max_state;
210 vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget;
214 #endif // __IMAGEMPR__H__