X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=appli%2FImageMPR%2FImageMPR.h;h=c864bfe471dc04c05d7cc2bfb2879f00f31895cb;hb=48363731d62d46ffad8ca257326cc147a92ab681;hp=9e3f80147b18779e01a0a7e07ba3fa46b4b9c213;hpb=6df7b3a0946edcecfe55509d0b77d757d76a35ab;p=cpPlugins.git diff --git a/appli/ImageMPR/ImageMPR.h b/appli/ImageMPR/ImageMPR.h index 9e3f801..c864bfe 100644 --- a/appli/ImageMPR/ImageMPR.h +++ b/appli/ImageMPR/ImageMPR.h @@ -1,22 +1,24 @@ #ifndef __IMAGEMPR__H__ #define __IMAGEMPR__H__ -// Standard stuff -#include -#include +#include // Qt stuff #include // vtk stuff #include +#include // Plugins interface #include #include #include +#include #include -#include +#include +#include + // ------------------------------------------------------------------------- namespace Ui @@ -24,9 +26,93 @@ 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 { @@ -34,16 +120,16 @@ class ImageMPR public: // 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::Mesh TPluginMesh; - typedef cpPlugins::Interface::ProcessObject TPluginFilter; - typedef cpPlugins::Interface::Parameters TParameters; + 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 std::set< std::string > TStringContainer; - typedef cpPlugins::Extensions::Visualization::MPRWithDifferentWindows TMPR; + typedef cpExtensions::Visualization::MPRObjects TMPRObjects; public: explicit ImageMPR( QWidget* parent = 0 ); @@ -51,15 +137,18 @@ public: protected: bool _LoadPlugins( const std::string& filename ); - bool _ParametersDialog( TPluginFilter* filter ); + std::string _LoadImage( TPluginImage::Pointer& image ); + std::string _ConfigureMeshActors( ); private slots: void _triggered_actionOpenPlugins( ); void _triggered_actionOpenInputImage( ); + void _triggered_actionOpenSegmentation( ); void _triggered_actionOpenInputPolyData( ); void _triggered_actionImageToImage( ); void _triggered_actionImageToMesh( ); - + void _triggered_actionUndo(); + void _triggered_actionRedo(); private: Ui::ImageMPR* m_UI; @@ -71,19 +160,23 @@ private: std::string m_ImageWriterClass; std::string m_MeshReaderClass; std::string m_MeshWriterClass; - TStringContainer m_ImageToImageFilters; - TStringContainer m_ImageToMeshFilters; + std::string m_MeshCutterClass; // Real data - TPluginImage::Pointer m_InputImage; - TPluginMesh::Pointer m_InputMesh; + 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 - TMPR* m_MPR; - vtkSmartPointer< vtkPolyDataMapper > m_InputMeshMapper; - vtkSmartPointer< vtkActor > m_InputMeshActor; + vtkSmartPointer< TMPRObjects > m_MPRObjects; - QWidget* m_ParametersDlg; + // Memento stuff + unsigned long m_state; + unsigned long m_max_state; /* TODO vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget;