X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=appli%2FImageMPR%2FImageMPR.h;h=c4d43e33d37b8aee02f8a092812ec7f78ea5e238;hb=a02d2e4b730e0a8c7709856c9c47eb7ad19edda0;hp=ba05de9f9de5c0f88264f967132f8b1c3c93b35a;hpb=62d056ccb528d63392d197552830460e980a5aba;p=cpPlugins.git diff --git a/appli/ImageMPR/ImageMPR.h b/appli/ImageMPR/ImageMPR.h index ba05de9..c4d43e3 100644 --- a/appli/ImageMPR/ImageMPR.h +++ b/appli/ImageMPR/ImageMPR.h @@ -1,11 +1,11 @@ #ifndef __IMAGEMPR__H__ #define __IMAGEMPR__H__ -// Standard stuff #include -#include +#include // Qt stuff +#include #include // vtk stuff @@ -13,10 +13,7 @@ #include // Plugins interface -#include -#include -#include -#include +#include // ------------------------------------------------------------------------- namespace Ui @@ -24,61 +21,192 @@ 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: - // 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 std::set< std::string > TStringContainer; + typedef ImageMPR Self; + typedef QMainWindow Superclass; + typedef cpExtensions::Visualization::MPRObjects TMPRObjects; + typedef cpPlugins::Interface::Plugins TPlugins; + + // 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 ); + inline void _Block( ) + { + QApplication::setOverrideCursor( Qt::WaitCursor ); + this->setEnabled( false ); + } + inline void _Unblock( ) + { + QApplication::restoreOverrideCursor( ); + this->setEnabled( true ); + } + + /* + protected: + bool _LoadPlugins( const std::string& filename ); + std::string _LoadImage( TPluginImage::Pointer& image ); + std::string _ConfigureMeshActors( ); + */ private slots: - void _triggered_actionOpenPlugins( ); - void _triggered_actionOpenInputImage( ); - void _triggered_actionOpenInputPolyData( ); - void _triggered_actionImageToImage( ); - void _triggered_actionImageToMesh( ); + 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; + TPlugins* m_Plugins; + + // Objects + typedef std::pair< std::string, TPlugins::TDataObject::Pointer > TTreeNode; + typedef std::map< std::string, TTreeNode > TTree; + TTree m_Objects; // 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; - TStringContainer m_ImageToImageFilters; - TStringContainer m_ImageToMeshFilters; - - // Real data - TPluginImage::Pointer m_InputImage; - TPluginMesh::Pointer m_InputMesh; - - // Visualization stuff - vtkSmartPointer< TMPRObjects > m_MPRObjects; + /* + 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;