]> Creatis software - cpPlugins.git/blob - appli/examples/plugins/example_ShowImage.cxx
MPR objects updated
[cpPlugins.git] / appli / examples / plugins / example_ShowImage.cxx
1 #include <iostream>
2
3 #include <cpExtensions/Visualization/ImageSliceActors.h>
4 #include <cpPlugins/Interface.h>
5
6 #include <vtkImageData.h>
7 #include <vtkRenderer.h>
8 #include <vtkRenderWindow.h>
9 #include <vtkRenderWindowInteractor.h>
10 #include <vtkSmartPointer.h>
11
12 int main( int argc, char* argv[] )
13 {
14   if( argc < 2 )
15   {
16     std::cerr
17       << "Usage: " << argv[ 0 ]
18       << " input_image(s)" << std::endl;
19     return( 1 );
20
21   } // fi
22
23   // Load interface
24   cpPlugins::Interface interface;
25   interface.GuessAccesiblePlugins( );
26
27   // Create filters
28   cpPlugins::ProcessObject::Pointer reader;
29   try
30   {
31     reader = interface.Create( "IO", "ImageReader" );
32     if( reader.IsNull( ) )
33     {
34       std::cerr
35         << "\"IO::ImageReader\" creation failed."
36         << std::endl;
37       return( 1 );
38       
39     } // fi
40
41     // Configure filters
42     auto reader_params = reader->GetParameters( );
43     for( int i = 1; i < argc; ++i )
44       reader_params->AddToOpenFileNameList( "FileNames", argv[ i ] );
45     reader->Update( );
46   }
47   catch( itk::ExceptionObject& err1 )
48   {
49     std::cerr << "Error: " << err1.GetDescription( ) << std::endl;
50     return( 1 );
51   }
52   catch( std::exception& err2 )
53   {
54     std::cerr << "Error: " << err2.what( ) << std::endl;
55     return( 1 );
56
57   } // yrt
58
59   // Prepate slice objects
60   vtkSmartPointer< cpExtensions::Visualization::ImageSliceActors > actors =
61     vtkSmartPointer< cpExtensions::Visualization::ImageSliceActors >::New( );
62   actors->SetInputData(
63     reader->GetOutputData( "Output" )->GetVTK< vtkImageData >( ), 1
64     );
65
66   // Prepare scene
67   vtkSmartPointer< vtkRenderer > ren =
68     vtkSmartPointer< vtkRenderer >::New( );
69   ren->SetBackground( 0, 0, 0 );
70   actors->PushInto( ren );
71
72   vtkSmartPointer< vtkRenderWindow > win =
73     vtkSmartPointer< vtkRenderWindow >::New( );
74   win->AddRenderer( ren );
75   win->SetSize( 500, 500 );
76
77   vtkSmartPointer< vtkRenderWindowInteractor > iren =
78     vtkSmartPointer< vtkRenderWindowInteractor >::New( );
79   iren->SetRenderWindow( win );
80   iren->SetInteractorStyle( actors->GetStyle( ) );
81
82   iren->Initialize( );
83   ren->Render( );
84   ren->ResetCamera( );
85   iren->Start( );
86
87   // Ok finish
88   return( 0 );
89 }
90
91 // eof - $RCSfile$