]> Creatis software - cpPlugins.git/blob - appli/examples/example_MPR.cxx
6b37e2a181f5aceaed54bebe8a5730a2d16664ea
[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 <cpPlugins/Extensions/Visualization/MPRActors.h>
9
10 #include <vtkActor.h>
11 #include <vtkCallbackCommand.h>
12 #include <vtkProperty.h>
13 #include <vtkRenderer.h>
14 #include <vtkRenderWindow.h>
15 #include <vtkRenderWindowInteractor.h>
16 #include <vtkSmartPointer.h>
17
18 int main( int argc, char* argv[] )
19 {
20   if( argc < 4 )
21   {
22     std::cerr
23       << "Usage: " << argv[ 0 ]
24       << " plugins_file"
25       << " input_image"
26       << " pixel_type" << std::endl;
27     return( 1 );
28
29   } // fi
30   std::string plugins_file = argv[ 1 ];
31   std::string input_image_file = argv[ 2 ];
32   std::string pixel_type = argv[ 3 ];
33
34   // Create interface
35   typedef cpPlugins::Interface::Interface TInterface;
36   typedef TInterface::TClasses            TClasses;
37
38   TInterface plugins;
39   plugins.Load( plugins_file );
40
41   // Create objects
42   typedef cpPlugins::Interface::ProcessObject TProcessObject;
43   typedef cpPlugins::Interface::Parameters    TParameters;
44   cpPlugins::Interface::ProcessObject::Pointer reader;
45
46   reader = plugins.CreateProcessObject( "cpPlugins::Plugins::ImageReader" );
47   if( reader.IsNull( ) )
48   {
49     std::cerr << "No suitable reader found in plugins." << std::endl;
50     return( 1 );
51
52   } // fi
53
54   // Configure reader
55   TParameters reader_params = reader->GetDefaultParameters( );
56   reader_params.SetValueAsString( "FileName", input_image_file );
57   reader_params.SetValueAsString( "PixelType", pixel_type );
58   reader_params.SetValueAsUint( "ImageDimension", 3 );
59   reader_params.SetValueAsUint( "IsColorImage", 0 );
60   reader->SetParameters( reader_params );
61
62   // Execute reader
63   std::string msg = reader->Update( );
64
65   if( msg != "" )
66     std::cerr << "ERROR: " << msg << std::endl;
67
68   // Visualization stuff
69   vtkSmartPointer< vtkRenderWindow > window = 
70     vtkSmartPointer< vtkRenderWindow >::New( );
71
72   vtkSmartPointer< vtkRenderWindowInteractor > interactor = 
73     vtkSmartPointer< vtkRenderWindowInteractor >::New( );
74  
75   interactor->SetRenderWindow( window );
76
77   // Renderers
78   vtkSmartPointer< vtkRenderer > xrenderer =
79     vtkSmartPointer< vtkRenderer >::New( );
80   vtkSmartPointer< vtkRenderer > yrenderer =
81     vtkSmartPointer< vtkRenderer >::New( );
82   vtkSmartPointer< vtkRenderer > zrenderer =
83     vtkSmartPointer< vtkRenderer >::New( );
84   vtkSmartPointer< vtkRenderer > wrenderer =
85     vtkSmartPointer< vtkRenderer >::New( );
86  
87   xrenderer->SetBackground( 0.7, 0.5, 0.5 );
88   yrenderer->SetBackground( 0.5, 0.7, 0.5 );
89   zrenderer->SetBackground( 0.5, 0.5, 0.7 );
90   wrenderer->SetBackground( 0.5, 0.5, 0.5 );
91
92   xrenderer->SetViewport( 0, 0, 0.5, 0.5 );
93   yrenderer->SetViewport( 0, 0.5, 0.5, 1 );
94   zrenderer->SetViewport( 0.5, 0, 1, 0.5 );
95   wrenderer->SetViewport( 0.5, 0.5, 1, 1 );
96
97   window->AddRenderer( xrenderer );
98   window->AddRenderer( yrenderer );
99   window->AddRenderer( zrenderer );
100   window->AddRenderer( wrenderer );
101
102   // Create actors
103   typedef cpPlugins::Extensions::Visualization::MPRActors TMPRActors;
104   vtkSmartPointer< TMPRActors > mprActors =
105     vtkSmartPointer< TMPRActors >::New( );
106   mprActors->SetInputData(
107     dynamic_cast< cpPlugins::Interface::Image* >( reader->GetOutput( 0 ) )->
108     GetVTKImageData( )
109     );
110   mprActors->PushDataInto( xrenderer, yrenderer, zrenderer, wrenderer );
111
112   // Begin interaction
113   xrenderer->ResetCamera( );
114   yrenderer->ResetCamera( );
115   zrenderer->ResetCamera( );
116   wrenderer->ResetCamera( );
117   window->Render( );
118   interactor->Start( );
119
120   return( 0 );
121 }
122
123 // eof - $RCSfile$