]> Creatis software - cpPlugins.git/blob - appli/examples/example_MPR.cxx
...
[cpPlugins.git] / appli / examples / example_MPR.cxx
1 #include <cstdlib>
2 #include <iostream>
3 #include <string>
4
5 #include <cpPlugins/Interface/Interface.h>
6 #include <cpPlugins/Interface/ProcessObject.h>
7 #include <cpPlugins/Interface/Image.h>
8 #include <cpExtensions/Visualization/MPRObjects.h>
9
10 #include <vtkRenderer.h>
11 #include <vtkRenderWindow.h>
12 #include <vtkRenderWindowInteractor.h>
13
14 int main( int argc, char* argv[] )
15 {
16   if( argc < 3 )
17   {
18     std::cerr
19       << "Usage: " << argv[ 0 ]
20       << " plugins_file input_image(s)"
21       << std::endl;
22     return( 1 );
23
24   } // fi
25   std::string plugins_file = argv[ 1 ];
26
27   // Create interface
28   typedef cpPlugins::Interface::Interface TInterface;
29   typedef TInterface::TClasses            TClasses;
30
31   TInterface plugins;
32   plugins.Load( plugins_file );
33
34   // Create objects
35   typedef cpPlugins::Interface::ProcessObject TProcessObject;
36   typedef cpPlugins::Interface::Parameters    TParameters;
37   cpPlugins::Interface::ProcessObject::Pointer reader;
38   reader = plugins.CreateProcessObject( "cpPlugins::ImageReader" );
39   if( reader.IsNull( ) )
40   {
41     std::cerr << "No suitable reader found in plugins." << std::endl;
42     return( 1 );
43
44   } // fi
45
46   // Configure reader
47   TParameters reader_params = reader->GetDefaultParameters( );
48   for( int i = 2; i < argc; ++i )
49     reader_params.AddValueToStringList( "FileNames", argv[ i ] );
50   reader->SetParameters( reader_params );
51
52   // Execute reader
53   std::string msg = reader->Update( );
54   if( msg != "" )
55   {
56     std::cerr << "ERROR: " << msg << std::endl;
57     return( 1 );
58
59   } // fi
60   cpPlugins::Interface::Image* image =
61     dynamic_cast< cpPlugins::Interface::Image* >( reader->GetOutput( 0 ) );
62   vtkImageData* vtk_image = image->GetVTKImageData( );
63   if( vtk_image == NULL )
64   {
65     std::cerr
66       << "ERROR: read image does not have a valid VTK conversion."
67       << std::endl;
68     return( 1 );
69
70   } // fi
71
72   // Visualization stuff
73   vtkSmartPointer< vtkRenderWindow > window =
74     vtkSmartPointer< vtkRenderWindow >::New( );
75   window->SetSize( 700, 700 );
76
77   // Renderers
78   vtkSmartPointer< vtkRenderer > renderer =
79     vtkSmartPointer< vtkRenderer >::New( );
80   window->AddRenderer( renderer );
81
82   // Interactor
83   vtkSmartPointer< vtkRenderWindowInteractor > interactor =
84     vtkSmartPointer< vtkRenderWindowInteractor >::New( );
85   interactor->SetRenderWindow( window );
86
87   // Actors
88   cpExtensions::Visualization::MPRObjects mpr;
89   mpr.SetImage( vtk_image );
90   /*
91     mpr.AssociatePlaneInteractor( 0, interactor );
92     mpr.AssociatePlaneInteractor( 1, interactor );
93     mpr.AssociatePlaneInteractor( 2, interactor );
94   */
95
96   // Begin interaction
97   renderer->ResetCamera( );
98   window->Render( );
99   interactor->Start( );
100
101   return( 0 );
102 }
103
104 // eof - $RCSfile$