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.CreateObject( "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->SetInputImage( image->GetVTK< vtkImageData >( ) );
100 image_actors->SetAxis( 2 );
101 image_actors->PushActorsInto( window );
103 vtkSmartPointer< vtkImageActorPointPlacer > placer =
104 vtkSmartPointer< vtkImageActorPointPlacer >::New( );
105 placer->SetImageActor( image_actors->GetImageActor( ) );
107 // Create the widget and its representation
108 vtkSmartPointer< vtkPointHandleRepresentation3D > handle =
109 vtkSmartPointer< vtkPointHandleRepresentation3D >::New( );
110 handle->GetProperty( )->SetColor( 1, 0, 0 );
111 handle->SetPointPlacer( placer );
112 vtkSmartPointer< vtkSeedRepresentation > rep =
113 vtkSmartPointer< vtkSeedRepresentation >::New( );
114 rep->SetHandleRepresentation( handle );
116 vtkSmartPointer< TSeedWidget > widget =
117 vtkSmartPointer< TSeedWidget >::New( );
118 widget->SetInteractor( interactor );
119 widget->SetRepresentation( rep );
122 renderer->ResetCamera( );
125 interactor->Start( );