]> Creatis software - cpPlugins.git/blobdiff - plugins/Widgets/SeedWidget.h
...
[cpPlugins.git] / plugins / Widgets / SeedWidget.h
index 5c9e68a6b8dbe683daba1231afb2bbc97789e723..663d539d2cf1e761ee2a3975dc4281cac1afa1f7 100644 (file)
@@ -1,64 +1,85 @@
 #ifndef __CPPLUGINSWIDGETS__SEEDWIDGET__H__
 #define __CPPLUGINSWIDGETS__SEEDWIDGET__H__
 
-#include <plugins/Widgets/cpPluginsWidgets_Export.h>
-#include <cpPlugins/BaseWidget.h>
+#include <plugins/cpPluginsWidgets_Export.h>
+#include <cpPlugins/BaseObjects/Widget.h>
 
 #include <cpExtensions/Interaction/SeedWidget.h>
-#include <vtkImageActorPointPlacer.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 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 cpExtensions::Visualization::WindowLevelImageActor TImageActor;
 
   public:
-    itkNewMacro( Self );
-    itkTypeMacro( SeedWidget, cpPlugins::BaseWidget );
-    cpPlugins_Id_Macro( SeedWidget, Widgets );
+    /* 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;
 
-    struct WidgetData
+       TWidgetData(
+       SeedWidget* seedWidget,
+       TImageActor* actor,
+       vtkRenderWindowInteractor* iren
+       );
+       virtual ~TWidgetData( );
+       };
+    */
+
+    struct TWidgetData
     {
-      vtkSmartPointer< cpExtensions::Interaction::SeedWidget > Widget;
-      vtkSmartPointer< vtkImageActorPointPlacer >              Placer;
-      vtkSmartPointer< vtkPointHandleRepresentation3D >        Handle;
-      vtkSmartPointer< vtkSeedRepresentation >                 Seed;
-
-      void Configure(
-        cpPluginsWidgets::SeedWidget* parent,
-        vtkRenderWindowInteractor* interactor, vtkImageActor* actor
+      typedef cpExtensions::Interaction::SeedWidget            _TWidget;
+      typedef cpExtensions::Interaction::ImageSlicePointPlacer _TPlacer;
+
+      vtkSmartPointer< _TWidget >                       Widget;
+      vtkSmartPointer< _TPlacer >                       Placer;
+      vtkSmartPointer< vtkPointHandleRepresentation3D > Handle;
+      vtkSmartPointer< vtkSeedRepresentation >  Representation;
+
+      TWidgetData(
+        SeedWidget* seedWidget,
+        TImageActor* actor,
+        vtkRenderWindowInteractor* iren
         );
-      void On( );
-      void Off( );
+      virtual ~TWidgetData( );
     };
 
   protected:
-    SeedWidget( );
-    virtual ~SeedWidget( );
-
-    virtual void _GenerateData( ) ITK_OVERRIDE;
+    void _Configure( );
 
-  private:
-    // Purposely not implemented
-    SeedWidget( const Self& );
-    Self& operator=( const Self& );
+    template< class _TImage >
+    inline void _GD0_Image( _TImage* image );
 
   protected:
-    bool m_Configured;
-    std::vector< WidgetData > m_Widgets;
-    unsigned int m_InitialNumberOfSeeds;
+    std::map< vtkRenderWindowInteractor*, TWidgetData* > m_Data;
+
+    /* TODO
+       std::map< vtkProp*, vtkRenderWindowInteractor* > m_Props;
+       std::vector< TWidgetData* > m_Widgets;
+       bool m_Configured;
+    */
   };
 
 } // ecapseman