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/BaseApplication.h>
17 #include <cpPlugins/Interface/Plugins.h>
18 #include <cpPlugins/Interface/Image.h>
19 #include <cpPlugins/Interface/Mesh.h>
21 // -------------------------------------------------------------------------
27 //==========================================================================
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;
38 //typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
55 // MementoState(long id, TPluginImage* _img)
57 // char * base = "state";
58 // std::ostringstream oss;
60 // std::string str = oss.str();
61 // auto complement = str.c_str();
63 // std::string fileName(base);
64 // fileName.append(complement);
65 // fileName.append(".mhd");
67 // std::string fileNameRaw(base);
68 // fileNameRaw.append(complement);
69 // fileNameRaw.append(".raw");
70 // save(fileName, fileNameRaw, _img);
73 // vtkSmartPointer<vtkMetaImageReader> getMemento(long id)
75 // char * base = "state";
76 // std::ostringstream oss;
78 // std::string str = oss.str();
79 // auto complement = str.c_str();
81 // std::string fileName(base);
82 // fileName.append(complement);
83 // fileName.append(".mhd");
84 // return load(fileName);
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());
96 // vtkSmartPointer<vtkMetaImageReader> load(const std::string& filename) {
97 // vtkSmartPointer<vtkMetaImageReader> reader =
98 // vtkSmartPointer<vtkMetaImageReader>::New();
99 // reader->SetFileName(filename.c_str());
106 //==========================================================================
108 // -------------------------------------------------------------------------
112 : public QMainWindow,
113 public cpPlugins::Interface::BaseApplication
118 typedef ImageMPR Self;
119 typedef QMainWindow Superclass;
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;
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;
140 explicit ImageMPR( QWidget* parent = 0 );
141 virtual ~ImageMPR( );
143 virtual void UpdateActualFilter( );
147 inline void _Block( )
149 QApplication::setOverrideCursor( Qt::WaitCursor );
150 this->setEnabled( false );
152 inline void _Unblock( )
154 QApplication::restoreOverrideCursor( );
155 this->setEnabled( true );
160 void _AssociatePluginsToMenu( );
162 bool _LoadPlugins( const std::string& filename );
163 std::string _LoadImage( TPluginImage::Pointer& image );
164 std::string _ConfigureMeshActors( );
169 void _aOpenDICOMSeries( );
170 void _aOpenSegmentation( );
171 void _aOpenPolyData( );
173 void _aSaveSegmentation( );
174 void _aSavePolyData( );
177 void _aLoadPlugins( );
178 void _aShowPlugins( );
185 std::string m_ActiveFilterMainInput;
189 typedef std::pair< std::string, TPlugins::TDataObject::Pointer > TTreeNode;
190 typedef std::map< std::string, TTreeNode > TTree;
193 // Active filter (for modal configuration)
194 TPlugins::TProcessObject::Pointer m_ActiveFilter;
199 TPluginsInterface m_Plugins;
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;
209 TPluginImage::Pointer m_Image;
210 TPluginImage::Pointer m_Segmentation;
211 TPluginMesh::Pointer m_Mesh;
214 TPluginFilter::Pointer m_Cutters[ 3 ];
215 TPluginImplicitFunction::Pointer m_Planes[ 3 ];
217 // Visualization stuff
218 vtkSmartPointer< TMPRObjects > m_MPRObjects;
221 unsigned long m_state;
222 unsigned long m_max_state;
226 vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget;
230 #endif // __IMAGEMPR__H__