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>
17 #include <cpPlugins/Interface/BasePluginsApplication.h>
19 // -------------------------------------------------------------------------
25 //==========================================================================
27 //typedef cpPlugins::Interface::Interface TPluginsInterface;
28 //typedef cpPlugins::Interface::Object TPluginObject;
29 //typedef cpPlugins::Interface::DataObject TPluginData;
30 //typedef cpPlugins::Interface::Image TPluginImage;
31 //typedef cpPlugins::Interface::ImplicitFunction TPluginImplicitFunction;
32 //typedef cpPlugins::Interface::Mesh TPluginMesh;
33 //typedef cpPlugins::Interface::ProcessObject TPluginFilter;
34 //typedef cpPlugins::Interface::Parameters TParameters;
36 //typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
53 // MementoState(long id, TPluginImage* _img)
55 // char * base = "state";
56 // std::ostringstream oss;
58 // std::string str = oss.str();
59 // auto complement = str.c_str();
61 // std::string fileName(base);
62 // fileName.append(complement);
63 // fileName.append(".mhd");
65 // std::string fileNameRaw(base);
66 // fileNameRaw.append(complement);
67 // fileNameRaw.append(".raw");
68 // save(fileName, fileNameRaw, _img);
71 // vtkSmartPointer<vtkMetaImageReader> getMemento(long id)
73 // char * base = "state";
74 // std::ostringstream oss;
76 // std::string str = oss.str();
77 // auto complement = str.c_str();
79 // std::string fileName(base);
80 // fileName.append(complement);
81 // fileName.append(".mhd");
82 // return load(fileName);
85 // void save(const std::string& filename, const std::string& filenameRaw, TPluginImage* img) {
86 // vtkSmartPointer<vtkMetaImageWriter> writer =
87 // vtkSmartPointer<vtkMetaImageWriter>::New();
88 // writer->SetInputData(img->GetVTK< vtkImageData >());
89 // writer->SetFileName(filename.c_str());
90 // writer->SetRAWFileName(filenameRaw.c_str());
94 // vtkSmartPointer<vtkMetaImageReader> load(const std::string& filename) {
95 // vtkSmartPointer<vtkMetaImageReader> reader =
96 // vtkSmartPointer<vtkMetaImageReader>::New();
97 // reader->SetFileName(filename.c_str());
104 //==========================================================================
106 // -------------------------------------------------------------------------
113 : public QMainWindow,
114 public cpPlugins::Interface::BasePluginsApplication
119 typedef ImageMPR Self;
120 typedef QMainWindow Superclass;
122 typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
123 typedef cpPlugins::Interface::Plugins TPlugins;
127 typedef cpPlugins::Interface::Interface TPluginsInterface;
128 typedef cpPlugins::Interface::Object TPluginObject;
129 typedef cpPlugins::Interface::DataObject TPluginData;
130 typedef cpPlugins::Interface::Image TPluginImage;
131 typedef cpPlugins::Interface::ImplicitFunction TPluginImplicitFunction;
132 typedef cpPlugins::Interface::Mesh TPluginMesh;
133 typedef cpPlugins::Interface::ProcessObject TPluginFilter;
134 typedef cpPlugins::Interface::Parameters TParameters;
135 typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
139 explicit ImageMPR( QWidget* parent = 0 );
140 virtual ~ImageMPR( );
142 virtual void UpdateActualFilter( );
146 inline void _Block( )
148 QApplication::setOverrideCursor( Qt::WaitCursor );
149 this->setEnabled( false );
151 inline void _Unblock( )
153 QApplication::restoreOverrideCursor( );
154 this->setEnabled( true );
160 bool _LoadPlugins( const std::string& filename );
161 std::string _LoadImage( TPluginImage::Pointer& image );
162 std::string _ConfigureMeshActors( );
167 void _aOpenDICOMSeries( );
168 void _aOpenSegmentation( );
169 void _aOpenPolyData( );
171 void _aSaveSegmentation( );
172 void _aSavePolyData( );
175 void _aLoadPlugins( );
176 void _aShowPlugins( );
186 typedef std::pair< std::string, TPlugins::TDataObject::Pointer > TTreeNode;
187 typedef std::map< std::string, TTreeNode > TTree;
190 // Active filter (for modal configuration)
191 TPlugins::TProcessObject::Pointer m_ActiveFilter;
196 TPluginsInterface m_Plugins;
198 // Needed object from plugins
199 std::string m_ImageReaderClass;
200 std::string m_ImageWriterClass;
201 std::string m_MeshReaderClass;
202 std::string m_MeshWriterClass;
203 std::string m_MeshCutterClass;
206 TPluginImage::Pointer m_Image;
207 TPluginImage::Pointer m_Segmentation;
208 TPluginMesh::Pointer m_Mesh;
211 TPluginFilter::Pointer m_Cutters[ 3 ];
212 TPluginImplicitFunction::Pointer m_Planes[ 3 ];
214 // Visualization stuff
215 vtkSmartPointer< TMPRObjects > m_MPRObjects;
218 unsigned long m_state;
219 unsigned long m_max_state;
223 vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget;
227 #endif // __IMAGEMPR__H__