#ifndef __IMAGEMPR__H__ #define __IMAGEMPR__H__ #include // Qt stuff #include // vtk stuff #include #include // Plugins interface #include #include #include #include #include #include #include // ------------------------------------------------------------------------- namespace Ui { class ImageMPR; } //========================================================================== // Plugins types //typedef cpPlugins::Interface::Interface TPluginsInterface; //typedef cpPlugins::Interface::Object TPluginObject; //typedef cpPlugins::Interface::DataObject TPluginData; //typedef cpPlugins::Interface::Image TPluginImage; //typedef cpPlugins::Interface::ImplicitFunction TPluginImplicitFunction; //typedef cpPlugins::Interface::Mesh TPluginMesh; //typedef cpPlugins::Interface::ProcessObject TPluginFilter; //typedef cpPlugins::Interface::Parameters TParameters; // //typedef cpExtensions::Visualization::MPRObjects TMPRObjects; //class MementoState //{ //private: // long m_Id; // //public: // // MementoState() // { // m_Id = 0; // }; // // MementoState(long id, TPluginImage* _img) // { // char * base = "state"; // std::ostringstream oss; // oss << id; // std::string str = oss.str(); // auto complement = str.c_str(); // // std::string fileName(base); // fileName.append(complement); // fileName.append(".mhd"); // // std::string fileNameRaw(base); // fileNameRaw.append(complement); // fileNameRaw.append(".raw"); // save(fileName, fileNameRaw, _img); // } // // vtkSmartPointer getMemento(long id) // { // char * base = "state"; // std::ostringstream oss; // oss << id; // std::string str = oss.str(); // auto complement = str.c_str(); // // std::string fileName(base); // fileName.append(complement); // fileName.append(".mhd"); // return load(fileName); // } // // void save(const std::string& filename, const std::string& filenameRaw, TPluginImage* img) { // vtkSmartPointer writer = // vtkSmartPointer::New(); // writer->SetInputData(img->GetVTK< vtkImageData >()); // writer->SetFileName(filename.c_str()); // writer->SetRAWFileName(filenameRaw.c_str()); // writer->Write(); // } // // vtkSmartPointer load(const std::string& filename) { // vtkSmartPointer reader = // vtkSmartPointer::New(); // reader->SetFileName(filename.c_str()); // reader->Update(); // return reader; // } // //}; //========================================================================== // ------------------------------------------------------------------------- /** */ class ImageMPR : public QMainWindow { Q_OBJECT; public: typedef ImageMPR Self; typedef QMainWindow Superclass; typedef cpExtensions::Visualization::MPRObjects TMPRObjects; // Plugins types /* typedef cpPlugins::Interface::Interface TPluginsInterface; typedef cpPlugins::Interface::Object TPluginObject; typedef cpPlugins::Interface::DataObject TPluginData; typedef cpPlugins::Interface::Image TPluginImage; typedef cpPlugins::Interface::ImplicitFunction TPluginImplicitFunction; typedef cpPlugins::Interface::Mesh TPluginMesh; typedef cpPlugins::Interface::ProcessObject TPluginFilter; typedef cpPlugins::Interface::Parameters TParameters; typedef cpExtensions::Visualization::MPRObjects TMPRObjects; */ public: explicit ImageMPR( QWidget* parent = 0 ); virtual ~ImageMPR( ); /* protected: bool _LoadPlugins( const std::string& filename ); std::string _LoadImage( TPluginImage::Pointer& image ); std::string _ConfigureMeshActors( ); */ private slots: void _aOpenImage( ); void _aOpenDICOMSeries( ); void _aOpenSegmentation( ); void _aOpenPolyData( ); void _aSaveImage( ); void _aSaveSegmentation( ); void _aSavePolyData( ); void _aUndo( ); void _aRedo( ); void _aLoadPlugins( ); void _aShowPlugins( ); void _execPlugin( ); private: Ui::ImageMPR* m_UI; // Some state flags std::string m_ImageLoaded; bool m_Flooding; // Plugins objects /* TPluginsInterface m_Plugins; // Needed object from plugins std::string m_ImageReaderClass; std::string m_ImageWriterClass; std::string m_MeshReaderClass; std::string m_MeshWriterClass; std::string m_MeshCutterClass; // Real data TPluginImage::Pointer m_Image; TPluginImage::Pointer m_Segmentation; TPluginMesh::Pointer m_Mesh; // Cutters TPluginFilter::Pointer m_Cutters[ 3 ]; TPluginImplicitFunction::Pointer m_Planes[ 3 ]; // Visualization stuff vtkSmartPointer< TMPRObjects > m_MPRObjects; // Memento stuff unsigned long m_state; unsigned long m_max_state; */ /* TODO vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget; */ }; #endif // __IMAGEMPR__H__ // eof - $RCSfile$