1 #ifndef __IMAGEMPR__H__
2 #define __IMAGEMPR__H__
10 #include <vtkSmartPointer.h>
11 #include <cpExtensions/Visualization/MPRObjects.h>
14 #include <cpPlugins/Interface/Interface.h>
15 #include <cpPlugins/Interface/ProcessObject.h>
16 #include <cpPlugins/Interface/Image.h>
17 #include <cpPlugins/Interface/ImplicitFunction.h>
18 #include <cpPlugins/Interface/Mesh.h>
19 #include <vtkMetaImageWriter.h>
20 #include <vtkMetaImageReader.h>
23 // -------------------------------------------------------------------------
29 //==========================================================================
31 //typedef cpPlugins::Interface::Interface TPluginsInterface;
32 //typedef cpPlugins::Interface::Object TPluginObject;
33 //typedef cpPlugins::Interface::DataObject TPluginData;
34 //typedef cpPlugins::Interface::Image TPluginImage;
35 //typedef cpPlugins::Interface::ImplicitFunction TPluginImplicitFunction;
36 //typedef cpPlugins::Interface::Mesh TPluginMesh;
37 //typedef cpPlugins::Interface::ProcessObject TPluginFilter;
38 //typedef cpPlugins::Interface::Parameters TParameters;
40 //typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
57 // MementoState(long id, TPluginImage* _img)
59 // char * base = "state";
60 // std::ostringstream oss;
62 // std::string str = oss.str();
63 // auto complement = str.c_str();
65 // std::string fileName(base);
66 // fileName.append(complement);
67 // fileName.append(".mhd");
69 // std::string fileNameRaw(base);
70 // fileNameRaw.append(complement);
71 // fileNameRaw.append(".raw");
72 // save(fileName, fileNameRaw, _img);
75 // vtkSmartPointer<vtkMetaImageReader> getMemento(long id)
77 // char * base = "state";
78 // std::ostringstream oss;
80 // std::string str = oss.str();
81 // auto complement = str.c_str();
83 // std::string fileName(base);
84 // fileName.append(complement);
85 // fileName.append(".mhd");
86 // return load(fileName);
89 // void save(const std::string& filename, const std::string& filenameRaw, TPluginImage* img) {
90 // vtkSmartPointer<vtkMetaImageWriter> writer =
91 // vtkSmartPointer<vtkMetaImageWriter>::New();
92 // writer->SetInputData(img->GetVTK< vtkImageData >());
93 // writer->SetFileName(filename.c_str());
94 // writer->SetRAWFileName(filenameRaw.c_str());
98 // vtkSmartPointer<vtkMetaImageReader> load(const std::string& filename) {
99 // vtkSmartPointer<vtkMetaImageReader> reader =
100 // vtkSmartPointer<vtkMetaImageReader>::New();
101 // reader->SetFileName(filename.c_str());
108 //==========================================================================
110 // -------------------------------------------------------------------------
122 typedef ImageMPR Self;
123 typedef QMainWindow Superclass;
125 typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
126 typedef TMPRObjects::TCursorCommand TCursorCommand;
127 typedef TMPRObjects::TMouseCommand TMouseCommand;
128 typedef TMPRObjects::TMouseWheelCommand TMouseWheelCommand;
129 typedef TMPRObjects::TKeyCommand TKeyCommand;
133 typedef cpPlugins::Interface::Interface TPluginsInterface;
134 typedef cpPlugins::Interface::Object TPluginObject;
135 typedef cpPlugins::Interface::DataObject TPluginData;
136 typedef cpPlugins::Interface::Image TPluginImage;
137 typedef cpPlugins::Interface::ImplicitFunction TPluginImplicitFunction;
138 typedef cpPlugins::Interface::Mesh TPluginMesh;
139 typedef cpPlugins::Interface::ProcessObject TPluginFilter;
140 typedef cpPlugins::Interface::Parameters TParameters;
141 typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
145 explicit ImageMPR( QWidget* parent = 0 );
146 virtual ~ImageMPR( );
150 bool _LoadPlugins( const std::string& filename );
151 std::string _LoadImage( TPluginImage::Pointer& image );
152 std::string _ConfigureMeshActors( );
157 void _aOpenSegmentation( );
158 void _aOpenPolyData( );
160 void _aSaveSegmentation( );
161 void _aSavePolyData( );
164 void _aLoadPlugins( );
165 void _aShowPlugins( );
171 static void _CursorCommand( double* pos, int axis, void* data );
177 std::string m_ImageLoaded;
182 TPluginsInterface m_Plugins;
184 // Needed object from plugins
185 std::string m_ImageReaderClass;
186 std::string m_ImageWriterClass;
187 std::string m_MeshReaderClass;
188 std::string m_MeshWriterClass;
189 std::string m_MeshCutterClass;
192 TPluginImage::Pointer m_Image;
193 TPluginImage::Pointer m_Segmentation;
194 TPluginMesh::Pointer m_Mesh;
197 TPluginFilter::Pointer m_Cutters[ 3 ];
198 TPluginImplicitFunction::Pointer m_Planes[ 3 ];
200 // Visualization stuff
201 vtkSmartPointer< TMPRObjects > m_MPRObjects;
204 unsigned long m_state;
205 unsigned long m_max_state;
209 vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget;
213 #endif // __IMAGEMPR__H__