]> Creatis software - cpPlugins.git/commitdiff
Seed widget cleaned.
authorLeonardo Florez <leonardo@iMac-de-Andrea.local>
Fri, 30 Sep 2016 01:21:52 +0000 (20:21 -0500)
committerLeonardo Florez <leonardo@iMac-de-Andrea.local>
Fri, 30 Sep 2016 01:21:52 +0000 (20:21 -0500)
lib/Instances/cpPlugins_ImageNeighborhoodIterators.i
plugins/Widgets/SeedWidget.cxx
plugins/Widgets/SeedWidget.h

index c2c84215085452147e3f37f734411bd1d4d4b927..1b7bd352c331a9f6c4afee93e888236ffe6a67f9 100644 (file)
@@ -20,6 +20,7 @@ t itkZeroFluxNeumannBoundaryCondition
 ** ===============
 
 c itk::Neighborhood< #pixels#*, #process_dims#, itk::NeighborhoodAllocator< #pixels#* > >
+c itk::Neighborhood< #pixels#, #process_dims#, itk::NeighborhoodAllocator< #pixels# > >
 c itk::ZeroFluxNeumannBoundaryCondition< itk::Image< #pixels#, #process_dims# >, itk::Image< #pixels#, #process_dims# > >
 c itk::$ ;Const;Shaped;ConstShaped$NeighborhoodIterator< itk::Image< #pixels#, #process_dims# >, itk::ZeroFluxNeumannBoundaryCondition< itk::Image< #pixels#, #process_dims# >, itk::Image< #pixels#, #process_dims# > > >
 
index 9aeb584d837d2a0c39dabb0f7b8737bfb96ca618..646c7b063afd0d4f8c2a534f6353c60ea97bd204 100644 (file)
@@ -7,6 +7,8 @@
 #include <vtkImageData.h>
 #include <vtkProperty.h>
 #include <vtkRenderer.h>
+#include <vtkRendererCollection.h>
+#include <vtkRenderWindow.h>
 #include <vtkRenderWindowInteractor.h>
 #include <cpExtensions/QT/SimpleMPRWidget.h>
 
 // This callback is responsible for changing update time
 namespace cpPluginsWidgets
 {
-  /**
-   */
-  /* TODO
+    /**
+     */
      class SeedWidgetCallback
-     : public vtkCommand
-     {
-     public:
-     static SeedWidgetCallback* New( )
-     { return( new SeedWidgetCallback ); }
-     virtual void Execute( vtkObject* caller, unsigned long id, void* data )
-     {
-     typedef cpPluginsWidgets::SeedWidget::TImageActor _TImageActor;
-     auto actor = dynamic_cast< _TImageActor* >( caller );
-
-     if( id == vtkCommand::InteractionEvent && actor != NULL )
-     {
-     int slice = actor->GetSliceNumber( );
-     if( this->Data->ActualWidgetId != slice )
-     {
-     this->Data->Widgets[ this->Data->ActualWidgetId ]->EnabledOff( );
-     this->Data->Widgets[ slice ]->EnabledOn( );
-     this->Data->ActualWidgetId = slice;
-
-     } // fi
-     }
-     else if(
-     (
-     id == vtkCommand::CursorChangedEvent ||
-     id == vtkCommand::PlacePointEvent
-     ) &&
-     this->Widget != NULL
-     )
-     this->Widget->Modified( );
+      : public vtkCommand
+       {
+       public:
+       static SeedWidgetCallback* New( )
+       { return( new SeedWidgetCallback ); }
+       virtual void Execute( vtkObject* caller, unsigned long id, void* data )
+       {
+        /*
+       typedef cpPluginsWidgets::SeedWidget::TImageActor _TImageActor;
+       auto actor = dynamic_cast< _TImageActor* >( caller );
+*/
+/*
+       if( id == vtkCommand::InteractionEvent && actor != NULL )
+       {
+       int slice = actor->GetSliceNumber( );
+       if( this->Data->ActualWidgetId != slice )
+       {
+       this->Data->Widgets[ this->Data->ActualWidgetId ]->EnabledOff( );
+       this->Data->Widgets[ slice ]->EnabledOn( );
+       this->Data->ActualWidgetId = slice;
+
+       } // fi
+       }
+       else
+*/
+   //       id == vtkCommand::CursorChangedEvent ||
+        if( id == vtkCommand::PlacePointEvent )
+        {
+          auto wdg = dynamic_cast< cpExtensions::Interaction::SeedWidget* >( caller );
+          if( wdg != NULL )
+          {
+            auto rep =
+              dynamic_cast< vtkSeedRepresentation* >(
+                 wdg->GetRepresentation( )
+                 );
+            if( rep != NULL )
+            {
+              unsigned long nSeeds = rep->GetNumberOfSeeds( );
+              if( nSeeds > 0 )
+              {
+                double pos[ 3 ];
+                rep->GetSeedWorldPosition( nSeeds - 1, pos );
+
+                Seeds->GetPoints( )->InsertNextPoint( pos );
+                Seeds->GetVerts( )->InsertNextCell( 1 );
+                Seeds->GetVerts( )->InsertCellPoint( nSeeds - 1 );
+              }
+             } // fi
+
+
+          }
+       }
      }
 
-     protected:
-     SeedWidgetCallback( )
-     : vtkCommand( ),
-     Widget( NULL ),
-     Data( NULL )
-     { }
-     virtual ~SeedWidgetCallback( ) { }
-
+       protected:
+       SeedWidgetCallback( )
+       : vtkCommand( ),
+         Seeds( NULL )
+/*
+       ,
+       Widget( NULL ),
+       Data( NULL )
+       */
+       { }
+       virtual ~SeedWidgetCallback( ) { }
      public:
-     SeedWidget* Widget;
-     SeedWidget::TWidgetData* Data;
-     };
-  */
+      vtkPolyData* Seeds;
+  /*
+       public:
+       SeedWidget* Widget;
+       SeedWidget::TWidgetData* Data;
+       */
+       };
 
-} // ecapseman
+  } // ecapseman
 
 // -------------------------------------------------------------------------
 cpPluginsWidgets::SeedWidget::
@@ -96,7 +126,7 @@ cpPluginsWidgets::SeedWidget::
 ~SeedWidget( )
 {
   for( auto i = this->m_Data.begin( ); i != this->m_Data.end( ); ++i )
-    delete w->second;
+    delete i->second;
   this->m_Data.clear( );
 }
 
@@ -104,6 +134,12 @@ cpPluginsWidgets::SeedWidget::
 void cpPluginsWidgets::SeedWidget::
 _GenerateData( )
 {
+  auto image = this->GetInputData< vtkImageData >( "Input" );
+  if( image != NULL )
+    this->_GD0_Image( image );
+  else
+    this->_Error( "Invalid input image." );
+
   // TODO: std::string init_value = this->m_Parameters.GetString( "Text" );
 
   /* TODO
@@ -200,10 +236,6 @@ _GenerateData( )
 void cpPluginsWidgets::SeedWidget::
 _Configure( )
 {
-  auto o = this->GetInputData( "Input" );
-  cpPlugins_Demangle_ImageVisualDims( o, _GD0_Image );
-  else this->_Error( "Invalid input image." );
-
   /* TODO
      typedef cpPlugins::DataObjects::Image _TImage;
 
@@ -252,23 +284,57 @@ _Configure( )
 }
 
 // -------------------------------------------------------------------------
-template< class _TImage >
 void cpPluginsWidgets::SeedWidget::
-_GD0_Image( _TImage* image )
+_GD0_Image( vtkImageData* image )
 {
-  std::cout << image << std::endl;
-
-  /* TODO
-     for( auto p = this->m_Props.begin( ); p != this->m_Props.end( ); ++p )
-     {
-     TWidgetData* d =
-     new TWidgetData(
-     this, dynamic_cast< TImageActor* >( p->first ), p->second
-     );
-     this->m_Widgets.push_back( d );
+  if( this->m_Data.size( ) == 0 )
+  {
+    auto cb = vtkSmartPointer< SeedWidgetCallback >::New( );
+    cb->Seeds = this->GetOutputData< vtkPolyData >( "Output" );
+     this->m_Command = cb;
+
+  for(
+    auto inIt = this->m_Interactors.begin( );
+    inIt != this->m_Interactors.end( );
+    ++inIt
+    )
+  {
+    auto rends = ( *inIt )->GetRenderWindow( )->GetRenderers( );
+    std::set< TImageActor* > all_props;
+    if( rends != NULL )
+    {
+      rends->InitTraversal( );
+      while( vtkRenderer* ren = rends->GetNextItem( ) )
+      {
+        auto props = ren->GetViewProps( );
+        props->InitTraversal( );
+        while( vtkProp* p = props->GetNextProp( ) )
+        {
+          auto image_actor = dynamic_cast< TImageActor* >( p );
+          if( image_actor != NULL )
+          {
+            if( image_actor->GetImage( ) == image )
+            all_props.insert( image_actor );
+
+          }
+
+        } // elihw
+      } // elihw
+
+    } // fi
+    if( all_props.size( ) == 1 )
+    {
+     this->m_Data[ *inIt ] =
+       new TWidgetData( this, *( all_props.begin( ) ), *inIt, this->m_Command );
+    }
+
+  } // rof
+}
+else
+{
+  // akjhdaksjhd
+}
 
-     } // rof
-  */
 }
 
 // -------------------------------------------------------------------------
@@ -276,9 +342,18 @@ cpPluginsWidgets::SeedWidget::TWidgetData::
 TWidgetData(
   SeedWidget* seedWidget,
   TImageActor* actor,
-  vtkRenderWindowInteractor* iren
+  vtkRenderWindowInteractor* iren,
+  vtkCommand* cmd
   )
 {
+  auto cb = dynamic_cast< SeedWidgetCallback* >( cmd );
+/*
+     auto cb = vtkSmartPointer< SeedWidgetCallback >::New( );
+     cb->Widget = seedWidget;
+     cb->Data = this;
+     this->Command = cb;
+     actor->AddObserver( vtkCommand::InteractionEvent, cb );
+*/
   /* TODO
      auto image = actor->GetImage( );
      int ori = actor->GetOrientation( );
@@ -298,11 +373,12 @@ TWidgetData(
   this->Representation->SetHandleRepresentation( this->Handle );
   this->Widget->SetRepresentation( this->Representation );
   this->Widget->SetInteractor( iren );
-  /* TODO
-     this->Widget->AddObserver( vtkCommand::PlacePointEvent, cb );
-     this->Widget->AddObserver( vtkCommand::CursorChangedEvent, cb );
-  */
-  this->Widget->EnabledOff( );
+  if( cb != NULL )
+  {
+    this->Widget->AddObserver( vtkCommand::PlacePointEvent, cb );
+    this->Widget->AddObserver( vtkCommand::CursorChangedEvent, cb );
+  }
+  this->Widget->EnabledOn( );
 
   /* TODO
      this->Widgets.push_back( wdg );
index 663d539d2cf1e761ee2a3975dc4281cac1afa1f7..94101deed344b61986089c1fead42ca166c61c11 100644 (file)
@@ -61,7 +61,8 @@ namespace cpPluginsWidgets
       TWidgetData(
         SeedWidget* seedWidget,
         TImageActor* actor,
-        vtkRenderWindowInteractor* iren
+        vtkRenderWindowInteractor* iren,
+        vtkCommand* cmd
         );
       virtual ~TWidgetData( );
     };
@@ -69,11 +70,11 @@ namespace cpPluginsWidgets
   protected:
     void _Configure( );
 
-    template< class _TImage >
-    inline void _GD0_Image( _TImage* image );
+    inline void _GD0_Image( vtkImageData* image );
 
   protected:
     std::map< vtkRenderWindowInteractor*, TWidgetData* > m_Data;
+    vtkSmartPointer< vtkCommand > m_Command;
 
     /* TODO
        std::map< vtkProp*, vtkRenderWindowInteractor* > m_Props;