5 #include <vtkRenderer.h>
6 #include <vtkRenderWindow.h>
7 #include <vtkRenderWindowInteractor.h>
9 #include <cpPlugins/Interface/Interface.h>
10 #include <cpPlugins/Interface/ProcessObject.h>
11 #include <cpPlugins/Interface/Image.h>
13 #include <cpExtensions/Visualization/ImageSliceActors.h>
15 // -------------------------------------------------------------------------
16 typedef cpPlugins::Interface::Interface TInterface;
17 typedef cpPlugins::Interface::ProcessObject TProcessObject;
18 typedef cpPlugins::Interface::DataObject TDataObject;
19 typedef cpPlugins::Interface::Image TImage;
20 typedef cpPlugins::Interface::Parameters TParameters;
21 typedef TInterface::TClasses TClasses;
23 typedef cpExtensions::Visualization::ImageSliceActors TSliceActors;
25 // -------------------------------------------------------------------------
26 int main( int argc, char* argv[] )
31 << "Usage: " << argv[ 0 ]
32 << " plugins_file input_image"
40 if( !plugins.Load( argv[ 1 ] ) )
42 std::cerr << "Failed to load plugins." << std::endl;
48 TProcessObject::Pointer reader;
49 reader = plugins.CreateProcessObject( "cpPlugins::IO::ImageReader" );
50 if( reader.IsNull( ) )
53 << "No suitable reader found in plugins." << std::endl
54 << "Reader: " << reader.GetPointer( ) << std::endl
61 TParameters reader_params = reader->GetDefaultParameters( );
62 for( int i = 2; i < argc; ++i )
63 reader_params.AddValueToStringList( "FileNames", argv[ i ] );
64 reader->SetParameters( reader_params );
67 std::string err = reader->Update( );
70 std::cerr << "ERROR: " << err << std::endl;
74 TImage* image = reader->GetOutput< TImage >( 0 );
76 // Configure visualization objects
77 vtkSmartPointer< vtkRenderer > renderer =
78 vtkSmartPointer< vtkRenderer >::New( );
79 renderer->SetBackground( 0.1, 0.3, 0.5 );
81 vtkSmartPointer< vtkRenderWindow > window =
82 vtkSmartPointer< vtkRenderWindow >::New( );
83 window->AddRenderer( renderer );
84 window->SetSize( 600, 600 );
86 // Set up the interaction
87 vtkSmartPointer< vtkRenderWindowInteractor > interactor =
88 vtkSmartPointer< vtkRenderWindowInteractor >::New( );
89 window->SetInteractor( interactor );
91 // Create slice actors
92 vtkSmartPointer< TSliceActors > image_actors =
93 vtkSmartPointer< TSliceActors >::New( );
94 image_actors->AddInputData(
95 image->GetVTK< vtkImageData >( ), 2,
96 TSliceActors::LUTType_WindowLevel
98 image_actors->PushActorsInto( window );
101 renderer->ResetCamera( );
103 interactor->Start( );