]> Creatis software - cpPlugins.git/blob - appli/examples/example_SphereWidget.cxx
widgets update
[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 _path = "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     _path = argv[1];
41     _img = argv[2];
42   }
43
44   // Create interface
45   TInterface plugins;
46   if (!plugins.Load(_path))
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 >(), 2);
98   image_actors->PushActorsInto(window);
99
100   vtkSmartPointer< vtkImageActorPointPlacer > placer =
101     vtkSmartPointer< vtkImageActorPointPlacer >::New();
102   placer->SetImageActor(image_actors->GetImageActor(0));
103  
104   // Create a sphere widget
105   vtkSmartPointer<TSphereWidget> sphereWidget =
106     vtkSmartPointer<TSphereWidget>::New();
107   sphereWidget->SetInteractor(interactor);
108 //  sphereWidget->CreateDefaultRepresentation();
109
110  /* vtkSphereRepresentation* sphereRepresentation =
111     vtkSphereRepresentation::SafeDownCast(sphereWidget->GetRepresentation());
112   sphereRepresentation->HandleVisibilityOn();*/
113
114   // Begin interaction
115   renderer->ResetCamera();
116   window->Render();
117   sphereWidget->On();
118   interactor->Start();
119
120   return(0);
121 }