]> Creatis software - cpPlugins.git/blobdiff - plugins/Widgets/SeedWidget.h
...
[cpPlugins.git] / plugins / Widgets / SeedWidget.h
index 5c9e68a6b8dbe683daba1231afb2bbc97789e723..0a0ccb928828c6fb6b89d836825b776114a177e9 100644 (file)
@@ -1,64 +1,76 @@
 #ifndef __CPPLUGINSWIDGETS__SEEDWIDGET__H__
 #define __CPPLUGINSWIDGETS__SEEDWIDGET__H__
 
-#include <plugins/Widgets/cpPluginsWidgets_Export.h>
-#include <cpPlugins/BaseWidget.h>
+#include <cpPluginsWidgets_Export.h>
+#include <cpPlugins/BaseObjects/Widget.h>
 
-#include <cpExtensions/Interaction/SeedWidget.h>
-#include <vtkImageActorPointPlacer.h>
-#include <vtkPointHandleRepresentation3D.h>
-#include <vtkSeedRepresentation.h>
-#include <vtkSmartPointer.h>
+// -------------------------------------------------------------------------
+class vtkPointHandleRepresentation3D;
+class vtkPolyData;
+class vtkSeedRepresentation;
+namespace cpExtensions
+{
+  namespace Interaction
+  {
+    class ImageSlicePointPlacer;
+    class SeedWidget;
+  }
+  namespace Visualization
+  {
+    class WindowLevelImageActor;
+  }
+}
 
+// -------------------------------------------------------------------------
 namespace cpPluginsWidgets
 {
   /**
    */
   class cpPluginsWidgets_EXPORT SeedWidget
-    : public cpPlugins::BaseWidget
+    : public cpPlugins::BaseObjects::Widget
   {
-    cpPluginsObject;
+    cpPluginsObject( SeedWidget, cpPlugins::BaseObjects::Widget, Widgets );
+
   public:
-    typedef SeedWidget                      Self;
-    typedef cpPlugins::BaseWidget           Superclass;
-    typedef itk::SmartPointer< Self >       Pointer;
-    typedef itk::SmartPointer< const Self > ConstPointer;
+    typedef vtkPointHandleRepresentation3D                     THandleRep;
+    typedef vtkSeedRepresentation                              TSeedRep;
+    typedef cpExtensions::Interaction::SeedWidget              TWidget;
+    typedef cpExtensions::Interaction::ImageSlicePointPlacer   TPlacer;
+    typedef cpExtensions::Visualization::WindowLevelImageActor TImageActor;
 
   public:
-    itkNewMacro( Self );
-    itkTypeMacro( SeedWidget, cpPlugins::BaseWidget );
-    cpPlugins_Id_Macro( SeedWidget, Widgets );
+    virtual void Clear( ) cpPlugins_OVERRIDE;
+    virtual void SetEnabled( bool v ) cpPlugins_OVERRIDE;
+    virtual bool GetEnabled( ) const cpPlugins_OVERRIDE;
 
-    struct WidgetData
+  protected:
+    /**
+     */
+    class TCallback
+      : public vtkCommand
     {
-      vtkSmartPointer< cpExtensions::Interaction::SeedWidget > Widget;
-      vtkSmartPointer< vtkImageActorPointPlacer >              Placer;
-      vtkSmartPointer< vtkPointHandleRepresentation3D >        Handle;
-      vtkSmartPointer< vtkSeedRepresentation >                 Seed;
+    public:
+      static TCallback* New( );
+      virtual void Execute(
+        vtkObject* caller, unsigned long id, void* data
+        ) cpPlugins_OVERRIDE;
+      void SetSeeds( vtkPolyData* seeds );
+
+    protected:
+      TCallback( );
+      virtual ~TCallback( );
 
-      void Configure(
-        cpPluginsWidgets::SeedWidget* parent,
-        vtkRenderWindowInteractor* interactor, vtkImageActor* actor
-        );
-      void On( );
-      void Off( );
+    protected:
+      vtkPolyData*         m_Seeds;
+      std::set< TWidget* > m_Widgets;
     };
 
   protected:
-    SeedWidget( );
-    virtual ~SeedWidget( );
-
-    virtual void _GenerateData( ) ITK_OVERRIDE;
-
-  private:
-    // Purposely not implemented
-    SeedWidget( const Self& );
-    Self& operator=( const Self& );
+    inline void _GD0_Image( vtkImageData* image );
 
   protected:
-    bool m_Configured;
-    std::vector< WidgetData > m_Widgets;
-    unsigned int m_InitialNumberOfSeeds;
+    std::map< vtkRenderWindowInteractor*, vtkSmartPointer< TWidget > > m_Widgets;
+    vtkSmartPointer< TCallback > m_Command;
   };
 
 } // ecapseman