1 #include <cpPlugins/Interface/Interface.h>
2 #include <cpPlugins/Interface/ProcessObject.h>
3 #include <cpPlugins/Interface/Image.h>
5 #include <cpExtensions/Visualization/ImageSliceActors.h>
6 #include <cpExtensions/Interaction/SphereWidget.h>
8 #include <vtkImageActorPointPlacer.h>
9 #include <vtkPointHandleRepresentation3D.h>
10 #include <vtkProperty.h>
11 #include <vtkRenderer.h>
12 #include <vtkRenderWindow.h>
13 #include <vtkRenderWindowInteractor.h>
14 #include <vtkSphere.h>
15 #include <vtkSphereRepresentation.h>
16 #include <vtkSphereWidget2.h>
18 // -------------------------------------------------------------------------
21 typedef cpPlugins::Interface::Interface TInterface;
22 typedef cpPlugins::Interface::ProcessObject TProcessObject;
23 typedef cpPlugins::Interface::DataObject TDataObject;
24 typedef cpPlugins::Interface::Image TImage;
25 typedef cpPlugins::Interface::Parameters TParameters;
26 typedef TInterface::TClasses TClasses;
28 typedef cpExtensions::Visualization::ImageSliceActors TSliceActors;
29 typedef cpExtensions::Interaction::SphereWidget TSphereWidget;
31 // -------------------------------------------------------------------------
33 std::string _path = "C://dev//creatis//cpPlugins//build//Debug//cpPluginsIO.dll";
34 std::string _img = "C://img//SphereVolume.mhd";
36 int main(int argc, char* argv[])
46 if (!plugins.Load(_path))
48 std::cerr << "Failed to load plugins." << std::endl;
53 TProcessObject::Pointer reader;
54 reader = plugins.CreateProcessObject("cpPlugins::IO::ImageReader");
58 << "No suitable reader found in plugins." << std::endl
59 << "Reader: " << reader.GetPointer() << std::endl
65 TParameters* reader_params = reader->GetParameters();
66 reader_params->AddToStringList("FileNames", _img);
69 std::string err = reader->Update();
72 std::cerr << "ERROR: " << err << std::endl;
77 TImage* image = reader->GetOutput< TImage >("Output");
79 // Configure visualization objects
80 vtkSmartPointer< vtkRenderer > renderer =
81 vtkSmartPointer< vtkRenderer >::New();
82 renderer->SetBackground(0.1, 0.1, 0.1);
84 vtkSmartPointer< vtkRenderWindow > window =
85 vtkSmartPointer< vtkRenderWindow >::New();
86 window->AddRenderer(renderer);
87 window->SetSize(600, 600);
89 // Set up the interaction
90 vtkSmartPointer< vtkRenderWindowInteractor > interactor =
91 vtkSmartPointer< vtkRenderWindowInteractor >::New();
92 window->SetInteractor(interactor);
94 // Create slice actors
95 vtkSmartPointer< TSliceActors > image_actors =
96 vtkSmartPointer< TSliceActors >::New();
97 image_actors->AddInputData(image->GetVTK< vtkImageData >(), 2);
98 image_actors->PushActorsInto(window);
100 vtkSmartPointer< vtkImageActorPointPlacer > placer =
101 vtkSmartPointer< vtkImageActorPointPlacer >::New();
102 placer->SetImageActor(image_actors->GetImageActor(0));
104 // Create a sphere widget
105 vtkSmartPointer<TSphereWidget> sphereWidget =
106 vtkSmartPointer<TSphereWidget>::New();
107 sphereWidget->SetInteractor(interactor);
108 sphereWidget->CreateDefaultRepresentation();
110 vtkSphereRepresentation* sphereRepresentation =
111 vtkSphereRepresentation::SafeDownCast(sphereWidget->GetRepresentation());
112 sphereRepresentation->HandleVisibilityOn();
115 renderer->ResetCamera();