#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 <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