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 SetKeyBoardMoving( false );
160 if ( _vtkInteractorStyleBaseView!=NULL )
163 wxVTKRenderWindowInteractor *wxVTKiren;
164 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
165 wxVTKiren->GetEventPosition(X,Y);
171 // ----------------------------------------------------------------------------
172 bool manualContourBaseControler::OnLeftButtonUp()
174 if ( _vtkInteractorStyleBaseView!=NULL )
177 wxVTKRenderWindowInteractor *wxVTKiren;
178 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
179 wxVTKiren->GetEventPosition(X,Y);
180 MouseReleaseLeft(X,Y);
184 // ----------------------------------------------------------------------------
185 bool manualContourBaseControler::OnLeftDClick()
187 if ( _vtkInteractorStyleBaseView!=NULL )
190 wxVTKRenderWindowInteractor *wxVTKiren;
191 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
192 wxVTKiren->GetEventPosition(X,Y);
194 this->MouseDLeft(X,Y);
198 // ----------------------------------------------------------------------------
199 bool manualContourBaseControler::OnMiddleButtonDown()
201 // SetKeyBoardMoving( false );
202 if ( _vtkInteractorStyleBaseView!=NULL )
205 wxVTKRenderWindowInteractor *wxVTKiren;
206 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
207 wxVTKiren->GetEventPosition(X,Y);
208 GetManualViewBaseContour()->InitMove( X, Y,GetZ());
212 // ----------------------------------------------------------------------------
213 bool manualContourBaseControler::OnMiddleButtonUp()
217 // ----------------------------------------------------------------------------
218 bool manualContourBaseControler::OnRightButtonDown()
220 if( _vtkInteractorStyleBaseView!= NULL )
223 wxVTKRenderWindowInteractor *wxVTKiren;
224 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
225 wxVTKiren->GetEventPosition(X, Y);
227 SetCompleteCreation( true );
228 SetKeyBoardMoving( false );
229 this->GetManualContourModel()->SetCloseContour(true);
230 MouseClickRight(X,Y);
234 // ----------------------------------------------------------------------------
235 bool manualContourBaseControler::OnRightButtonUp()
239 // ----------------------------------------------------------------------------
240 void manualContourBaseControler::SetModelView(manualContourModel *manContModel, manualViewBaseContour *manViewBaseCont){
241 _manContModel = manContModel;
242 _manViewBaseCont = manViewBaseCont;
243 _manViewBaseCont->SetEditable( &_editable );
245 // ----------------------------------------------------------------------------
246 manualContourModel* manualContourBaseControler::GetManualContourModel()
248 return _manContModel;
250 // ----------------------------------------------------------------------------
251 manualViewBaseContour* manualContourBaseControler::GetManualViewBaseContour()
253 return _manViewBaseCont;
255 // ----------------------------------------------------------------------------
256 void manualContourBaseControler::MouseClickLeft(int x, int y) // virtual
260 // ----------------------------------------------------------------------------
261 void manualContourBaseControler::MouseClickRight(int x, int y)
267 SetEditable( false );
268 SetPosibleToMove( false );
271 //EED 24Avril2009 _state=7;
273 // ----------------------------------------------------------------------------
274 void manualContourBaseControler::MouseReleaseLeft(int x, int y)
276 if (_state==5){ _state = 0; }
277 if (_state==6){ _state = 0; }
278 if (_state==7){ _state = 0; }
280 GetManualViewBaseContour()->SelectPosibleContour(x,y,GetZ());
281 if( GetIfCompleteCreation() && IsEditable() && !GetManualViewBaseContour()->GetPosibleSelected() && (GetManualViewBaseContour()->GetIdPoint(x,y,GetZ())==-1) )
283 SetEditable( false );
284 SetPosibleToMove( false );
287 // ----------------------------------------------------------------------------
288 void manualContourBaseControler::MouseDLeft(int x, int y )
293 GetManualViewBaseContour()->SelectPosibleContour(x,y,z);
294 GetManualViewBaseContour()->SelectPosiblePoint(x,y,z);
295 if ( GetManualViewBaseContour()->GetPosibleSelected() )
301 // ----------------------------------------------------------------------------
302 void manualContourBaseControler::MouseMove(int x, int y) // virtual
305 // ----------------------------------------------------------------------------
306 void manualContourBaseControler::SetState(int state)
310 // ----------------------------------------------------------------------------
311 int manualContourBaseControler::GetState()
315 // ----------------------------------------------------------------------------
316 bool manualContourBaseControler::IsEditable( )
320 // ----------------------------------------------------------------------------
321 void manualContourBaseControler::SetEditable( bool condition )
323 if (GetManualViewBaseContour()!=NULL) {
326 GetManualViewBaseContour()->RemoveControlPoints();
328 GetManualViewBaseContour()->SetSelected( condition );
330 _editable = condition;
333 // ----------------------------------------------------------------------------
334 bool manualContourBaseControler::GetPosibleToMove()
336 return _posibleToMove;
338 // ----------------------------------------------------------------------------
339 void manualContourBaseControler::SetPosibleToMove( bool condition )
341 _posibleToMove = condition;
343 // ----------------------------------------------------------------------------
344 bool manualContourBaseControler::IsMoving()
348 // ----------------------------------------------------------------------------
349 void manualContourBaseControler::SetMoving( bool condition )
353 // ----------------------------------------------------------------------------
354 void manualContourBaseControler::SetCompleteCreation( bool condition )
356 _created = condition;
358 // ----------------------------------------------------------------------------
359 bool manualContourBaseControler::GetIfCompleteCreation ( )
363 // ----------------------------------------------------------------------------
364 void manualContourBaseControler::SetKeyBoardMoving( bool condition )
366 _keyBoardMoving = condition;
368 // ----------------------------------------------------------------------------
369 bool manualContourBaseControler::GetKeyBoardMoving( )
371 return _keyBoardMoving;
373 // ----------------------------------------------------------------------------
374 void manualContourBaseControler::CreateNewManualContour(){
375 _manViewBaseCont->CreateNewContour();
377 // ----------------------------------------------------------------------------
378 int manualContourBaseControler::GetNumberOfPointsManualContour(){
379 return _manViewBaseCont->GetNumberOfPoints();
381 // ----------------------------------------------------------------------------
383 //JSTG - 25-02-08 -------------------------------------------------------------
384 int manualContourBaseControler::GetNumberOfPointsSplineManualContour(){
385 //return _manViewBaseCont->GetNumberOfPointsSpline();
386 return _manContModel->GetNumberOfPointsSpline();
388 // ----------------------------------------------------------------------------
390 double* manualContourBaseControler::GetVectorPointsXManualContour(){
391 return _manViewBaseCont->GetVectorPointsXManualContour();
393 // ----------------------------------------------------------------------------
394 double* manualContourBaseControler::GetVectorPointsYManualContour(){
395 return _manViewBaseCont->GetVectorPointsYManualContour();
397 // ----------------------------------------------------------------------------
398 void manualContourBaseControler::DeleteContour(){
399 _manViewBaseCont->DeleteContour();
400 _manContModel->DeleteAllPoints();
402 // ----------------------------------------------------------------------------
403 void manualContourBaseControler::DeleteActualMousePoint(int x, int y)// virtual
405 if ((_manContModel!=NULL) && (_manViewBaseCont!=NULL) )
407 int id=_manViewBaseCont->GetIdPoint(x,y,GetZ());
408 if ((id!=-1) && (_manContModel->GetSizeLstPoints()>2) ){
409 _manContModel->DeletePoint(id);
410 _manViewBaseCont->DeletePoint(id);
416 // ----------------------------------------------------------------------------
417 void manualContourBaseControler::Magnet(int x, int y)
421 /*int id= */ _manViewBaseCont->GetIdPoint(x,y,GetZ()); // JPRx
422 if (GetManualContourModel()!=NULL){
426 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
427 int id = GetManualContourModel()->GetIdPoint(xx,yy,zz,32000,-1);
430 manualPoint *mp = GetManualContourModel()->GetManualPoint(id);
431 mp->SetPoint(xx,yy,zz);
433 // GetManualViewBaseContour()->UpdateViewPoint(id);
439 // ----------------------------------------------------------------------------
440 void manualContourBaseControler::SetZ(int z)
444 // ----------------------------------------------------------------------------
445 int manualContourBaseControler::GetZ()
449 // ----------------------------------------------------------------------------
450 void manualContourBaseControler::AddPoint(int x, int y, int z) // virtual
452 if (GetManualContourModel()!=NULL){
456 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
457 /*int id =*/ GetManualContourModel()->AddPoint(xx,yy,zz); // JPRx
458 GetManualViewBaseContour()->AddPoint();
459 // GetManualViewBaseContour()->UpdateViewPoint(id);
462 // ----------------------------------------------------------------------------
463 void manualContourBaseControler::InsertPoint(int x,int y,int z) // virtual
467 if (GetManualContourModel()!=NULL){
471 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
472 if (GetManualContourModel()->GetSizeLstPoints()>1){
473 id = GetManualContourModel()->InsertPoint(xx,yy,zz);
474 GetManualViewBaseContour()->InsertPoint(id);
475 // GetManualViewBaseContour()->UpdateViewPoint(id);
477 GetManualContourModel()->AddPoint(xx,yy,zz);
478 GetManualViewBaseContour()->AddPoint();
480 // GetManualViewBaseContour()->UpdateViewPoint(id);
485 // ----------------------------------------------------------------------------
486 void manualContourBaseControler::SetPoint( int id ,int x , int y , int z){ // virtual
487 if ((GetManualViewBaseContour()!=NULL) && (id>=0)){
491 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
492 manualPoint *mp = _manContModel->GetManualPoint(id);
493 mp->SetPoint(xx,yy,zz);
494 GetManualViewBaseContour()->UpdateViewPoint(id);
497 // ----------------------------------------------------------------------------
498 void manualContourBaseControler::SetPointX( int id ,int x ){
499 if ((GetManualViewBaseContour()!=NULL) && (id>=0)){
503 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
504 manualPoint *mp = _manContModel->GetManualPoint(id);
506 GetManualViewBaseContour()->UpdateViewPoint(id);
509 // ----------------------------------------------------------------------------
510 void manualContourBaseControler::SetPointY( int id ,int y ){
511 if ((GetManualViewBaseContour()!=NULL) && (id>=0)){
515 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
516 manualPoint *mp = _manContModel->GetManualPoint(id);
518 GetManualViewBaseContour()->UpdateViewPoint(id);
521 // ----------------------------------------------------------------------------
522 void manualContourBaseControler::SetPointZ( int id ,int z ){
523 if ((GetManualViewBaseContour()!=NULL) && (id>=0)){
527 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
528 manualPoint *mp = _manContModel->GetManualPoint(id);
530 GetManualViewBaseContour()->UpdateViewPoint(id);
533 // ----------------------------------------------------------------------------
534 void manualContourBaseControler::ResetContour() // virtual
536 this->DeleteContour();
537 GetManualViewBaseContour()->CreateNewContour();