#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // ------------------------------------------------------------------------- typedef cpPlugins::Interface::Interface TInterface; typedef cpPlugins::Interface::ProcessObject TProcessObject; typedef cpPlugins::Interface::DataObject TDataObject; typedef cpPlugins::Interface::Image TImage; typedef cpPlugins::Interface::Parameters TParameters; typedef TInterface::TClasses TClasses; typedef cpExtensions::Visualization::ImageSliceActors TSliceActors; typedef cpExtensions::Interaction::SeedWidget TSeedWidget; // ------------------------------------------------------------------------- int main( int argc, char* argv[] ) { if( argc < 3 ) { std::cerr << "Usage: " << argv[ 0 ] << " plugins_file input_image" << std::endl; return( 1 ); } // fi // Create interface TInterface plugins; if( !plugins.Load( argv[ 1 ] ) ) { std::cerr << "Failed to load plugins." << std::endl; return( 1 ); } // fi // Create objects TProcessObject::Pointer reader; reader = plugins.CreateObject( "cpPlugins::IO::ImageReader" ); if( reader.IsNull( ) ) { std::cerr << "No suitable reader found in plugins." << std::endl << "Reader: " << reader.GetPointer( ) << std::endl << std::endl; return( 1 ); } // fi // Configure reader TParameters* reader_params = reader->GetParameters( ); for( int i = 2; i < argc; ++i ) reader_params->AddToStringList( "FileNames", argv[ i ] ); // Execute pipeline std::string err = reader->Update( ); if( err != "" ) { std::cerr << "ERROR: " << err << std::endl; return( 1 ); } // fi TImage* image = reader->GetOutput< TImage >( "Output" ); // Configure visualization objects vtkSmartPointer< vtkRenderer > renderer = vtkSmartPointer< vtkRenderer >::New( ); renderer->SetBackground( 0.1, 0.3, 0.5 ); vtkSmartPointer< vtkRenderWindow > window = vtkSmartPointer< vtkRenderWindow >::New( ); window->AddRenderer( renderer ); window->SetSize( 600, 600 ); // Set up the interaction vtkSmartPointer< vtkRenderWindowInteractor > interactor = vtkSmartPointer< vtkRenderWindowInteractor >::New( ); window->SetInteractor( interactor ); // Create slice actors vtkSmartPointer< TSliceActors > image_actors = vtkSmartPointer< TSliceActors >::New( ); image_actors->SetInputImage( image->GetVTK< vtkImageData >( ) ); image_actors->SetAxis( 2 ); image_actors->PushActorsInto( window ); vtkSmartPointer< vtkImageActorPointPlacer > placer = vtkSmartPointer< vtkImageActorPointPlacer >::New( ); placer->SetImageActor( image_actors->GetImageActor( ) ); // Create the widget and its representation vtkSmartPointer< vtkPointHandleRepresentation3D > handle = vtkSmartPointer< vtkPointHandleRepresentation3D >::New( ); handle->GetProperty( )->SetColor( 1, 0, 0 ); handle->SetPointPlacer( placer ); vtkSmartPointer< vtkSeedRepresentation > rep = vtkSmartPointer< vtkSeedRepresentation >::New( ); rep->SetHandleRepresentation( handle ); vtkSmartPointer< TSeedWidget > widget = vtkSmartPointer< TSeedWidget >::New( ); widget->SetInteractor( interactor ); widget->SetRepresentation( rep ); // Begin interaction renderer->ResetCamera( ); window->Render( ); widget->On( ); interactor->Start( ); return( 0 ); } // eof - $RCSfile$