/*========================================================================= 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::MouseClickRight(int x, int y) { SetCompleteCreation( true ); SetKeyBoardMoving( false ); GetManualContourModel()->SetCloseContour(false); SetEditable( false ); SetPosibleToMove( false ); SetState(0); if(!_created) { //DeleteContour(); } } //========================================================================= 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; SetCompleteCreation( true ); SetKeyBoardMoving( false ); GetManualContourModel()->SetCloseContour(false); SetEditable( false ); SetPosibleToMove( false ); SetState(0); } // 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(); } } //========================================================================= } // EO namespace bbtk // EOF