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()
52 _vPlaneWidget = vtkPlaneWidget::New();
53 _vPlaneSource = vtkPlaneSource::New();
56 //------------------------------------------------------------------------
57 creaVtkPlaneWidget::~creaVtkPlaneWidget()
59 _vPlaneWidget->Delete();
62 //------------------------------------------------------------------------
63 void creaVtkPlaneWidget::SetImage(vtkImageData* image)
68 //------------------------------------------------------------------------
69 vtkImageData* creaVtkPlaneWidget::GetImage()
74 //------------------------------------------------------------------------
75 void creaVtkPlaneWidget::SetActive(bool active)
80 //------------------------------------------------------------------------
81 bool creaVtkPlaneWidget::GetActive()
86 //------------------------------------------------------------------------
87 void creaVtkPlaneWidget::SetRenderer(vtkRenderer* renderer)
92 //------------------------------------------------------------------------
93 vtkRenderer* creaVtkPlaneWidget::GetRenderer()
98 //------------------------------------------------------------------------
99 vtkPlaneSource* creaVtkPlaneWidget::GetPlaneSource()
101 return _vPlaneSource;
104 //------------------------------------------------------------------------
105 void creaVtkPlaneWidget::SetResolution(int resolution)
107 _resolution = resolution;
110 //------------------------------------------------------------------------
111 int creaVtkPlaneWidget::GetResolution()
118 //------------------------------------------------------------------------
119 std::vector<double> creaVtkPlaneWidget::GetCenter()
121 std::vector<double> vecCenter;
123 _vPlaneWidget->GetCenter(point);
124 vecCenter.push_back(point[0]);
125 vecCenter.push_back(point[1]);
126 vecCenter.push_back(point[2]);
130 //------------------------------------------------------------------------
131 std::vector<double> creaVtkPlaneWidget::GetNormal()
133 std::vector<double> vecNormal;
135 _vPlaneWidget->GetNormal(point);
136 vecNormal.push_back(point[0]);
137 vecNormal.push_back(point[1]);
138 vecNormal.push_back(point[2]);
143 //------------------------------------------------------------------------
144 void creaVtkPlaneWidget::Process()
146 if ((GetActive()==true) && (GetRenderer()!=NULL))
149 //EED 2017-01-01 Migration VTK7
150 #if VTK_MAJOR_VERSION <= 5
151 _vPlaneWidget->SetInput( GetImage() );
153 _vPlaneWidget->SetInputData( GetImage() );
156 _vPlaneWidget->SetInteractor( GetRenderer()->GetRenderWindow()->GetInteractor() );
157 _vPlaneWidget->NormalToXAxisOn();
158 _vPlaneWidget->NormalToZAxisOn();
159 _vPlaneWidget->SetResolution(10);
160 _vPlaneWidget->SetRepresentationToOutline();
161 _vPlaneWidget->SetPlaceFactor(1); //defini zoom initial
163 if (_firsttime==true )
166 _vPlaneWidget->PlaceWidget();
167 creaVtkCallbackPlaneWidget *creavtkcallbackplanewidget = creaVtkCallbackPlaneWidget::New();
168 creavtkcallbackplanewidget->creavtkplanewidget = this ;
169 _vPlaneWidget->AddObserver( vtkCommand::InteractionEvent , creavtkcallbackplanewidget );
170 _vPlaneWidget->AddObserver( vtkCommand::StartInteractionEvent , creavtkcallbackplanewidget );
171 _vPlaneWidget->AddObserver( vtkCommand::EnableEvent , creavtkcallbackplanewidget );
175 _vPlaneWidget->Off();
182 //------------------------------------------------------------------------
183 void creaVtkPlaneWidget::UpdatePlane()
190 _vPlaneWidget->GetOrigin(p0);
191 _vPlaneWidget->GetCenter(c); //These is from Execute Method
192 _vPlaneWidget->GetNormal(n);
193 _vPlaneWidget->GetPoint1(p1);
194 _vPlaneWidget->GetPoint2(p2);
196 _vPlaneSource->SetResolution( GetResolution(), GetResolution() );
197 _vPlaneSource->SetOrigin( p0 );
198 _vPlaneSource->SetPoint1( p1 );
199 _vPlaneSource->SetPoint2( p2 );
200 _vPlaneSource->Update( );
201 _vPlaneSource->SetNormal( n[ 0 ], n[ 1 ], n[ 2 ] );
202 _vPlaneSource->Update( );
203 _vPlaneSource->SetCenter( c );
204 _vPlaneSource->Update( );
207 //------------------------------------------------------------------------
208 void creaVtkPlaneWidget::Execute() // virutal
210 printf("EED creaVtkPlaneWidget::Execute (virtual )\n");