]> Creatis software - cpPlugins.git/blobdiff - plugins/Widgets/SeedWidget.h
PolyLine updated.
[cpPlugins.git] / plugins / Widgets / SeedWidget.h
index c185f1114df19d127af56212cefdb3828b9bb70e..945ee037d7d5fc4be63cf6b14251a7426b187820 100644 (file)
@@ -4,15 +4,24 @@
 #include <plugins/cpPluginsWidgets_Export.h>
 #include <cpPlugins/BaseObjects/Widget.h>
 
-#include <cpExtensions/Interaction/SeedWidget.h>
-#include <cpExtensions/Interaction/ImageSlicePointPlacer.h>
-#include <cpExtensions/Visualization/WindowLevelImageActor.h>
-#include <vtkImageSlice.h>
-#include <vtkPointHandleRepresentation3D.h>
-#include <vtkSeedRepresentation.h>
-#include <vtkSmartPointer.h>
-#include <map>
+// -------------------------------------------------------------------------
+class vtkPointHandleRepresentation3D;
+class vtkPolyData;
+class vtkSeedRepresentation;
+namespace cpExtensions
+{
+  namespace Interaction
+  {
+    class ImageSlicePointPlacer;
+    class SeedWidget;
+  }
+  namespace Visualization
+  {
+    class WindowLevelImageActor;
+  }
+}
 
+// -------------------------------------------------------------------------
 namespace cpPluginsWidgets
 {
   /**
@@ -23,39 +32,45 @@ namespace cpPluginsWidgets
     cpPluginsObject( SeedWidget, cpPlugins::BaseObjects::Widget, Widgets );
 
   public:
+    typedef vtkPointHandleRepresentation3D                     THandleRep;
+    typedef vtkSeedRepresentation                              TSeedRep;
+    typedef cpExtensions::Interaction::SeedWidget              TWidget;
+    typedef cpExtensions::Interaction::ImageSlicePointPlacer   TPlacer;
     typedef cpExtensions::Visualization::WindowLevelImageActor TImageActor;
 
   public:
-    struct TWidgetData
+    virtual void Clear( ) cpPlugins_OVERRIDE;
+    virtual void SetEnabled( bool v ) cpPlugins_OVERRIDE;
+    virtual bool GetEnabled( ) const cpPlugins_OVERRIDE;
+
+  protected:
+    /**
+     */
+    class TCallback
+      : public vtkCommand
     {
-      typedef cpExtensions::Interaction::SeedWidget            _TWidget;
-      typedef cpExtensions::Interaction::ImageSlicePointPlacer _TPlacer;
+    public:
+      static TCallback* New( );
+      virtual void Execute(
+        vtkObject* caller, unsigned long id, void* data
+        ) cpPlugins_OVERRIDE;
+      void SetSeeds( vtkPolyData* seeds );
 
-      std::vector< vtkSmartPointer< _TWidget > >                       Widgets;
-      std::vector< vtkSmartPointer< _TPlacer > >                       Placers;
-      std::vector< vtkSmartPointer< vtkPointHandleRepresentation3D > > Handles;
-      std::vector< vtkSmartPointer< vtkSeedRepresentation > >  Representations;
-      unsigned int ActualWidgetId;
-      vtkSmartPointer< vtkCommand > Command;
+    protected:
+      TCallback( );
+      virtual ~TCallback( );
 
-      TWidgetData(
-        SeedWidget* seedWidget,
-        TImageActor* actor,
-        vtkRenderWindowInteractor* iren
-        );
-      virtual ~TWidgetData( );
+    protected:
+      vtkPolyData*         m_Seeds;
+      std::set< TWidget* > m_Widgets;
     };
 
   protected:
-    void _Configure( );
-
-    template< class _TImage >
-      inline void _GD0_Image( _TImage* image );
+    inline void _GD0_Image( vtkImageData* image );
 
   protected:
-    std::map< vtkProp*, vtkRenderWindowInteractor* > m_Props;
-    std::vector< TWidgetData* > m_Widgets;
-    bool m_Configured;
+    std::map< vtkRenderWindowInteractor*, vtkSmartPointer< TWidget > > m_Widgets;
+    vtkSmartPointer< TCallback > m_Command;
   };
 
 } // ecapseman