]> Creatis software - cpPlugins.git/blob - appli/examples/example_SphereWidget.cxx
4079b3a3edbd8c7f701c81b2e437b61cd43ed0d9
[cpPlugins.git] / appli / examples / example_SphereWidget.cxx
1 #include <cpPlugins/Interface/Interface.h>
2 #include <cpPlugins/Interface/ProcessObject.h>
3 #include <cpPlugins/Interface/Image.h>
4
5 #include <cpExtensions/Visualization/ImageSliceActors.h>
6 #include <cpExtensions/Interaction/SphereWidget.h>
7
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>
17
18 // -------------------------------------------------------------------------
19 // type definiftions
20
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;
27
28 typedef cpExtensions::Visualization::ImageSliceActors TSliceActors;
29 typedef cpExtensions::Interaction::SphereWidget       TSphereWidget;
30
31 // -------------------------------------------------------------------------
32
33 std::string _pathIOplugin = "C://dev//creatis//cpPlugins//build//Debug//cpPluginsIO.dll";
34 std::string _img = "C://img//SphereVolume.mhd";
35
36 int main(int argc, char* argv[])
37 {
38   if (argc >= 3)
39   {
40     _pathIOplugin = argv[1];
41     _img = argv[2];
42   }
43
44   // Create interface
45   TInterface plugins;
46   if (!plugins.Load(_pathIOplugin))
47   {
48     std::cerr << "Failed to load plugins." << std::endl;
49     return(1);
50   }
51
52   // Create reader
53   TProcessObject::Pointer reader;
54   reader = plugins.CreateProcessObject("cpPlugins::IO::ImageReader");
55   if (reader.IsNull())
56   {
57     std::cerr
58       << "No suitable reader found in plugins." << std::endl
59       << "Reader: " << reader.GetPointer() << std::endl
60       << std::endl;
61     return(1);
62   } 
63
64   // Configure reader
65   TParameters* reader_params = reader->GetParameters();
66   reader_params->AddToStringList("FileNames", _img);
67
68   // Execute pipeline
69   std::string err = reader->Update();
70   if (err != "")
71   {
72     std::cerr << "ERROR: " << err << std::endl;
73     return(1);
74
75   } 
76
77   TImage* image = reader->GetOutput< TImage >("Output");
78
79   // Configure visualization objects
80   vtkSmartPointer< vtkRenderer > renderer =
81     vtkSmartPointer< vtkRenderer >::New();
82   renderer->SetBackground(0.1, 0.1, 0.1);
83
84   vtkSmartPointer< vtkRenderWindow > window =
85     vtkSmartPointer< vtkRenderWindow >::New();
86   window->AddRenderer(renderer);
87   window->SetSize(600, 600);
88
89   // Set up the interaction
90   vtkSmartPointer< vtkRenderWindowInteractor > interactor =
91     vtkSmartPointer< vtkRenderWindowInteractor >::New();
92   window->SetInteractor(interactor);
93
94   // Create slice actors
95   vtkSmartPointer< TSliceActors > image_actors =
96     vtkSmartPointer< TSliceActors >::New();
97   image_actors->AddInputData(image->GetVTK< vtkImageData >());
98   image_actors->SetAxis(2);
99   image_actors->PushActorsInto(window);
100
101   vtkSmartPointer< vtkImageActorPointPlacer > placer =
102     vtkSmartPointer< vtkImageActorPointPlacer >::New();
103   placer->SetImageActor(image_actors->GetImageActor());
104  
105   // Create a sphere widget
106   vtkSmartPointer<TSphereWidget> sphereWidget =
107     vtkSmartPointer<TSphereWidget>::New();
108   sphereWidget->SetInteractor(interactor);
109 //  sphereWidget->CreateDefaultRepresentation();
110
111  /* vtkSphereRepresentation* sphereRepresentation =
112     vtkSphereRepresentation::SafeDownCast(sphereWidget->GetRepresentation());
113   sphereRepresentation->HandleVisibilityOn();*/
114
115   // Begin interaction
116   renderer->ResetCamera();
117   window->Render();
118   sphereWidget->On();
119   interactor->Start();
120
121   return(0);
122 }