]> Creatis software - cpPlugins.git/blobdiff - plugins/Widgets/SeedWidget.h
...
[cpPlugins.git] / plugins / Widgets / SeedWidget.h
index 0f565969d7e7b93af06f64985d189d4a1cdadd0c..0a0ccb928828c6fb6b89d836825b776114a177e9 100644 (file)
@@ -1,19 +1,25 @@
 #ifndef __CPPLUGINSWIDGETS__SEEDWIDGET__H__
 #define __CPPLUGINSWIDGETS__SEEDWIDGET__H__
 
-#include <plugins/cpPluginsWidgets_Export.h>
+#include <cpPluginsWidgets_Export.h>
 #include <cpPlugins/BaseObjects/Widget.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>
-
 // -------------------------------------------------------------------------
-namespace cpExtensions { namespace Interaction { class SeedWidget; } }
+class vtkPointHandleRepresentation3D;
+class vtkPolyData;
+class vtkSeedRepresentation;
+namespace cpExtensions
+{
+  namespace Interaction
+  {
+    class ImageSlicePointPlacer;
+    class SeedWidget;
+  }
+  namespace Visualization
+  {
+    class WindowLevelImageActor;
+  }
+}
 
 // -------------------------------------------------------------------------
 namespace cpPluginsWidgets
@@ -26,64 +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:
-    /* TODO
-       struct TWidgetData
-       {
-       typedef cpExtensions::Interaction::SeedWidget            _TWidget;
-       typedef cpExtensions::Interaction::ImageSlicePointPlacer _TPlacer;
-
-       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;
-
-       TWidgetData(
-       SeedWidget* seedWidget,
-       TImageActor* actor,
-       vtkRenderWindowInteractor* iren
-       );
-       virtual ~TWidgetData( );
-       };
-    */
+    virtual void Clear( ) cpPlugins_OVERRIDE;
+    virtual void SetEnabled( bool v ) cpPlugins_OVERRIDE;
+    virtual bool GetEnabled( ) const cpPlugins_OVERRIDE;
 
-    struct TWidgetData
+  protected:
+    /**
+     */
+    class TCallback
+      : public vtkCommand
     {
-      typedef cpExtensions::Interaction::ImageSlicePointPlacer _TPlacer;
-
-      vtkSmartPointer< TWidget >                        Widget;
-      vtkSmartPointer< _TPlacer >                       Placer;
-      vtkSmartPointer< vtkPointHandleRepresentation3D > Handle;
-      vtkSmartPointer< vtkSeedRepresentation >  Representation;
-
-      TWidgetData(
-        SeedWidget* seedWidget,
-        TImageActor* actor,
-        vtkRenderWindowInteractor* iren,
-        vtkCommand* cmd
-        );
-      virtual ~TWidgetData( );
+    public:
+      static TCallback* New( );
+      virtual void Execute(
+        vtkObject* caller, unsigned long id, void* data
+        ) cpPlugins_OVERRIDE;
+      void SetSeeds( vtkPolyData* seeds );
+
+    protected:
+      TCallback( );
+      virtual ~TCallback( );
+
+    protected:
+      vtkPolyData*         m_Seeds;
+      std::set< TWidget* > m_Widgets;
     };
 
   protected:
-    void _Configure( );
-
     inline void _GD0_Image( vtkImageData* image );
 
   protected:
-    std::map< vtkRenderWindowInteractor*, TWidgetData* > m_Data;
-    vtkSmartPointer< vtkCommand > m_Command;
-
-    /* TODO
-       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