manualContourBaseControler.cpp

Go to the documentation of this file.
00001 #include "manualContourBaseControler.h"
00002 
00003 
00004 // ----------------------------------------------------------------------------
00005 // ----------------------------------------------------------------------------
00006 // ----------------------------------------------------------------------------
00007 
00008 manualContourBaseControler::manualContourBaseControler()
00009 {
00010         _manViewBaseCont        = NULL;
00011         _manContModel           = NULL;
00012         _state                          = 0;
00013         _z                                      = 900;
00014         _editable                       = true;
00015         _posibleToMove          = true;
00016         _moving                         = false;
00017         _created                        = false;
00018         _keyBoardMoving         = false;
00019 }
00020 // ----------------------------------------------------------------------------
00021 manualContourBaseControler::~manualContourBaseControler()
00022 {
00023 }
00024 
00025 // ----------------------------------------------------------------------------
00026 manualContourBaseControler * manualContourBaseControler :: Clone()  // virtual
00027 {
00028         manualContourBaseControler * clone = new manualContourBaseControler();
00029         CopyAttributesTo(clone);
00030         return clone;
00031 }
00032 
00033 // ---------------------------------------------------------------------------
00034 
00035 void manualContourBaseControler::CopyAttributesTo( manualContourBaseControler * cloneObject)
00036 {
00037         // Fathers object
00038         InteractorStyleMaracas::CopyAttributesTo(cloneObject);
00039         cloneObject->SetZ( this->GetZ() );
00040         cloneObject->SetState( this->GetState() );
00041         cloneObject->SetEditable( this->IsEditable() );
00042         cloneObject->SetPosibleToMove( this->GetPosibleToMove() );
00043         cloneObject->SetMoving( this->IsMoving() );
00044         cloneObject->SetCompleteCreation( this->GetIfCompleteCreation() );
00045         cloneObject->SetKeyBoardMoving( this->GetKeyBoardMoving() );
00046 }
00047 
00048 // ----------------------------------------------------------------------------
00049 void manualContourBaseControler::Configure() //virtual
00050 {
00051 }
00052 
00053 // ----------------------------------------------------------------------------
00054 bool manualContourBaseControler::OnChar()
00055 {
00056         if ( _vtkInteractorStyleBaseView!=NULL )
00057         {
00058                 char keyCode = _vtkInteractorStyleBaseView->GetInteractor()-> GetKeyCode();
00059 
00060                 int X,Y;
00061                 wxVTKRenderWindowInteractor *_wxVTKiren;
00062                 _wxVTKiren= _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
00063                 _wxVTKiren->GetEventPosition(X, Y);
00064                 //int Z = GetZ(); // JPRx
00065                 // Delete Point
00066                 if ((keyCode==8) || (keyCode==127))
00067                 {
00068 
00069                         if (!GetManualViewBaseContour()->GetPosibleSelected()==true)
00070                         {
00071                                 DeleteActualMousePoint(X,Y);
00072                         }
00073                         GetManualViewBaseContour()->Refresh();
00074                         this->_vtkInteractorStyleBaseView->SetRefresh_waiting();
00075                 }
00076                 else
00077                 {
00078                         // Magnet
00079                         if (keyCode==32)
00080                         {
00081                                 Magnet(X,Y);
00082                                 GetManualViewBaseContour()->Refresh();
00083                                 this->_vtkInteractorStyleBaseView->SetRefresh_waiting();
00084                         }
00085                         else if( !IsEditable() )
00086                         {
00087                                 if ( keyCode == 'L' )
00088                                 {
00089                                         GetManualViewBaseContour()->MoveContour( -1, 0 );
00090                                         SetKeyBoardMoving( true );
00091                                 }
00092                                 else if ( keyCode == 'R' )
00093                                 {
00094                                         GetManualViewBaseContour()->MoveContour( 1, 0 );
00095                                         SetKeyBoardMoving( true );
00096                                 }
00097                                 else if ( keyCode == 'U' )
00098                                 {
00099                                         GetManualViewBaseContour()->MoveContour( 0, -1 );
00100                                         SetKeyBoardMoving( true );
00101                                 }
00102                                 else if ( keyCode == 'D' )
00103                                 {
00104                                         GetManualViewBaseContour()->MoveContour( 0, 1 );
00105                                         SetKeyBoardMoving( true );
00106                                 }
00107                                 else if ( keyCode == 'W' )//Diagonal left down
00108                                 {
00109                                         GetManualViewBaseContour()->MoveContour( -1, 1 );
00110                                         SetKeyBoardMoving( true );
00111                                 }
00112                                 else if ( keyCode == 'Q' )//Diagonal left up
00113                                 {
00114                                         GetManualViewBaseContour()->MoveContour( -1, -1 );
00115                                         SetKeyBoardMoving( true );
00116                                 }
00117                                 else if( keyCode == 'P' )//Diagonal right up
00118                                 {
00119                                         GetManualViewBaseContour()->MoveContour( 1, -1 );
00120                                         SetKeyBoardMoving( true );
00121                                 }
00122                                 else if( keyCode == 'M' )//Diagonal right down
00123                                 {
00124                                         GetManualViewBaseContour()->MoveContour( 1, 1 );
00125                                         SetKeyBoardMoving( true );
00126                                 }
00127                                 if( GetKeyBoardMoving() )
00128                                 {
00129                                         GetManualViewBaseContour()->Refresh();
00130                                         this->_vtkInteractorStyleBaseView->SetRefresh_waiting();
00131                                 }
00132                         }
00133                 }
00134         }
00135         return true;
00136 }
00137 // ----------------------------------------------------------------------------
00138 bool manualContourBaseControler::OnMouseMove()
00139 {
00140         
00141         if ( _vtkInteractorStyleBaseView!=NULL)
00142         {
00143                 int X,Y;
00144                 wxVTKRenderWindowInteractor *_wxVTKiren;
00145                 _wxVTKiren= _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
00146                 _wxVTKiren->GetEventPosition( X , Y );
00147 
00148 
00149                 if ( (_vtkInteractorStyleBaseView->GetInteractor()->GetControlKey()==0) &&
00150                         (_vtkInteractorStyleBaseView->GetInteractor()->GetShiftKey()==0) ) {
00151                         MouseMove(X,Y);
00152                 }
00153         }
00154         return true;
00155 }
00156 // ----------------------------------------------------------------------------
00157 bool manualContourBaseControler::OnLeftButtonDown()
00158 {
00159         SetKeyBoardMoving( false );
00160         if ( _vtkInteractorStyleBaseView!=NULL )
00161         {
00162                 int X,Y;
00163                 wxVTKRenderWindowInteractor *wxVTKiren;
00164                 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
00165                 wxVTKiren->GetEventPosition(X,Y);
00166 
00167                 MouseClickLeft(X,Y);
00168         }
00169         return true;
00170 }
00171 // ----------------------------------------------------------------------------
00172 bool manualContourBaseControler::OnLeftButtonUp()
00173 {
00174         if ( _vtkInteractorStyleBaseView!=NULL )
00175         {
00176                 int X,Y;
00177                 wxVTKRenderWindowInteractor *wxVTKiren;
00178                 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
00179                 wxVTKiren->GetEventPosition(X,Y);
00180                 MouseReleaseLeft(X,Y);
00181         }
00182         return true;
00183 }
00184 // ----------------------------------------------------------------------------
00185 bool manualContourBaseControler::OnLeftDClick()
00186 {
00187         if ( _vtkInteractorStyleBaseView!=NULL )
00188         {
00189                 int X,Y;
00190                 wxVTKRenderWindowInteractor *wxVTKiren;
00191                 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
00192                 wxVTKiren->GetEventPosition(X,Y);
00193 
00194                 this->MouseDLeft(X,Y);
00195         }
00196         return true;
00197 }
00198 // ----------------------------------------------------------------------------
00199 bool manualContourBaseControler::OnMiddleButtonDown()
00200 {
00201 //      SetKeyBoardMoving( false );
00202         if ( _vtkInteractorStyleBaseView!=NULL )
00203         {
00204                 int X,Y;
00205                 wxVTKRenderWindowInteractor *wxVTKiren;
00206                 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
00207                 wxVTKiren->GetEventPosition(X,Y);
00208                 GetManualViewBaseContour()->InitMove( X, Y,GetZ());
00209         }
00210         return true;
00211 }
00212 // ----------------------------------------------------------------------------
00213 bool manualContourBaseControler::OnMiddleButtonUp()
00214 {
00215         return true;
00216 }
00217 // ----------------------------------------------------------------------------
00218 bool manualContourBaseControler::OnRightButtonDown()
00219 {
00220         if( _vtkInteractorStyleBaseView!= NULL )
00221         {
00222                 int X,Y;
00223                 wxVTKRenderWindowInteractor *wxVTKiren;
00224                 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
00225                 wxVTKiren->GetEventPosition(X, Y);
00226 
00227                 SetCompleteCreation( true );
00228                 SetKeyBoardMoving( false );
00229                 this->GetManualContourModel()->SetCloseContour(true);
00230                 MouseClickRight(X,Y);
00231         }
00232         return true;
00233 }
00234 // ----------------------------------------------------------------------------
00235 bool manualContourBaseControler::OnRightButtonUp()
00236 {
00237         return true;
00238 }
00239 // ----------------------------------------------------------------------------
00240 void manualContourBaseControler::SetModelView(manualBaseModel *manContModel, manualViewBaseContour *manViewBaseCont){
00241         _manContModel           =       manContModel;
00242         _manViewBaseCont        =       manViewBaseCont;
00243         _manViewBaseCont->SetEditable( &_editable );
00244 }
00245 // ----------------------------------------------------------------------------
00246 manualBaseModel* manualContourBaseControler::GetManualContourModel()
00247 {
00248         return _manContModel;
00249 }
00250 // ----------------------------------------------------------------------------
00251 manualViewBaseContour* manualContourBaseControler::GetManualViewBaseContour()
00252 {
00253         return _manViewBaseCont;
00254 }
00255 // ----------------------------------------------------------------------------
00256 void manualContourBaseControler::MouseClickLeft(int x, int y) // virtual
00257 {
00258 
00259 }
00260 // ----------------------------------------------------------------------------
00261 void manualContourBaseControler::MouseClickRight(int x, int y)
00262 {
00263 //      if (_state==1)
00264 //      {
00265 //              _state=0;
00266 //      }
00267         SetEditable( false );
00268         SetPosibleToMove( false );
00269         _state = 0;
00270 
00271 //EED 24Avril2009       _state=7;
00272 }
00273 // ----------------------------------------------------------------------------
00274 void manualContourBaseControler::MouseReleaseLeft(int x, int y)
00275 {
00276         if (_state==5){ _state = 0; }
00277         if (_state==6){ _state = 0; }
00278         if (_state==7){ _state = 0; }
00279         SetMoving( false );
00280         GetManualViewBaseContour()->SelectPosibleContour(x,y,GetZ());
00281         if( GetIfCompleteCreation() && IsEditable() && !GetManualViewBaseContour()->GetPosibleSelected() && (GetManualViewBaseContour()->GetIdPoint(x,y,GetZ())==-1)  )
00282         {
00283                 SetEditable( false );
00284                 SetPosibleToMove( false );
00285         }
00286 }
00287 // ----------------------------------------------------------------------------
00288 void manualContourBaseControler::MouseDLeft(int x, int y )
00289 {
00290         if (_state==0)
00291         {
00292                 
00293                 int z=GetZ();
00294                 bool temp = _manViewBaseCont->SelectPosibleContour(x,y,z);
00295 
00296                 _manViewBaseCont->SelectPosiblePoint(x,y,z);
00297 
00298                 if ( _manViewBaseCont->GetPosibleSelected() )
00299                 {
00300                         _editable = true;
00301                 }
00302         }
00303 }
00304 // ----------------------------------------------------------------------------
00305 void manualContourBaseControler::MouseMove(int x, int y) // virtual
00306 {
00307 }
00308 // ----------------------------------------------------------------------------
00309 void manualContourBaseControler::SetState(int state)
00310 {
00311         _state=state;
00312 }
00313 // ----------------------------------------------------------------------------
00314 int manualContourBaseControler::GetState()
00315 {
00316         return _state;
00317 }
00318 // ----------------------------------------------------------------------------
00319 bool manualContourBaseControler::IsEditable( )
00320 {
00321         return _editable;
00322 }
00323 // ----------------------------------------------------------------------------
00324 void manualContourBaseControler::SetEditable(  bool condition  )
00325 {
00326         if (GetManualViewBaseContour()!=NULL) {
00327                 if( !condition )
00328                 {
00329                         GetManualViewBaseContour()->RemoveControlPoints();
00330                 }
00331                 GetManualViewBaseContour()->SetSelected( condition );
00332         }
00333         _editable = condition;
00334 }
00335 
00336 // ----------------------------------------------------------------------------
00337 bool manualContourBaseControler::GetPosibleToMove()
00338 {
00339         return _posibleToMove;
00340 }
00341 // ----------------------------------------------------------------------------
00342 void manualContourBaseControler::SetPosibleToMove( bool condition )
00343 {
00344         _posibleToMove = condition;
00345 }
00346 // ----------------------------------------------------------------------------
00347 bool manualContourBaseControler::IsMoving()
00348 {
00349         return _moving;
00350 }
00351 // ----------------------------------------------------------------------------
00352 void manualContourBaseControler::SetMoving( bool condition )
00353 {
00354         _moving = condition;
00355 }
00356 // ----------------------------------------------------------------------------
00357 void manualContourBaseControler::SetCompleteCreation( bool condition )
00358 {
00359         _created = condition;
00360 }
00361 // ----------------------------------------------------------------------------
00362 bool manualContourBaseControler::GetIfCompleteCreation ( )
00363 {
00364         return _created;
00365 }
00366 // ----------------------------------------------------------------------------
00367 void manualContourBaseControler::SetKeyBoardMoving( bool condition )
00368 {
00369         _keyBoardMoving = condition;
00370 }
00371 // ----------------------------------------------------------------------------
00372 bool manualContourBaseControler::GetKeyBoardMoving(  )
00373 {
00374         return _keyBoardMoving;
00375 }
00376 // ----------------------------------------------------------------------------
00377 void manualContourBaseControler::CreateNewManualContour(){
00378         _manViewBaseCont->CreateNewContour();
00379 }
00380 // ----------------------------------------------------------------------------
00381 int     manualContourBaseControler::GetNumberOfPointsManualContour(){
00382         return _manViewBaseCont->GetNumberOfPoints();
00383 }
00384 // ----------------------------------------------------------------------------
00385 
00386 //JSTG - 25-02-08 -------------------------------------------------------------
00387 int     manualContourBaseControler::GetNumberOfPointsSplineManualContour(){
00388         //return _manViewBaseCont->GetNumberOfPointsSpline();
00389         return _manContModel->GetNumberOfPointsSpline();
00390 }
00391 // ----------------------------------------------------------------------------
00392 
00393 double* manualContourBaseControler::GetVectorPointsXManualContour(){
00394         return _manViewBaseCont->GetVectorPointsXManualContour();
00395 }
00396 // ----------------------------------------------------------------------------
00397 double* manualContourBaseControler::GetVectorPointsYManualContour(){
00398         return _manViewBaseCont->GetVectorPointsYManualContour();
00399 }
00400 // ----------------------------------------------------------------------------
00401 void manualContourBaseControler::DeleteContour(){
00402         _manViewBaseCont->DeleteContour();
00403         _manContModel->DeleteAllPoints();
00404 }
00405 // ----------------------------------------------------------------------------
00406 void manualContourBaseControler::DeleteActualMousePoint(int x, int y)// virtual
00407 {
00408         if ((_manContModel!=NULL) && (_manViewBaseCont!=NULL) )
00409         {
00410                 int id=_manViewBaseCont->GetIdPoint(x,y,GetZ());
00411                 if ((id!=-1) && (_manContModel->GetSizeLstPoints()>2) ){
00412                         _manContModel->DeletePoint(id);
00413                         _manViewBaseCont->DeletePoint(id);
00414                 }
00415         }
00416         _state = 0;
00417 }
00418 
00419 // ----------------------------------------------------------------------------
00420 void manualContourBaseControler::Magnet(int x, int y)
00421 {
00422         if( IsEditable())
00423         {
00424                 /*int id= */ _manViewBaseCont->GetIdPoint(x,y,GetZ()); // JPRx
00425                 if (GetManualContourModel()!=NULL){
00426                         double  xx      = x;
00427                         double  yy      = y;
00428                         double  zz      = GetZ();
00429                         GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
00430                         int                     id      = GetManualContourModel()->GetIdPoint(xx,yy,zz,32000,-1);
00431                         if (id!=-1)
00432                         {
00433                                 manualPoint     *mp     = GetManualContourModel()->GetManualPoint(id);
00434                                 mp->SetPoint(xx,yy,zz);
00435                         }
00436         //              GetManualViewBaseContour()->UpdateViewPoint(id);
00437                 }
00438                 _state = 0;
00439         }
00440 }
00441 
00442 // ----------------------------------------------------------------------------
00443 void manualContourBaseControler::SetZ(int z)
00444 {
00445         _z=z;
00446 }
00447 // ----------------------------------------------------------------------------
00448 int manualContourBaseControler::GetZ()
00449 {
00450         return _z;
00451 }
00452 // ----------------------------------------------------------------------------
00453 void manualContourBaseControler::AddPoint(int x, int y, int z) // virtual
00454 {
00455         if (GetManualContourModel()!=NULL){
00456                 double  xx      = x;
00457                 double  yy      = y;
00458                 double  zz      = z;
00459                 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
00460                 /*int   id              =*/  GetManualContourModel()->AddPoint(xx,yy,zz);  // JPRx
00461                 GetManualViewBaseContour()->AddPoint();
00462 //              GetManualViewBaseContour()->UpdateViewPoint(id);
00463         }
00464 }
00465 // ----------------------------------------------------------------------------
00466 void manualContourBaseControler::InsertPoint(int x,int y,int z)  // virtual
00467 {
00468 //EEDzz
00469         int id=-1;
00470         if (GetManualContourModel()!=NULL){
00471                 double                          xx              = x;
00472                 double                          yy              = y;
00473                 double                          zz              = z;
00474                 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
00475                 if (GetManualContourModel()->GetSizeLstPoints()>1){
00476                         id = GetManualContourModel()->InsertPoint(xx,yy,zz);
00477                         GetManualViewBaseContour()->InsertPoint(id);
00478 //                      GetManualViewBaseContour()->UpdateViewPoint(id);
00479                 } else {
00480                         GetManualContourModel()->AddPoint(xx,yy,zz);
00481                         GetManualViewBaseContour()->AddPoint();
00482 //                      AddPoint(x,y,z);
00483 //                      GetManualViewBaseContour()->UpdateViewPoint(id);
00484                 }
00485         }
00486 }
00487 
00488 // ----------------------------------------------------------------------------
00489 void manualContourBaseControler::SetPoint( int id ,int x , int y , int z){ // virtual
00490         if ((GetManualViewBaseContour()!=NULL) && (id>=0)){
00491                 double xx = x;
00492                 double yy = y;
00493                 double zz = z;
00494                 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
00495                 manualPoint             *mp             = _manContModel->GetManualPoint(id);
00496                 mp->SetPoint(xx,yy,zz);
00497                 GetManualViewBaseContour()->UpdateViewPoint(id);
00498         }
00499 }
00500 // ----------------------------------------------------------------------------
00501 void manualContourBaseControler::SetPointX( int id ,int x  ){
00502         if ((GetManualViewBaseContour()!=NULL) && (id>=0)){
00503                 double xx = x;
00504                 double yy = 0;
00505                 double zz = 0;
00506                 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
00507                 manualPoint             *mp             = _manContModel->GetManualPoint(id);
00508                 mp->SetPointX(xx);
00509                 GetManualViewBaseContour()->UpdateViewPoint(id);
00510         }
00511 }
00512 // ----------------------------------------------------------------------------
00513 void manualContourBaseControler::SetPointY( int id ,int y  ){
00514         if ((GetManualViewBaseContour()!=NULL) && (id>=0)){
00515                 double xx = 0;
00516                 double yy = y;
00517                 double zz = 0;
00518                 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
00519                 manualPoint             *mp             = _manContModel->GetManualPoint(id);
00520                 mp->SetPointY(yy);
00521                 GetManualViewBaseContour()->UpdateViewPoint(id);
00522         }
00523 }
00524 // ----------------------------------------------------------------------------
00525 void manualContourBaseControler::SetPointZ( int id ,int z  ){
00526         if ((GetManualViewBaseContour()!=NULL) && (id>=0)){
00527                 double xx = 0;
00528                 double yy = 0;
00529                 double zz = z;
00530                 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
00531                 manualPoint             *mp             = _manContModel->GetManualPoint(id);
00532                 mp->SetPointZ(zz);
00533                 GetManualViewBaseContour()->UpdateViewPoint(id);
00534         }
00535 }
00536 // ----------------------------------------------------------------------------
00537 void manualContourBaseControler::ResetContour() // virtual
00538 {
00539         this->DeleteContour();
00540         GetManualViewBaseContour()->CreateNewContour();
00541         this->SetState(0);
00542 }
00543 

Generated on 18 Mar 2010 for creaMaracasVisu_lib by  doxygen 1.6.1