]> Creatis software - cpPlugins.git/blobdiff - appli/ImageMPR/ImageMPR.h
update: undo/redo for image to image filters
[cpPlugins.git] / appli / ImageMPR / ImageMPR.h
index d82f026f7b108393568c3e2709f10753e58824a5..c864bfe471dc04c05d7cc2bfb2879f00f31895cb 100644 (file)
 #include <cpPlugins/Interface/Interface.h>
 #include <cpPlugins/Interface/ProcessObject.h>
 #include <cpPlugins/Interface/Image.h>
+#include <cpPlugins/Interface/ImplicitFunction.h>
 #include <cpPlugins/Interface/Mesh.h>
+#include <vtkMetaImageWriter.h>
+#include <vtkMetaImageReader.h>
+
 
 // -------------------------------------------------------------------------
 namespace Ui
@@ -22,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<vtkMetaImageReader> 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<vtkMetaImageWriter> writer =
+//                     vtkSmartPointer<vtkMetaImageWriter>::New();
+//             writer->SetInputData(img->GetVTK< vtkImageData >());
+//             writer->SetFileName(filename.c_str());
+//             writer->SetRAWFileName(filenameRaw.c_str());
+//             writer->Write();
+//     }
+//
+//     vtkSmartPointer<vtkMetaImageReader> load(const std::string& filename) {
+//             vtkSmartPointer<vtkMetaImageReader> reader =
+//             vtkSmartPointer<vtkMetaImageReader>::New();
+//             reader->SetFileName(filename.c_str());
+//             reader->Update();       
+//             return reader;
+//     }
+//
+//};
+
+//==========================================================================
+
 // -------------------------------------------------------------------------
 /**
  */
+
+
+
 class ImageMPR
   : public QMainWindow
 {
@@ -32,13 +120,14 @@ 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 cpExtensions::Visualization::MPRObjects TMPRObjects;
 
@@ -49,6 +138,7 @@ public:
 protected:
   bool _LoadPlugins( const std::string& filename );
   std::string _LoadImage( TPluginImage::Pointer& image );
+  std::string _ConfigureMeshActors( );
 
 private slots:
   void _triggered_actionOpenPlugins( );
@@ -57,7 +147,8 @@ private slots:
   void _triggered_actionOpenInputPolyData( );
   void _triggered_actionImageToImage( );
   void _triggered_actionImageToMesh( );
-
+  void _triggered_actionUndo();
+  void _triggered_actionRedo();
 private:
   Ui::ImageMPR* m_UI;
 
@@ -69,15 +160,24 @@ private:
   std::string m_ImageWriterClass;
   std::string m_MeshReaderClass;
   std::string m_MeshWriterClass;
+  std::string m_MeshCutterClass;
 
   // Real data
-  TPluginImage::Pointer m_InputImage;
-  TPluginImage::Pointer m_InputSegmentation;
-  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
   vtkSmartPointer< TMPRObjects > m_MPRObjects;
 
+  // Memento stuff
+  unsigned long m_state;
+  unsigned long m_max_state;
+
   /* TODO
      vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget;
   */