1 #ifndef __IMAGEMPR__H__
2 #define __IMAGEMPR__H__
8 #include <QApplication>
12 #include <vtkSmartPointer.h>
13 #include <cpExtensions/Visualization/MPRObjects.h>
16 #include <cpPlugins/Interface/Plugins.h>
18 // -------------------------------------------------------------------------
24 //==========================================================================
26 //typedef cpPlugins::Interface::Interface TPluginsInterface;
27 //typedef cpPlugins::Interface::Object TPluginObject;
28 //typedef cpPlugins::Interface::DataObject TPluginData;
29 //typedef cpPlugins::Interface::Image TPluginImage;
30 //typedef cpPlugins::Interface::ImplicitFunction TPluginImplicitFunction;
31 //typedef cpPlugins::Interface::Mesh TPluginMesh;
32 //typedef cpPlugins::Interface::ProcessObject TPluginFilter;
33 //typedef cpPlugins::Interface::Parameters TParameters;
35 //typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
52 // MementoState(long id, TPluginImage* _img)
54 // char * base = "state";
55 // std::ostringstream oss;
57 // std::string str = oss.str();
58 // auto complement = str.c_str();
60 // std::string fileName(base);
61 // fileName.append(complement);
62 // fileName.append(".mhd");
64 // std::string fileNameRaw(base);
65 // fileNameRaw.append(complement);
66 // fileNameRaw.append(".raw");
67 // save(fileName, fileNameRaw, _img);
70 // vtkSmartPointer<vtkMetaImageReader> getMemento(long id)
72 // char * base = "state";
73 // std::ostringstream oss;
75 // std::string str = oss.str();
76 // auto complement = str.c_str();
78 // std::string fileName(base);
79 // fileName.append(complement);
80 // fileName.append(".mhd");
81 // return load(fileName);
84 // void save(const std::string& filename, const std::string& filenameRaw, TPluginImage* img) {
85 // vtkSmartPointer<vtkMetaImageWriter> writer =
86 // vtkSmartPointer<vtkMetaImageWriter>::New();
87 // writer->SetInputData(img->GetVTK< vtkImageData >());
88 // writer->SetFileName(filename.c_str());
89 // writer->SetRAWFileName(filenameRaw.c_str());
93 // vtkSmartPointer<vtkMetaImageReader> load(const std::string& filename) {
94 // vtkSmartPointer<vtkMetaImageReader> reader =
95 // vtkSmartPointer<vtkMetaImageReader>::New();
96 // reader->SetFileName(filename.c_str());
103 //==========================================================================
105 // -------------------------------------------------------------------------
117 typedef ImageMPR Self;
118 typedef QMainWindow Superclass;
120 typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
121 typedef cpPlugins::Interface::Plugins TPlugins;
125 typedef cpPlugins::Interface::Interface TPluginsInterface;
126 typedef cpPlugins::Interface::Object TPluginObject;
127 typedef cpPlugins::Interface::DataObject TPluginData;
128 typedef cpPlugins::Interface::Image TPluginImage;
129 typedef cpPlugins::Interface::ImplicitFunction TPluginImplicitFunction;
130 typedef cpPlugins::Interface::Mesh TPluginMesh;
131 typedef cpPlugins::Interface::ProcessObject TPluginFilter;
132 typedef cpPlugins::Interface::Parameters TParameters;
133 typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
137 explicit ImageMPR( QWidget* parent = 0 );
138 virtual ~ImageMPR( );
141 inline void _Block( )
143 QApplication::setOverrideCursor( Qt::WaitCursor );
144 this->setEnabled( false );
146 inline void _Unblock( )
148 QApplication::restoreOverrideCursor( );
149 this->setEnabled( true );
154 bool _LoadPlugins( const std::string& filename );
155 std::string _LoadImage( TPluginImage::Pointer& image );
156 std::string _ConfigureMeshActors( );
161 void _aOpenDICOMSeries( );
162 void _aOpenSegmentation( );
163 void _aOpenPolyData( );
165 void _aSaveSegmentation( );
166 void _aSavePolyData( );
169 void _aLoadPlugins( );
170 void _aShowPlugins( );
179 typedef std::pair< std::string, TPlugins::TDataObject::Pointer > TTreeNode;
180 typedef std::map< std::string, TTreeNode > TTree;
185 TPluginsInterface m_Plugins;
187 // Needed object from plugins
188 std::string m_ImageReaderClass;
189 std::string m_ImageWriterClass;
190 std::string m_MeshReaderClass;
191 std::string m_MeshWriterClass;
192 std::string m_MeshCutterClass;
195 TPluginImage::Pointer m_Image;
196 TPluginImage::Pointer m_Segmentation;
197 TPluginMesh::Pointer m_Mesh;
200 TPluginFilter::Pointer m_Cutters[ 3 ];
201 TPluginImplicitFunction::Pointer m_Planes[ 3 ];
203 // Visualization stuff
204 vtkSmartPointer< TMPRObjects > m_MPRObjects;
207 unsigned long m_state;
208 unsigned long m_max_state;
212 vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget;
216 #endif // __IMAGEMPR__H__