2 # ---------------------------------------------------------------------
4 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
6 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
7 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
8 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
10 # This software is governed by the CeCILL-B license under French law and
11 # abiding by the rules of distribution of free software. You can use,
12 # modify and/ or redistribute the software under the terms of the CeCILL-B
13 # license as circulated by CEA, CNRS and INRIA at the following URL
14 # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
15 # or in the file LICENSE.txt.
17 # As a counterpart to the access to the source code and rights to copy,
18 # modify and redistribute granted by the license, users are provided only
19 # with a limited warranty and the software's author, the holder of the
20 # economic rights, and the successive licensors have only limited
23 # The fact that you are presently reading this means that you have had
24 # knowledge of the CeCILL-B license and that you accept its terms.
25 # ------------------------------------------------------------------------
28 #include "creaVtkPlaneWidget.h"
30 #include "vtkRenderWindow.h"
34 void creaVtkCallbackPlaneWidget::Execute(vtkObject *caller, unsigned long, void*)
36 if (creavtkplanewidget!=NULL)
38 creavtkplanewidget->UpdatePlane();
39 creavtkplanewidget->Execute();
44 //------------------------------------------------------------------------
45 //------------------------------------------------------------------------
46 //------------------------------------------------------------------------
47 //------------------------------------------------------------------------
48 //------------------------------------------------------------------------
49 creaVtkPlaneWidget::creaVtkPlaneWidget()
53 _vPlaneWidget = vtkPlaneWidget::New();
54 _vPlaneSource = vtkPlaneSource::New();
57 //------------------------------------------------------------------------
58 creaVtkPlaneWidget::~creaVtkPlaneWidget()
60 _vPlaneWidget->Delete();
63 //------------------------------------------------------------------------
64 void creaVtkPlaneWidget::SetImage(vtkImageData* image)
69 //------------------------------------------------------------------------
70 vtkImageData* creaVtkPlaneWidget::GetImage()
75 //------------------------------------------------------------------------
76 void creaVtkPlaneWidget::SetActive(bool active)
81 //------------------------------------------------------------------------
82 bool creaVtkPlaneWidget::GetActive()
87 //------------------------------------------------------------------------
88 void creaVtkPlaneWidget::SetRenderer(vtkRenderer* renderer)
93 //------------------------------------------------------------------------
94 vtkRenderer* creaVtkPlaneWidget::GetRenderer()
99 //------------------------------------------------------------------------
100 vtkPlaneSource* creaVtkPlaneWidget::GetPlaneSource()
102 return _vPlaneSource;
105 //------------------------------------------------------------------------
106 void creaVtkPlaneWidget::SetResolution(int resolution)
108 _resolution = resolution;
111 //------------------------------------------------------------------------
112 int creaVtkPlaneWidget::GetResolution()
118 //------------------------------------------------------------------------
119 void creaVtkPlaneWidget::SetRepresentation(int representation)
121 _representation = representation;
124 //------------------------------------------------------------------------
125 int creaVtkPlaneWidget::GetRepresentation()
127 return _representation;
132 //------------------------------------------------------------------------
133 std::vector<double> creaVtkPlaneWidget::GetCenter()
135 std::vector<double> vecCenter;
137 _vPlaneWidget->GetCenter(point);
138 vecCenter.push_back(point[0]);
139 vecCenter.push_back(point[1]);
140 vecCenter.push_back(point[2]);
144 //------------------------------------------------------------------------
145 std::vector<double> creaVtkPlaneWidget::GetNormal()
147 std::vector<double> vecNormal;
149 _vPlaneWidget->GetNormal(point);
150 vecNormal.push_back(point[0]);
151 vecNormal.push_back(point[1]);
152 vecNormal.push_back(point[2]);
156 void creaVtkPlaneWidget::SetOrigin(std::vector<double> origin)
161 //------------------------------------------------------------------------
162 void creaVtkPlaneWidget::Process()
164 if ((GetActive()==true) && (GetRenderer()!=NULL))
167 //EED 2017-01-01 Migration VTK7
168 #if VTK_MAJOR_VERSION <= 5
169 _vPlaneWidget->SetInput( GetImage() );
171 _vPlaneWidget->SetInputData( GetImage() );
173 _vPlaneWidget->SetInteractor( GetRenderer()->GetRenderWindow()->GetInteractor() );
174 _vPlaneWidget->NormalToXAxisOn();
175 _vPlaneWidget->NormalToZAxisOn();
176 _vPlaneWidget->SetResolution(_resolution);
177 if (_representation==0){ _vPlaneWidget->SetRepresentationToOutline(); }
178 if (_representation==1){ _vPlaneWidget->SetRepresentationToWireframe(); }
179 if (_representation==2){ _vPlaneWidget->SetRepresentationToSurface(); }
180 _vPlaneWidget->SetPlaceFactor(1); //defini zoom initial
181 _vPlaneWidget->SetHandleSize(0.01);
183 _vPlaneWidget->Print(std::cout);
184 if (_origin.size()==3)
186 _vPlaneWidget->SetCenter( _origin[0] , _origin[1] , _origin[2] );
188 if (_firsttime==true )
191 _vPlaneWidget->PlaceWidget();
192 creaVtkCallbackPlaneWidget *creavtkcallbackplanewidget = creaVtkCallbackPlaneWidget::New();
193 creavtkcallbackplanewidget->creavtkplanewidget = this ;
194 _vPlaneWidget->AddObserver( vtkCommand::InteractionEvent , creavtkcallbackplanewidget );
195 _vPlaneWidget->AddObserver( vtkCommand::StartInteractionEvent , creavtkcallbackplanewidget );
196 _vPlaneWidget->AddObserver( vtkCommand::EnableEvent , creavtkcallbackplanewidget );
200 _vPlaneWidget->Off();
201 } // if Active Render
207 //------------------------------------------------------------------------
208 void creaVtkPlaneWidget::UpdatePlane()
215 _vPlaneWidget->GetOrigin(p0);
216 _vPlaneWidget->GetCenter(c); //These is from Execute Method
217 _vPlaneWidget->GetNormal(n);
218 _vPlaneWidget->GetPoint1(p1);
219 _vPlaneWidget->GetPoint2(p2);
221 _vPlaneSource->SetResolution( GetResolution(), GetResolution() );
222 _vPlaneSource->SetOrigin( p0 );
223 _vPlaneSource->SetPoint1( p1 );
224 _vPlaneSource->SetPoint2( p2 );
225 _vPlaneSource->Update( );
226 _vPlaneSource->SetNormal( n[ 0 ], n[ 1 ], n[ 2 ] );
227 _vPlaneSource->Update( );
228 _vPlaneSource->SetCenter( c );
229 _vPlaneSource->Update( );
232 //------------------------------------------------------------------------
233 void creaVtkPlaneWidget::Execute() // virutal
235 printf("EED creaVtkPlaneWidget::Execute (virtual )\n");