/*========================================================================= Program: bbtk Module: $RCSfile$ Language: C++ Date: $Date$ Version: $Revision$ =========================================================================*/ /* --------------------------------------------------------------------- * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux * * This software is governed by the CeCILL-B license under French law and * abiding by the rules of distribution of free software. You can use, * modify and/ or redistribute the software under the terms of the CeCILL-B * license as circulated by CEA, CNRS and INRIA at the following URL * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html * or in the file LICENSE.txt. * * As a counterpart to the access to the source code and rights to copy, * modify and redistribute granted by the license, users are provided only * with a limited warranty and the software's author, the holder of the * economic rights, and the successive licensors have only limited * liability. * * The fact that you are presently reading this means that you have had * knowledge of the CeCILL-B license and that you accept its terms. * ------------------------------------------------------------------------ */ /** * \file * \brief Class bbtk::manualConnectorContourController */ #include "manualConnectorContourController.h" namespace bbtk { //========================================================================= manualConnectorContourController::manualConnectorContourController() { } //========================================================================= manualConnectorContourController::~manualConnectorContourController() { } //========================================================================= void manualConnectorContourController::MouseMove(int x, int y) // virtual { int z=GetZ(); GetManualViewBaseContour()->SelectPosiblePoint(x,y,z); GetManualViewBaseContour()->SelectPosibleContour(x,y,z); if (GetState()==1){ SetPoint( _bakIdPoint , x , y ,z); } if (GetState()==5){ SetPoint( _bakIdPoint , x , y ,z); } if ( GetState()==6 && !IsEditable() && GetPosibleToMove() &&IsMoving() ) { //GetManualViewBaseContour()->MoveContour(x,y,z); } if (GetState()!=7 || GetManualViewBaseContour()->GetPosibleSelected() ){ GetManualViewBaseContour()->Refresh(); this->_vtkInteractorStyleBaseView->SetRefresh_waiting(); } if (!IsEditable()) { GetManualViewBaseContour()->RemoveControlPoints(); GetManualViewBaseContour()->Refresh(); this->_vtkInteractorStyleBaseView->SetRefresh_waiting(); } } //========================================================================= void manualConnectorContourController::MouseClickRight(int x, int y) { SetCompleteCreation( true ); SetKeyBoardMoving( false ); GetManualContourModel()->SetCloseContour(false); SetEditable( false ); SetPosibleToMove( false ); SetState(0); } //========================================================================= void manualConnectorContourController::MouseClickLeft(int x, int y) { bool ok = false; int z = GetZ(); int size= GetManualViewBaseContour()->GetNumberOfPoints(); // Insert a Control Point with shift+ClickLeft vtkRenderWindowInteractor *vtkrenderwindowinteractor = _vtkInteractorStyleBaseView->GetInteractor(); if( IsEditable() ) { if ( (_vtkInteractorStyleBaseView!=NULL) && (GetState()==0) && ( (vtkrenderwindowinteractor!=NULL) && (vtkrenderwindowinteractor->GetShiftKey()==1) ) ) { ok=true; InsertPoint(x,y,z); size++; } // Start to Insert Control Points with ClickLeft (Empty contour) if ((GetState()==0) && (size==0) && (_easyCreation==true) ) { ok=true; SetState(1); GetManualContourModel()->SetCloseContour(false); AddPoint(x,y,z); } // RaC Just create 2 points if ((GetState()==1) && (_easyCreation==true) && GetNumberOfPointsManualContour()==2) { ok=true; endContourCreation(); } // Continue to Insert Control Points with ClickLeft (After being empty the contour) if ((GetState()==1) && (_easyCreation==true) ) { ok=true; AddPoint(x,y,z); _bakIdPoint=GetNumberOfPointsManualContour() - 1; } // Insert Control Points IF Contour si Selected if ((GetState()==0) && GetManualViewBaseContour()->GetPosibleSelected() ) { ok=true; InsertPoint(x,y,z); _bakIdPoint = GetManualViewBaseContour()->GetIdPoint(x,y,z); SetState(6); } // Chose id of Control Point to be move if ( (GetState()==0 || GetState()==6) && (GetManualViewBaseContour()->GetIdPoint(x,y,z)!=-1 ) ) { ok=true; _bakIdPoint = GetManualViewBaseContour()->GetIdPoint(x,y,z); if(_bakIdPoint!=0 && _bakIdPoint!=GetManualViewBaseContour()->GetNumberOfPoints()-1) { SetState(5); } } // If nothing selected _state=7 if ( (GetState()==0) && (GetManualViewBaseContour()->GetIdPoint(x,y,z)==-1 ) ) { //ok=true; _bakIdPoint = GetManualViewBaseContour()->GetIdPoint(x,y,z); SetState(7); } }else{ SetPosibleToMove( true ); GetManualViewBaseContour()->SetSelected( GetManualViewBaseContour()->GetPosibleSelected() ); } // IsEditable if ( GetState() == 0 && GetManualViewBaseContour()->GetPosibleSelected() ) { SetMoving( true ); ok=true; GetManualViewBaseContour()->InitMove(x,y,z); SetState(6); } if (ok==true) { GetManualViewBaseContour()->Refresh(); } } //========================================================================= void manualConnectorContourController::endContourCreation() { SetCompleteCreation( true ); SetKeyBoardMoving( false ); GetManualContourModel()->SetCloseContour(false); SetEditable( false ); SetPosibleToMove( false ); SetState(0); } //========================================================================= } // EO namespace bbtk // EOF