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                 MouseClickRight(X,Y);
00230         }
00231         return true;
00232 }
00233 // ----------------------------------------------------------------------------
00234 bool manualContourBaseControler::OnRightButtonUp()
00235 {
00236         return true;
00237 }
00238 // ----------------------------------------------------------------------------
00239 void manualContourBaseControler::SetModelView(manualContourModel *manContModel, manualViewBaseContour *manViewBaseCont){
00240         _manContModel           =       manContModel;
00241         _manViewBaseCont        =       manViewBaseCont;
00242         _manViewBaseCont->SetEditable( &_editable );
00243 }
00244 // ----------------------------------------------------------------------------
00245 manualContourModel* manualContourBaseControler::GetManualContourModel()
00246 {
00247         return _manContModel;
00248 }
00249 // ----------------------------------------------------------------------------
00250 manualViewBaseContour* manualContourBaseControler::GetManualViewBaseContour()
00251 {
00252         return _manViewBaseCont;
00253 }
00254 // ----------------------------------------------------------------------------
00255 void manualContourBaseControler::MouseClickLeft(int x, int y) // virtual
00256 {
00257 
00258 }
00259 // ----------------------------------------------------------------------------
00260 void manualContourBaseControler::MouseClickRight(int x, int y)
00261 {
00262 //      if (_state==1)
00263 //      {
00264 //              _state=0;
00265 //      }
00266         SetEditable( false );
00267         SetPosibleToMove( false );
00268         _state = 0;
00269 
00270 //EED 24Avril2009       _state=7;
00271 }
00272 // ----------------------------------------------------------------------------
00273 void manualContourBaseControler::MouseReleaseLeft(int x, int y)
00274 {
00275         if (_state==5){ _state = 0; }
00276         if (_state==6){ _state = 0; }
00277         if (_state==7){ _state = 0; }
00278         SetMoving( false );
00279         GetManualViewBaseContour()->SelectPosibleContour(x,y,GetZ());
00280         if( GetIfCompleteCreation() && IsEditable() && !GetManualViewBaseContour()->GetPosibleSelected() && (GetManualViewBaseContour()->GetIdPoint(x,y,GetZ())==-1)  )
00281         {
00282                 SetEditable( false );
00283                 SetPosibleToMove( false );
00284         }
00285 }
00286 // ----------------------------------------------------------------------------
00287 void manualContourBaseControler::MouseDLeft(int x, int y )
00288 {
00289         if (_state==0)
00290         {
00291                 int z=GetZ();
00292                 GetManualViewBaseContour()->SelectPosibleContour(x,y,z);
00293                 GetManualViewBaseContour()->SelectPosiblePoint(x,y,z);
00294                 if ( GetManualViewBaseContour()->GetPosibleSelected() )
00295                 {
00296                         _editable = true;
00297                 }
00298         }
00299 }
00300 // ----------------------------------------------------------------------------
00301 void manualContourBaseControler::MouseMove(int x, int y) // virtual
00302 {
00303 }
00304 // ----------------------------------------------------------------------------
00305 void manualContourBaseControler::SetState(int state)
00306 {
00307         _state=state;
00308 }
00309 // ----------------------------------------------------------------------------
00310 int manualContourBaseControler::GetState()
00311 {
00312         return _state;
00313 }
00314 // ----------------------------------------------------------------------------
00315 bool manualContourBaseControler::IsEditable( )
00316 {
00317         return _editable;
00318 }
00319 // ----------------------------------------------------------------------------
00320 void manualContourBaseControler::SetEditable(  bool condition  )
00321 {
00322         if (GetManualViewBaseContour()!=NULL) {
00323                 if( !condition )
00324                 {
00325                         GetManualViewBaseContour()->RemoveControlPoints();
00326                 }
00327                 GetManualViewBaseContour()->SetSelected( condition );
00328         }
00329         _editable = condition;
00330 }
00331 
00332 // ----------------------------------------------------------------------------
00333 bool manualContourBaseControler::GetPosibleToMove()
00334 {
00335         return _posibleToMove;
00336 }
00337 // ----------------------------------------------------------------------------
00338 void manualContourBaseControler::SetPosibleToMove( bool condition )
00339 {
00340         _posibleToMove = condition;
00341 }
00342 // ----------------------------------------------------------------------------
00343 bool manualContourBaseControler::IsMoving()
00344 {
00345         return _moving;
00346 }
00347 // ----------------------------------------------------------------------------
00348 void manualContourBaseControler::SetMoving( bool condition )
00349 {
00350         _moving = condition;
00351 }
00352 // ----------------------------------------------------------------------------
00353 void manualContourBaseControler::SetCompleteCreation( bool condition )
00354 {
00355         _created = condition;
00356 }
00357 // ----------------------------------------------------------------------------
00358 bool manualContourBaseControler::GetIfCompleteCreation ( )
00359 {
00360         return _created;
00361 }
00362 // ----------------------------------------------------------------------------
00363 void manualContourBaseControler::SetKeyBoardMoving( bool condition )
00364 {
00365         _keyBoardMoving = condition;
00366 }
00367 // ----------------------------------------------------------------------------
00368 bool manualContourBaseControler::GetKeyBoardMoving(  )
00369 {
00370         return _keyBoardMoving;
00371 }
00372 // ----------------------------------------------------------------------------
00373 void manualContourBaseControler::CreateNewManualContour(){
00374         _manViewBaseCont->CreateNewContour();
00375 }
00376 // ----------------------------------------------------------------------------
00377 int     manualContourBaseControler::GetNumberOfPointsManualContour(){
00378         return _manViewBaseCont->GetNumberOfPoints();
00379 }
00380 // ----------------------------------------------------------------------------
00381 
00382 //JSTG - 25-02-08 -------------------------------------------------------------
00383 int     manualContourBaseControler::GetNumberOfPointsSplineManualContour(){
00384         //return _manViewBaseCont->GetNumberOfPointsSpline();
00385         return _manContModel->GetNumberOfPointsSpline();
00386 }
00387 // ----------------------------------------------------------------------------
00388 
00389 double* manualContourBaseControler::GetVectorPointsXManualContour(){
00390         return _manViewBaseCont->GetVectorPointsXManualContour();
00391 }
00392 // ----------------------------------------------------------------------------
00393 double* manualContourBaseControler::GetVectorPointsYManualContour(){
00394         return _manViewBaseCont->GetVectorPointsYManualContour();
00395 }
00396 // ----------------------------------------------------------------------------
00397 void manualContourBaseControler::DeleteContour(){
00398         _manViewBaseCont->DeleteContour();
00399         _manContModel->DeleteAllPoints();
00400 }
00401 // ----------------------------------------------------------------------------
00402 void manualContourBaseControler::DeleteActualMousePoint(int x, int y)// virtual
00403 {
00404         if ((_manContModel!=NULL) && (_manViewBaseCont!=NULL) )
00405         {
00406                 int id=_manViewBaseCont->GetIdPoint(x,y,GetZ());
00407                 if ((id!=-1) && (_manContModel->GetSizeLstPoints()>2) ){
00408                         _manContModel->DeletePoint(id);
00409                         _manViewBaseCont->DeletePoint(id);
00410                 }
00411         }
00412         _state = 0;
00413 }
00414 
00415 // ----------------------------------------------------------------------------
00416 void manualContourBaseControler::Magnet(int x, int y)
00417 {
00418         if( IsEditable())
00419         {
00420                 /*int id= */ _manViewBaseCont->GetIdPoint(x,y,GetZ()); // JPRx
00421                 if (GetManualContourModel()!=NULL){
00422                         double  xx      = x;
00423                         double  yy      = y;
00424                         double  zz      = GetZ();
00425                         GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
00426                         int                     id      = GetManualContourModel()->GetIdPoint(xx,yy,zz,32000,-1);
00427                         if (id!=-1)
00428                         {
00429                                 manualPoint     *mp     = GetManualContourModel()->GetManualPoint(id);
00430                                 mp->SetPoint(xx,yy,zz);
00431                         }
00432         //              GetManualViewBaseContour()->UpdateViewPoint(id);
00433                 }
00434                 _state = 0;
00435         }
00436 }
00437 
00438 // ----------------------------------------------------------------------------
00439 void manualContourBaseControler::SetZ(int z)
00440 {
00441         _z=z;
00442 }
00443 // ----------------------------------------------------------------------------
00444 int manualContourBaseControler::GetZ()
00445 {
00446         return _z;
00447 }
00448 // ----------------------------------------------------------------------------
00449 void manualContourBaseControler::AddPoint(int x, int y, int z) // virtual
00450 {
00451         if (GetManualContourModel()!=NULL){
00452                 double  xx      = x;
00453                 double  yy      = y;
00454                 double  zz      = z;
00455                 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
00456                 /*int   id              =*/  GetManualContourModel()->AddPoint(xx,yy,zz);  // JPRx
00457                 GetManualViewBaseContour()->AddPoint();
00458 //              GetManualViewBaseContour()->UpdateViewPoint(id);
00459         }
00460 }
00461 // ----------------------------------------------------------------------------
00462 void manualContourBaseControler::InsertPoint(int x,int y,int z)  // virtual
00463 {
00464 //EEDzz
00465         int id=-1;
00466         if (GetManualContourModel()!=NULL){
00467                 double                          xx              = x;
00468                 double                          yy              = y;
00469                 double                          zz              = z;
00470                 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
00471                 if (GetManualContourModel()->GetSizeLstPoints()>1){
00472                         id = GetManualContourModel()->InsertPoint(xx,yy,zz);
00473                         GetManualViewBaseContour()->InsertPoint(id);
00474 //                      GetManualViewBaseContour()->UpdateViewPoint(id);
00475                 } else {
00476                         GetManualContourModel()->AddPoint(xx,yy,zz);
00477                         GetManualViewBaseContour()->AddPoint();
00478 //                      AddPoint(x,y,z);
00479 //                      GetManualViewBaseContour()->UpdateViewPoint(id);
00480                 }
00481         }
00482 }
00483 
00484 // ----------------------------------------------------------------------------
00485 void manualContourBaseControler::SetPoint( int id ,int x , int y , int z){ // virtual
00486         if ((GetManualViewBaseContour()!=NULL) && (id>=0)){
00487                 double xx = x;
00488                 double yy = y;
00489                 double zz = z;
00490                 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
00491                 manualPoint             *mp             = _manContModel->GetManualPoint(id);
00492                 mp->SetPoint(xx,yy,zz);
00493                 GetManualViewBaseContour()->UpdateViewPoint(id);
00494         }
00495 }
00496 // ----------------------------------------------------------------------------
00497 void manualContourBaseControler::SetPointX( int id ,int x  ){
00498         if ((GetManualViewBaseContour()!=NULL) && (id>=0)){
00499                 double xx = x;
00500                 double yy = 0;
00501                 double zz = 0;
00502                 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
00503                 manualPoint             *mp             = _manContModel->GetManualPoint(id);
00504                 mp->SetPointX(xx);
00505                 GetManualViewBaseContour()->UpdateViewPoint(id);
00506         }
00507 }
00508 // ----------------------------------------------------------------------------
00509 void manualContourBaseControler::SetPointY( int id ,int y  ){
00510         if ((GetManualViewBaseContour()!=NULL) && (id>=0)){
00511                 double xx = 0;
00512                 double yy = y;
00513                 double zz = 0;
00514                 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
00515                 manualPoint             *mp             = _manContModel->GetManualPoint(id);
00516                 mp->SetPointY(yy);
00517                 GetManualViewBaseContour()->UpdateViewPoint(id);
00518         }
00519 }
00520 // ----------------------------------------------------------------------------
00521 void manualContourBaseControler::SetPointZ( int id ,int z  ){
00522         if ((GetManualViewBaseContour()!=NULL) && (id>=0)){
00523                 double xx = 0;
00524                 double yy = 0;
00525                 double zz = z;
00526                 GetManualViewBaseContour()->TransfromCoordViewWorld(xx,yy,zz);
00527                 manualPoint             *mp             = _manContModel->GetManualPoint(id);
00528                 mp->SetPointZ(zz);
00529                 GetManualViewBaseContour()->UpdateViewPoint(id);
00530         }
00531 }
00532 // ----------------------------------------------------------------------------
00533 void manualContourBaseControler::ResetContour() // virtual
00534 {
00535         this->DeleteContour();
00536         GetManualViewBaseContour()->CreateNewContour();
00537         this->SetState(0);
00538 }
00539 

Generated on Fri Jun 12 00:08:33 2009 for creaMaracasVisu by  doxygen 1.5.7.1