5 #include <vtkImageActorPointPlacer.h>
6 #include <vtkPointHandleRepresentation3D.h>
7 #include <vtkProperty.h>
8 #include <vtkRenderer.h>
9 #include <vtkRenderWindow.h>
10 #include <vtkRenderWindowInteractor.h>
11 #include <vtkSeedRepresentation.h>
13 #include <cpPlugins/Interface/Interface.h>
14 #include <cpPlugins/Interface/ProcessObject.h>
15 #include <cpPlugins/Interface/Image.h>
17 #include <cpExtensions/Visualization/ImageSliceActors.h>
18 #include <cpExtensions/Interaction/SeedWidget.h>
20 // -------------------------------------------------------------------------
21 typedef cpPlugins::Interface::Interface TInterface;
22 typedef cpPlugins::Interface::ProcessObject TProcessObject;
23 typedef cpPlugins::Interface::DataObject TDataObject;
24 typedef cpPlugins::Interface::Image TImage;
25 typedef cpPlugins::Interface::Parameters TParameters;
26 typedef TInterface::TClasses TClasses;
28 typedef cpExtensions::Visualization::ImageSliceActors TSliceActors;
29 typedef cpExtensions::Interaction::SeedWidget TSeedWidget;
31 // -------------------------------------------------------------------------
32 int main( int argc, char* argv[] )
37 << "Usage: " << argv[ 0 ]
38 << " plugins_file input_image"
46 if( !plugins.Load( argv[ 1 ] ) )
48 std::cerr << "Failed to load plugins." << std::endl;
54 TProcessObject::Pointer reader;
55 reader = plugins.CreateProcessObject( "cpPlugins::IO::ImageReader" );
56 if( reader.IsNull( ) )
59 << "No suitable reader found in plugins." << std::endl
60 << "Reader: " << reader.GetPointer( ) << std::endl
67 TParameters* reader_params = reader->GetParameters( );
68 for( int i = 2; i < argc; ++i )
69 reader_params->AddToStringList( "FileNames", argv[ i ] );
72 std::string err = reader->Update( );
75 std::cerr << "ERROR: " << err << std::endl;
79 TImage* image = reader->GetOutput< TImage >( "Output" );
81 // Configure visualization objects
82 vtkSmartPointer< vtkRenderer > renderer =
83 vtkSmartPointer< vtkRenderer >::New( );
84 renderer->SetBackground( 0.1, 0.3, 0.5 );
86 vtkSmartPointer< vtkRenderWindow > window =
87 vtkSmartPointer< vtkRenderWindow >::New( );
88 window->AddRenderer( renderer );
89 window->SetSize( 600, 600 );
91 // Set up the interaction
92 vtkSmartPointer< vtkRenderWindowInteractor > interactor =
93 vtkSmartPointer< vtkRenderWindowInteractor >::New( );
94 window->SetInteractor( interactor );
96 // Create slice actors
97 vtkSmartPointer< TSliceActors > image_actors =
98 vtkSmartPointer< TSliceActors >::New( );
99 image_actors->AddInputData( image->GetVTK< vtkImageData >( ), 2 );
100 image_actors->PushActorsInto( window );
102 vtkSmartPointer< vtkImageActorPointPlacer > placer =
103 vtkSmartPointer< vtkImageActorPointPlacer >::New( );
104 placer->SetImageActor( image_actors->GetImageActor( 0 ) );
106 // Create the widget and its representation
107 vtkSmartPointer< vtkPointHandleRepresentation3D > handle =
108 vtkSmartPointer< vtkPointHandleRepresentation3D >::New( );
109 handle->GetProperty( )->SetColor( 1, 0, 0 );
110 handle->SetPointPlacer( placer );
111 vtkSmartPointer< vtkSeedRepresentation > rep =
112 vtkSmartPointer< vtkSeedRepresentation >::New( );
113 rep->SetHandleRepresentation( handle );
115 vtkSmartPointer< TSeedWidget > widget =
116 vtkSmartPointer< TSeedWidget >::New( );
117 widget->SetInteractor( interactor );
118 widget->SetRepresentation( rep );
121 renderer->ResetCamera( );
124 interactor->Start( );