1 #include "manualContourBaseControler.h"
4 // ----------------------------------------------------------------------------
5 // ----------------------------------------------------------------------------
6 // ----------------------------------------------------------------------------
8 manualContourBaseControler::manualContourBaseControler()
10 _manViewBaseCont = NULL;
15 _posibleToMove = true;
18 _keyBoardMoving = false;
20 // ----------------------------------------------------------------------------
21 manualContourBaseControler::~manualContourBaseControler()
25 // ----------------------------------------------------------------------------
26 manualContourBaseControler * manualContourBaseControler :: Clone() // virtual
28 manualContourBaseControler * clone = new manualContourBaseControler();
29 CopyAttributesTo(clone);
33 // ---------------------------------------------------------------------------
35 void manualContourBaseControler::CopyAttributesTo( manualContourBaseControler * cloneObject)
38 InteractorStyleMaracas::CopyAttributesTo(cloneObject);
39 cloneObject->SetZ( this->GetZ() );
40 cloneObject->SetState( this->GetState() );
41 cloneObject->SetEditable( this->IsEditable() );
42 cloneObject->SetPosibleToMove( this->GetPosibleToMove() );
43 cloneObject->SetMoving( this->IsMoving() );
44 cloneObject->SetCompleteCreation( this->GetIfCompleteCreation() );
45 cloneObject->SetKeyBoardMoving( this->GetKeyBoardMoving() );
48 // ----------------------------------------------------------------------------
49 void manualContourBaseControler::Configure() //virtual
53 // ----------------------------------------------------------------------------
54 bool manualContourBaseControler::OnChar()
56 if ( _vtkInteractorStyleBaseView!=NULL )
58 char keyCode = _vtkInteractorStyleBaseView->GetInteractor()-> GetKeyCode();
61 wxVTKRenderWindowInteractor *_wxVTKiren;
62 _wxVTKiren= _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
63 _wxVTKiren->GetEventPosition(X, Y);
64 //int Z = GetZ(); // JPRx
66 if ((keyCode==8) || (keyCode==127))
69 if (!GetManualViewBaseContour()->GetPosibleSelected()==true)
71 DeleteActualMousePoint(X,Y);
73 GetManualViewBaseContour()->Refresh();
74 this->_vtkInteractorStyleBaseView->SetRefresh_waiting();
82 GetManualViewBaseContour()->Refresh();
83 this->_vtkInteractorStyleBaseView->SetRefresh_waiting();
85 else if( !IsEditable() )
89 GetManualViewBaseContour()->MoveContour( -1, 0 );
90 SetKeyBoardMoving( true );
92 else if ( keyCode == 'R' )
94 GetManualViewBaseContour()->MoveContour( 1, 0 );
95 SetKeyBoardMoving( true );
97 else if ( keyCode == 'U' )
99 GetManualViewBaseContour()->MoveContour( 0, -1 );
100 SetKeyBoardMoving( true );
102 else if ( keyCode == 'D' )
104 GetManualViewBaseContour()->MoveContour( 0, 1 );
105 SetKeyBoardMoving( true );
107 else if ( keyCode == 'W' )//Diagonal left down
109 GetManualViewBaseContour()->MoveContour( -1, 1 );
110 SetKeyBoardMoving( true );
112 else if ( keyCode == 'Q' )//Diagonal left up
114 GetManualViewBaseContour()->MoveContour( -1, -1 );
115 SetKeyBoardMoving( true );
117 else if( keyCode == 'P' )//Diagonal right up
119 GetManualViewBaseContour()->MoveContour( 1, -1 );
120 SetKeyBoardMoving( true );
122 else if( keyCode == 'M' )//Diagonal right down
124 GetManualViewBaseContour()->MoveContour( 1, 1 );
125 SetKeyBoardMoving( true );
127 if( GetKeyBoardMoving() )
129 GetManualViewBaseContour()->Refresh();
130 this->_vtkInteractorStyleBaseView->SetRefresh_waiting();
137 // ----------------------------------------------------------------------------
138 bool manualContourBaseControler::OnMouseMove()
141 if ( _vtkInteractorStyleBaseView!=NULL)
144 wxVTKRenderWindowInteractor *_wxVTKiren;
145 _wxVTKiren= _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
146 _wxVTKiren->GetEventPosition( X , Y );
149 if ( (_vtkInteractorStyleBaseView->GetInteractor()->GetControlKey()==0) &&
150 (_vtkInteractorStyleBaseView->GetInteractor()->GetShiftKey()==0) ) {
156 // ----------------------------------------------------------------------------
157 bool manualContourBaseControler::OnLeftButtonDown()
159 printf("EED %p manualContourBaseControler::OnLeftButtonDown \n",this);
160 SetKeyBoardMoving( false );
161 if ( _vtkInteractorStyleBaseView!=NULL )
164 wxVTKRenderWindowInteractor *wxVTKiren;
165 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
166 wxVTKiren->GetEventPosition(X,Y);
172 // ----------------------------------------------------------------------------
173 bool manualContourBaseControler::OnLeftButtonUp()
175 printf("EED %p manualContourBaseControler::OnLeftButtonUp \n",this);
176 if ( _vtkInteractorStyleBaseView!=NULL )
179 wxVTKRenderWindowInteractor *wxVTKiren;
180 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
181 wxVTKiren->GetEventPosition(X,Y);
182 MouseReleaseLeft(X,Y);
186 // ----------------------------------------------------------------------------
187 bool manualContourBaseControler::OnLeftDClick()
189 printf("EED %p manualContourBaseControler::OnLeftDClick \n",this);
190 if ( _vtkInteractorStyleBaseView!=NULL )
193 wxVTKRenderWindowInteractor *wxVTKiren;
194 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
195 wxVTKiren->GetEventPosition(X,Y);
197 this->MouseDLeft(X,Y);
201 // ----------------------------------------------------------------------------
202 bool manualContourBaseControler::OnMiddleButtonDown()
204 // SetKeyBoardMoving( false );
205 if ( _vtkInteractorStyleBaseView!=NULL )
208 wxVTKRenderWindowInteractor *wxVTKiren;
209 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
210 wxVTKiren->GetEventPosition(X,Y);
211 GetManualViewBaseContour()->InitMove( X, Y,GetZ());
215 // ----------------------------------------------------------------------------
216 bool manualContourBaseControler::OnMiddleButtonUp()
220 // ----------------------------------------------------------------------------
221 bool manualContourBaseControler::OnRightButtonDown()
223 printf("EED %p manualContourBaseControler::OnRightButtonDown \n",this);
224 if( _vtkInteractorStyleBaseView!= NULL )
227 wxVTKRenderWindowInteractor *wxVTKiren;
228 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
229 wxVTKiren->GetEventPosition(X, Y);
231 MouseClickRight(X,Y);
235 // ----------------------------------------------------------------------------
236 bool manualContourBaseControler::OnRightButtonUp()
238 printf("EED %p manualContourBaseControler::OnRightButtonUp \n",this);
241 // ----------------------------------------------------------------------------
242 void manualContourBaseControler::SetModelView(manualBaseModel *manContModel, manualViewBaseContour *manViewBaseCont){
243 _manContModel = manContModel;
244 _manViewBaseCont = manViewBaseCont;
245 _manViewBaseCont->SetEditable( &_editable );
247 // ----------------------------------------------------------------------------
248 manualBaseModel* manualContourBaseControler::GetManualContourModel()
250 return _manContModel;
252 // ----------------------------------------------------------------------------
253 manualViewBaseContour* manualContourBaseControler::GetManualViewBaseContour()
255 return _manViewBaseCont;
257 // ----------------------------------------------------------------------------
258 void manualContourBaseControler::MouseClickLeft(int x, int y) // virtual
262 // ----------------------------------------------------------------------------
263 void manualContourBaseControler::MouseClickRight(int x, int y)
265 SetCompleteCreation( true );
266 SetKeyBoardMoving( false );
267 this->GetManualContourModel()->SetCloseContour(true);
273 SetEditable( false );
274 SetPosibleToMove( false );
277 //EED 24Avril2009 _state=7;
279 // ----------------------------------------------------------------------------
280 void manualContourBaseControler::MouseReleaseLeft(int x, int y)
282 if (_state==5){ _state = 0; }
283 if (_state==6){ _state = 0; }
284 if (_state==7){ _state = 0; }
286 GetManualViewBaseContour()->SelectPosibleContour(x,y,GetZ());
287 if( GetIfCompleteCreation() && IsEditable() && !GetManualViewBaseContour()->GetPosibleSelected() && (GetManualViewBaseContour()->GetIdPoint(x,y,GetZ())==-1) )
289 SetEditable( false );
290 SetPosibleToMove( false );
293 // ----------------------------------------------------------------------------
294 void manualContourBaseControler::MouseDLeft(int x, int y )
300 /*bool temp = */ _manViewBaseCont->SelectPosibleContour(x,y,z);
302 _manViewBaseCont->SelectPosiblePoint(x,y,z);
304 if ( _manViewBaseCont->GetPosibleSelected() )
310 // ----------------------------------------------------------------------------
311 void manualContourBaseControler::MouseMove(int x, int y) // virtual
314 // ----------------------------------------------------------------------------
315 void manualContourBaseControler::SetState(int state)
319 // ----------------------------------------------------------------------------
320 int manualContourBaseControler::GetState()
324 // ----------------------------------------------------------------------------
325 bool manualContourBaseControler::IsEditable( )
329 // ----------------------------------------------------------------------------
330 void manualContourBaseControler::SetEditable( bool condition )
332 if (GetManualViewBaseContour()!=NULL) {
335 GetManualViewBaseContour()->RemoveControlPoints();
337 GetManualViewBaseContour()->SetSelected( condition );
339 _editable = condition;
342 // ----------------------------------------------------------------------------
343 bool manualContourBaseControler::GetPosibleToMove()
345 return _posibleToMove;
347 // ----------------------------------------------------------------------------
348 void manualContourBaseControler::SetPosibleToMove( bool condition )
350 _posibleToMove = condition;
352 // ----------------------------------------------------------------------------
353 bool manualContourBaseControler::IsMoving()
357 // ----------------------------------------------------------------------------
358 void manualContourBaseControler::SetMoving( bool condition )
362 // ----------------------------------------------------------------------------
363 void manualContourBaseControler::SetCompleteCreation( bool condition )
365 _created = condition;
367 // ----------------------------------------------------------------------------
368 bool manualContourBaseControler::GetIfCompleteCreation ( )
372 // ----------------------------------------------------------------------------
373 void manualContourBaseControler::SetKeyBoardMoving( bool condition )
375 _keyBoardMoving = condition;
377 // ----------------------------------------------------------------------------
378 bool manualContourBaseControler::GetKeyBoardMoving( )
380 return _keyBoardMoving;
382 // ----------------------------------------------------------------------------
383 void manualContourBaseControler::CreateNewManualContour(){
384 _manViewBaseCont->CreateNewContour();
386 // ----------------------------------------------------------------------------
387 int manualContourBaseControler::GetNumberOfPointsManualContour(){
388 return _manViewBaseCont->GetNumberOfPoints();
390 // ----------------------------------------------------------------------------
392 //JSTG - 25-02-08 -------------------------------------------------------------
393 int manualContourBaseControler::GetNumberOfPointsSplineManualContour(){
394 //return _manViewBaseCont->GetNumberOfPointsSpline();
395 return _manContModel->GetNumberOfPointsSpline();
397 // ----------------------------------------------------------------------------
399 double* manualContourBaseControler::GetVectorPointsXManualContour(){
400 return _manViewBaseCont->GetVectorPointsXManualContour();
402 // ----------------------------------------------------------------------------
403 double* manualContourBaseControler::GetVectorPointsYManualContour(){
404 return _manViewBaseCont->GetVectorPointsYManualContour();
406 // ----------------------------------------------------------------------------
407 void manualContourBaseControler::DeleteContour(){
408 _manViewBaseCont->DeleteContour();
409 _manContModel->DeleteAllPoints();
411 // ----------------------------------------------------------------------------
412 void manualContourBaseControler::DeleteActualMousePoint(int x, int y)// virtual
414 if ((_manContModel!=NULL) && (_manViewBaseCont!=NULL) )
416 int id=_manViewBaseCont->GetIdPoint(x,y,GetZ());
417 if ((id!=-1) && (_manContModel->GetSizeLstPoints()>2) ){
418 _manContModel->DeletePoint(id);
419 _manViewBaseCont->DeletePoint(id);
425 // ----------------------------------------------------------------------------
426 void manualContourBaseControler::Magnet(int x, int y)
430 /*int id= */ _manViewBaseCont->GetIdPoint(x,y,GetZ()); // JPRx
431 if (GetManualContourModel()!=NULL){
435 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
436 int id = GetManualContourModel()->GetIdPoint(xx,yy,zz,32000,-1);
439 manualPoint *mp = GetManualContourModel()->GetManualPoint(id);
440 mp->SetPoint(xx,yy,zz);
442 // GetManualViewBaseContour()->UpdateViewPoint(id);
448 // ----------------------------------------------------------------------------
449 void manualContourBaseControler::SetZ(int z)
453 // ----------------------------------------------------------------------------
454 int manualContourBaseControler::GetZ()
458 // ----------------------------------------------------------------------------
459 void manualContourBaseControler::AddPoint(int x, int y, int z) // virtual
461 if (GetManualContourModel()!=NULL){
467 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
468 printf("EED %p manualContourBaseControler::AddPoint \n", this);
469 GetManualContourModel()->AddPoint(xx,yy,zz);
470 GetManualViewBaseContour()->AddPoint();
471 // GetManualViewBaseContour()->UpdateViewPoint(id);
474 // ----------------------------------------------------------------------------
475 void manualContourBaseControler::InsertPoint(int x,int y,int z) // virtual
479 if (GetManualContourModel()!=NULL){
483 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
484 if (GetManualContourModel()->GetSizeLstPoints()>1){
485 id = GetManualContourModel()->InsertPoint(xx,yy,zz);
486 GetManualViewBaseContour()->InsertPoint(id);
487 // GetManualViewBaseContour()->UpdateViewPoint(id);
489 GetManualContourModel()->AddPoint(xx,yy,zz);
490 GetManualViewBaseContour()->AddPoint();
492 // GetManualViewBaseContour()->UpdateViewPoint(id);
497 // ----------------------------------------------------------------------------
498 void manualContourBaseControler::SetPoint( int id ,int x , int y , int z){ // virtual
499 if ((GetManualViewBaseContour()!=NULL) && (id>=0)){
504 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
505 manualPoint *mp = _manContModel->GetManualPoint(id);
506 mp->SetPoint(xx,yy,zz);
507 GetManualViewBaseContour()->UpdateViewPoint(id);
510 // ----------------------------------------------------------------------------
511 void manualContourBaseControler::SetPointX( int id ,int x ){
512 if ((GetManualViewBaseContour()!=NULL) && (id>=0)){
516 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
517 manualPoint *mp = _manContModel->GetManualPoint(id);
519 GetManualViewBaseContour()->UpdateViewPoint(id);
522 // ----------------------------------------------------------------------------
523 void manualContourBaseControler::SetPointY( int id ,int y ){
524 if ((GetManualViewBaseContour()!=NULL) && (id>=0)){
528 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
529 manualPoint *mp = _manContModel->GetManualPoint(id);
531 GetManualViewBaseContour()->UpdateViewPoint(id);
534 // ----------------------------------------------------------------------------
535 void manualContourBaseControler::SetPointZ( int id ,int z ){
536 if ((GetManualViewBaseContour()!=NULL) && (id>=0)){
540 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
541 manualPoint *mp = _manContModel->GetManualPoint(id);
543 GetManualViewBaseContour()->UpdateViewPoint(id);
546 // ----------------------------------------------------------------------------
547 void manualContourBaseControler::ResetContour() // virtual
549 this->DeleteContour();
550 GetManualViewBaseContour()->CreateNewContour();