]> Creatis software - cpPlugins.git/blobdiff - appli/examples/example_MPR.cxx
...
[cpPlugins.git] / appli / examples / example_MPR.cxx
index f3dbffb7599e0581c058cf7d152086cb08b58510..1691e089a0ab571acf47238508146bc5a6327176 100644 (file)
@@ -5,31 +5,24 @@
 #include <cpPlugins/Interface/Interface.h>
 #include <cpPlugins/Interface/ProcessObject.h>
 #include <cpPlugins/Interface/Image.h>
-#include <cpPlugins/Extensions/Visualization/MPRActors.h>
+#include <cpExtensions/Visualization/MPRObjects.h>
 
-#include <vtkActor.h>
-#include <vtkCallbackCommand.h>
-#include <vtkProperty.h>
 #include <vtkRenderer.h>
 #include <vtkRenderWindow.h>
 #include <vtkRenderWindowInteractor.h>
-#include <vtkSmartPointer.h>
 
 int main( int argc, char* argv[] )
 {
-  if( argc < 4 )
+  if( argc < 3 )
   {
     std::cerr
       << "Usage: " << argv[ 0 ]
-      << " plugins_file"
-      << " input_image"
-      << " pixel_type" << std::endl;
+      << " plugins_file input_image(s)"
+      << std::endl;
     return( 1 );
 
   } // fi
   std::string plugins_file = argv[ 1 ];
-  std::string input_image_file = argv[ 2 ];
-  std::string pixel_type = argv[ 3 ];
 
   // Create interface
   typedef cpPlugins::Interface::Interface TInterface;
@@ -42,8 +35,7 @@ int main( int argc, char* argv[] )
   typedef cpPlugins::Interface::ProcessObject TProcessObject;
   typedef cpPlugins::Interface::Parameters    TParameters;
   cpPlugins::Interface::ProcessObject::Pointer reader;
-
-  reader = plugins.CreateProcessObject( "cpPlugins::Plugins::ImageReader" );
+  reader = plugins.CreateProcessObject( "cpPlugins::ImageReader" );
   if( reader.IsNull( ) )
   {
     std::cerr << "No suitable reader found in plugins." << std::endl;
@@ -53,67 +45,56 @@ int main( int argc, char* argv[] )
 
   // Configure reader
   TParameters reader_params = reader->GetDefaultParameters( );
-  reader_params.AddValueToStringList( "FileNames", input_image_file );
-  reader_params.SetValueAsString( "PixelType", pixel_type );
-  reader_params.SetValueAsUint( "ImageDimension", 3 );
-  reader_params.SetValueAsUint( "IsColorImage", 0 );
+  for( int i = 2; i < argc; ++i )
+    reader_params.AddValueToStringList( "FileNames", argv[ i ] );
   reader->SetParameters( reader_params );
 
   // Execute reader
   std::string msg = reader->Update( );
-
   if( msg != "" )
+  {
     std::cerr << "ERROR: " << msg << std::endl;
+    return( 1 );
+
+  } // fi
+  cpPlugins::Interface::Image* image =
+    dynamic_cast< cpPlugins::Interface::Image* >( reader->GetOutput( 0 ) );
+  vtkImageData* vtk_image = image->GetVTKImageData( );
+  if( vtk_image == NULL )
+  {
+    std::cerr
+      << "ERROR: read image does not have a valid VTK conversion."
+      << std::endl;
+    return( 1 );
+
+  } // fi
 
   // Visualization stuff
-  vtkSmartPointer< vtkRenderWindow > window = 
+  vtkSmartPointer< vtkRenderWindow > window =
     vtkSmartPointer< vtkRenderWindow >::New( );
+  window->SetSize( 700, 700 );
 
-  vtkSmartPointer< vtkRenderWindowInteractor > interactor = 
+  // Renderers
+  vtkSmartPointer< vtkRenderer > renderer =
+    vtkSmartPointer< vtkRenderer >::New( );
+  window->AddRenderer( renderer );
+
+  // Interactor
+  vtkSmartPointer< vtkRenderWindowInteractor > interactor =
     vtkSmartPointer< vtkRenderWindowInteractor >::New( );
   interactor->SetRenderWindow( window );
 
-  // Renderers
-  vtkSmartPointer< vtkRenderer > xrenderer =
-    vtkSmartPointer< vtkRenderer >::New( );
-  vtkSmartPointer< vtkRenderer > yrenderer =
-    vtkSmartPointer< vtkRenderer >::New( );
-  vtkSmartPointer< vtkRenderer > zrenderer =
-    vtkSmartPointer< vtkRenderer >::New( );
-  vtkSmartPointer< vtkRenderer > wrenderer =
-    vtkSmartPointer< vtkRenderer >::New( );
-  xrenderer->SetBackground( 0.7, 0.5, 0.5 );
-  yrenderer->SetBackground( 0.5, 0.7, 0.5 );
-  zrenderer->SetBackground( 0.5, 0.5, 0.7 );
-  wrenderer->SetBackground( 0.5, 0.5, 0.5 );
-
-  xrenderer->SetViewport( 0, 0, 0.5, 0.5 );
-  yrenderer->SetViewport( 0, 0.5, 0.5, 1 );
-  zrenderer->SetViewport( 0.5, 0, 1, 0.5 );
-  wrenderer->SetViewport( 0.5, 0.5, 1, 1 );
-
-  window->AddRenderer( xrenderer );
-  window->AddRenderer( yrenderer );
-  window->AddRenderer( zrenderer );
-  window->AddRenderer( wrenderer );
-
-  // Create actors
-  typedef cpPlugins::Extensions::Visualization::MPRActors TMPRActors;
-  vtkSmartPointer< TMPRActors > mprActors =
-    vtkSmartPointer< TMPRActors >::New( );
-  mprActors->SetInputData(
-    dynamic_cast< cpPlugins::Interface::Image* >( reader->GetOutput( 0 ) )->
-    GetVTKImageData( )
-    );
-  mprActors->PushDataInto( xrenderer, yrenderer, zrenderer, wrenderer );
+  // Actors
+  cpExtensions::Visualization::MPRObjects mpr;
+  mpr.SetImage( vtk_image );
+  /*
+    mpr.AssociatePlaneInteractor( 0, interactor );
+    mpr.AssociatePlaneInteractor( 1, interactor );
+    mpr.AssociatePlaneInteractor( 2, interactor );
+  */
 
   // Begin interaction
-  xrenderer->ResetCamera( );
-  yrenderer->ResetCamera( );
-  zrenderer->ResetCamera( );
-  wrenderer->ResetCamera( );
+  renderer->ResetCamera( );
   window->Render( );
   interactor->Start( );