]> Creatis software - cpMesh.git/blobdiff - appli/InteractiveDeformableMeshSegmentation/MainWnd.h
Read/Write image plugin integration
[cpMesh.git] / appli / InteractiveDeformableMeshSegmentation / MainWnd.h
index c1fe98f558dbee968460091d7ea4ac46f21e444d..d3bef88941c9b95640823a073623f54a67eddc1d 100644 (file)
@@ -1,24 +1,34 @@
 #ifndef __MAINWND__H__
 #define __MAINWND__H__
 
-#include <QMainWindow>
+// Standard stuff
+#include <map>
+#include <string>
 
-#include <itkImage.h>
-#include <itkImageToVTKImageFilter.h>
+// Qt stuff
+#include <QMainWindow>
 
+// vtk stuff
 #include <vtkOrientationMarkerWidget.h>
 #include <vtkRenderer.h>
 #include <vtkSmartPointer.h>
 
-#include <cpm/DataStructures/QuadEdgeMesh.h>
-
-#include <cpmPluginsInterface/Interface.h>
-#include <cpmPluginsInterface/Filter.h>
+// Plugins interface
+#include <cpPlugins/Interface/Interface.h>
+#include <cpPlugins/Interface/ProcessObject.h>
+#include <cpPlugins/Interface/DataObject.h>
 
+// Local stuff
 #include "InteractorStyleImage.h"
 #include "VolumeActors.h"
 
+
 /*
+  #include <itkImage.h>
+  #include <itkImageToVTKImageFilter.h>
+
+  #include <cpm/DataStructures/QuadEdgeMesh.h>
+
   #include <cpm/VTK/MeshMapper.h>
   #include <cpm/Algorithms/QuadEdge/MeshPlaneCutterFilter.h>
 */
@@ -39,39 +49,26 @@ class MainWnd
 
 public:
   // Plugins types
-  typedef cpmPluginsInterface::FilterProvider TFilterProvider;
-  typedef cpmPluginsInterface::Filter         TFilterObject;
-  typedef TFilterObject::TParameters          TParameters;
-  typedef
-  cpmPluginsInterface::Interface< TFilterProvider, TFilterObject >
-  TFilterPlugins;
-
-  // Data types
-  static const unsigned int Dimension = 3;
-  typedef short  TPixel;
-  typedef double TScalar;
-  typedef itk::Image< TPixel, Dimension >      TImage;
-  typedef itk::ImageToVTKImageFilter< TImage > TVTKImage;
-
-  typedef cpm::DataStructures::QuadEdgeMesh< TScalar, Dimension > TMesh;
-
-  /*
-    typedef cpm::VTK::MeshMapper< TTriangulation > TTriangulationMapper;
-    typedef
-    cpm::Algorithms::QuadEdge::MeshPlaneCutterFilter< TTriangulation >
-    TCutter;
-  */
+  typedef cpPlugins::Interface::Interface     TPluginsInterface;
+  typedef cpPlugins::Interface::DataObject    TPluginData;
+  typedef cpPlugins::Interface::ProcessObject TPlugin;
+  typedef TPlugin::TParameters                TParameters;
 
 public:
   explicit MainWnd( QWidget* parent = 0 );
   virtual ~MainWnd( );
 
 protected:
+  void _LoadApplicationPreferences( );
+  TPluginData* _LoadImage(
+    const std::string& image_type, const std::string& image_dim
+    );
   void _UpdateEnabledFlags( );
-  bool _ParametersDialog( TParameters& parameters );
 
-  template< class I >
-  bool _LoadImage( typename I::Pointer& image );
+  /* TODO
+     bool _ParametersDialog( TParameters& parameters );
+     template< class I >
+  */
 
   /*
     void _SliceMesh( int axis );
@@ -83,33 +80,52 @@ protected:
   */
 
 private slots:
-  void triggered_aSwitchMode( );
-  void triggered_aReloadPlugins( );
-  void triggered_aOpenInputImage( );
-  void triggered_aOpenSegmentedImage( );
-  void triggered_aFilterSegmentedImage( );
-  void triggered_aSegmentedImageToMesh( );
-  /*
-    void triggered_aLoadInputImage( );
-    void triggered_aLoadSegmentedImage( );
+  void _triggered_actionReloadPlugins( );
+  void _triggered_actionOpenInputImage( );
+  void _triggered_actionOpenSegmentedImage( );
+  void _triggered_actionSwitchMode( );
+  
+  /* TODO
+     void triggered_aOpenSegmentedImage( );
+     void triggered_aFilterSegmentedImage( );
+     void triggered_aSegmentedImageToMesh( );
+     void triggered_aLoadInputImage( );
+     void triggered_aLoadSegmentedImage( );
   */
 
 private:
   Ui::MainWnd* m_UI;
 
+  // Application preferences
+  std::string m_ApplicationPreferencesFile;
+  std::map< std::string, std::string > m_ApplicationPreferences;
+
   // Plugins objects
-  std::string m_PluginsConfigurationFile;
-  TFilterPlugins m_FilterPlugins;
-
-  // Inputs
-  std::string        m_LastOpenedFile;
-  TImage::Pointer    m_Image;
-  TImage::Pointer    m_Segmentation;
-  TMesh::Pointer     m_Mesh;
-  TVTKImage::Pointer m_VTKImage;
-  TVTKImage::Pointer m_VTKSegmentation;
-
-  // Renderers
+  std::string       m_PluginsConfigurationFile;
+  TPluginsInterface m_Plugins;
+
+  // Needed object from plugins
+  std::string m_ImageReaderClassName;
+  std::string m_ImageSeriesReaderClassName;
+  std::string m_ImageWriterClassName;
+
+  // Historic objects
+  std::string m_LastOpenedFile;
+
+  // Real data
+  TPluginData* m_InputImage;
+  TPluginData* m_SegmentedImage;
+
+  /* TODO
+     // Inputs
+     TImage::Pointer    m_Image;
+     TImage::Pointer    m_Segmentation;
+     TMesh::Pointer     m_Mesh;
+     TVTKImage::Pointer m_VTKImage;
+     TVTKImage::Pointer m_VTKSegmentation;
+  */
+
+  // Visualization stuff
   vtkSmartPointer< vtkRenderer >        m_3DRenderer;
   vtkSmartPointer< vtkRenderer >        m_XPlaneRenderer;
   vtkSmartPointer< vtkRenderer >        m_YPlaneRenderer;
@@ -119,8 +135,8 @@ private:
   vtkSmartPointer< idms::InteractorStyleImage > m_XStyle;
   vtkSmartPointer< idms::InteractorStyleImage > m_YStyle;
   vtkSmartPointer< idms::InteractorStyleImage > m_ZStyle;
-
   vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget;
+
   /*
     TTriangulation::Pointer                 m_Mesh;
     vtkSmartPointer< TTriangulationMapper > m_MeshMapper;