#include <vtkCommand.h>
#include <vtkInteractorStyleSwitch.h>
-#include <vtkPickingManager.h>
-class vtkUpdateCallback
+#include <fpa/VTK/SeedWidgetCorrector.h>
+
+/**
+ */
+class fpa_VTK_InteractionModeCallback
: public vtkCommand
{
public:
- static vtkUpdateCallback *New()
+ static fpa_VTK_InteractionModeCallback* New( )
{
- return new vtkUpdateCallback;
+ return( new fpa_VTK_InteractionModeCallback );
}
- virtual void Execute(vtkObject *caller, unsigned long eventId, void*
- arguments)
+ virtual void Execute(
+ vtkObject* caller, unsigned long eventId, void* arguments )
{
- vtkRenderWindowInteractor* iren =
- static_cast< vtkRenderWindowInteractor* >( caller );
- if( caller == NULL )
- return;
-
- switch( iren->GetKeyCode( ) )
+ if( eventId == vtkCommand::KeyPressEvent )
{
- case 'x':
- case 'X':
- {
- bool eSeed = ( this->SeedWidget->GetProcessEvents( ) == 1 );
- if( eSeed )
+ vtkRenderWindowInteractor* iren =
+ static_cast< vtkRenderWindowInteractor* >( caller );
+ if( caller == NULL )
+ return;
+
+ switch( iren->GetKeyCode( ) )
{
- this->SeedWidget->ProcessEventsOff( );
- this->WidgetX->InteractionOn( );
- this->WidgetY->InteractionOn( );
- this->WidgetZ->InteractionOn( );
- }
- else
+ case 'x':
+ case 'X':
{
- this->SeedWidget->ProcessEventsOn( );
- this->WidgetX->InteractionOff( );
- this->WidgetY->InteractionOff( );
- this->WidgetZ->InteractionOff( );
-
- } // fi
- }
- break;
- default:
+ bool eSeed = ( this->SeedWidget->GetProcessEvents( ) == 1 );
+ if( eSeed )
+ {
+ this->SeedWidget->ProcessEventsOff( );
+ this->WidgetX->InteractionOn( );
+ this->WidgetY->InteractionOn( );
+ this->WidgetZ->InteractionOn( );
+ }
+ else
+ {
+ this->SeedWidget->ProcessEventsOn( );
+ this->WidgetX->InteractionOff( );
+ this->WidgetY->InteractionOff( );
+ this->WidgetZ->InteractionOff( );
+
+ } // fi
+ }
break;
+ default:
+ break;
+
+ } // hctiws
- } // hctiws
+ } // fi
}
public:
vtkImagePlaneWidget* WidgetX;
vtkImagePlaneWidget* WidgetY;
vtkImagePlaneWidget* WidgetZ;
- vtkSeedWidget2* SeedWidget;
+ vtkSeedWidget* SeedWidget;
};
// -------------------------------------------------------------------------
this->m_Renderer = vtkSmartPointer< vtkRenderer >::New( );
this->m_Window = vtkSmartPointer< vtkRenderWindow >::New( );
this->m_Interactor = vtkSmartPointer< vtkRenderWindowInteractor >::New( );
+ this->m_SeedHandleRepresentation =
+ vtkSmartPointer< vtkPointHandleRepresentation3D >::New( );
+ this->m_SeedRepresentation =
+ vtkSmartPointer< vtkSeedRepresentation >::New( );
+ this->m_SeedWidget = vtkSmartPointer<vtkSeedWidget>::New();
-
-
-
-
-
- handlePointRep3D =
- vtkSmartPointer<vtkPointHandleRepresentation3D>::New();
- //handlePointRep3D->AllOn();
- handlePointRep3D->GetProperty()->SetColor(1.,0.,1.);
- seedRep =
- vtkSmartPointer<vtkSeedRepresentation>::New();
- seedRep->SetHandleRepresentation(handlePointRep3D);
- seedWidget = vtkSmartPointer<vtkSeedWidget2>::New();
-
- seedWidget->SetRepresentation(seedRep);
+ this->m_SeedHandleRepresentation->GetProperty()->SetColor( 1, 0, 1 );
+ this->m_SeedRepresentation->
+ SetHandleRepresentation( this->m_SeedHandleRepresentation );
+ this->m_SeedWidget->SetRepresentation( this->m_SeedRepresentation );
this->m_WidgetX->KeyPressActivationOff( );
this->m_WidgetY->KeyPressActivationOff( );
this->m_WidgetZ->KeyPressActivationOff( );
- seedWidget->KeyPressActivationOff( );
-
- // this->m_Interactor->GetPickingManager( )->AddPicker( this->m_Picker );
-
-
- vtkUpdateCallback* onUpdate = vtkUpdateCallback::New();
- onUpdate->WidgetX = this->m_WidgetX;
- onUpdate->WidgetY = this->m_WidgetY;
- onUpdate->WidgetZ = this->m_WidgetZ;
- onUpdate->SeedWidget = this->seedWidget;
-
- this->m_Interactor->AddObserver(vtkCommand::KeyPressEvent, onUpdate);
+ this->m_SeedWidget->KeyPressActivationOff( );
+
+ vtkSmartPointer< fpa_VTK_InteractionModeCallback > int_cb =
+ vtkSmartPointer< fpa_VTK_InteractionModeCallback >::New( );
+ int_cb->WidgetX = this->m_WidgetX;
+ int_cb->WidgetY = this->m_WidgetY;
+ int_cb->WidgetZ = this->m_WidgetZ;
+ int_cb->SeedWidget = this->m_SeedWidget;
+ this->m_Interactor->AddObserver( vtkCommand::KeyPressEvent, int_cb );
+
+ vtkSmartPointer< fpa::VTK::SeedWidgetCorrector > corr_cb =
+ vtkSmartPointer< fpa::VTK::SeedWidgetCorrector >::New( );
+ corr_cb->Configure( this->m_Picker );
+ this->m_SeedWidget->AddObserver( vtkCommand::PlacePointEvent, corr_cb );
}
-
+
// -------------------------------------------------------------------------
fpa::VTK::ImageMPR::
~ImageMPR( )
this->m_WidgetX->SetInteractor( this->m_Interactor );
this->m_WidgetY->SetInteractor( this->m_Interactor );
this->m_WidgetZ->SetInteractor( this->m_Interactor );
- seedWidget->SetInteractor(this->m_Interactor);
+ this->m_SeedWidget->SetInteractor( this->m_Interactor );
this->m_WidgetX->On( );
this->m_WidgetY->On( );
this->m_WidgetZ->On( );
- seedWidget->On( );
- seedWidget->ProcessEventsOff( );
+ this->m_SeedWidget->On( );
+ this->m_SeedWidget->ProcessEventsOff( );
this->m_Interactor->SetPicker( this->m_Picker );
- this->m_Interactor->GetPickingManager( )->AddPicker( this->m_Picker );
- this->m_Interactor->GetPickingManager( )->EnabledOn( );
+ /*
+ this->m_Interactor->GetPickingManager( )->AddPicker( this->m_Picker );
+ this->m_Interactor->GetPickingManager( )->EnabledOn( );
+ */
}
// -------------------------------------------------------------------------
this->m_Renderer->AddActor( this->m_Actors[ i ] );
}
+// -------------------------------------------------------------------------
+unsigned int fpa::VTK::ImageMPR::
+GetNumberOfSeeds( ) const
+{
+ return( this->m_SeedRepresentation->GetNumberOfSeeds( ) );
+}
+
+// -------------------------------------------------------------------------
+void fpa::VTK::ImageMPR::
+GetSeed( int n, double* s ) const
+{
+ vtkHandleWidget* hWdg = this->m_SeedWidget->GetSeed( n );
+ if( hWdg == NULL )
+ return;
+ vtkHandleRepresentation* hRep =
+ dynamic_cast< vtkHandleRepresentation* >( hWdg->GetRepresentation( ) );
+ if( hRep == NULL )
+ return;
+ hRep->GetWorldPosition( s );
+}
+
// -------------------------------------------------------------------------
vtkRenderWindow* fpa::VTK::ImageMPR::
GetWindow( ) const