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

Generated on 20 Oct 2010 for creaMaracasVisu_lib by  doxygen 1.6.1