#include #include #include #include #include #include #include #include #include #include #include #include #include #include int main( int argc, char* argv[] ) { if( argc < 4 ) { std::cerr << "Usage: " << argv[ 0 ] << " plugins_file" << " input_image" << " pixel_type" << 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; typedef TInterface::TClasses TClasses; TInterface plugins; plugins.Load( plugins_file ); // Create objects typedef cpPlugins::Interface::ProcessObject TProcessObject; typedef cpPlugins::Interface::Parameters TParameters; cpPlugins::Interface::ProcessObject::Pointer reader; reader = plugins.CreateProcessObject( "cpPlugins::Plugins::ImageReader" ); if( reader.IsNull( ) ) { std::cerr << "No suitable reader found in plugins." << std::endl; return( 1 ); } // fi // 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 ); reader->SetParameters( reader_params ); // Execute reader std::string msg = reader->Update( ); if( msg != "" ) std::cerr << "ERROR: " << msg << std::endl; // Visualization stuff vtkSmartPointer< vtkRenderWindow > window = vtkSmartPointer< vtkRenderWindow >::New( ); 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 ); // Begin interaction xrenderer->ResetCamera( ); yrenderer->ResetCamera( ); zrenderer->ResetCamera( ); wrenderer->ResetCamera( ); window->Render( ); interactor->Start( ); return( 0 ); } // eof - $RCSfile$