X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FmanualContour%2FmanualViewBaseContour.cpp;h=198b7b1a5e55678bcff87ec2eeac3b5cbce448b6;hb=307866a8f06b14018ea832926bdf3d887bfffea8;hp=1f7e3768678e72bbe768b65e664ec97d74cda82e;hpb=885faee171b5cdcbcbbcb6cc83e6d196544e005c;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/manualContour/manualViewBaseContour.cpp b/lib/maracasVisuLib/src/interface/wxWindows/widgets/manualContour/manualViewBaseContour.cpp index 1f7e376..198b7b1 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/manualContour/manualViewBaseContour.cpp +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/manualContour/manualViewBaseContour.cpp @@ -1,3 +1,28 @@ +/*# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Sant�) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# Previous Authors : Laurent Guigues, Jean-Pierre Roux +# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil +# +# 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. +# ------------------------------------------------------------------------ */ + #include "manualViewBaseContour.h" @@ -60,6 +85,7 @@ int manualViewBaseContour::GetType() // virtual //int manualViewCircle::GetType() 3; //int manualViewStar::GetType() 4; //int manualViewLine::GetType() 6; +//int manualViewPoints::GetType() 7; return 0; @@ -83,11 +109,13 @@ void manualViewBaseContour :: AddCompleteContourActor( bool ifControlPoints ) /*vtkRenderer * theRenderer = */ _wxvtkbaseview->GetRenderer(); // JPRx ?? //Adding the spline AddSplineActor(); - AddTextActor(); + //Adding each control point if( ifControlPoints ) + { AddControlPoints(); + } RefreshContour(); Refresh(); } @@ -185,12 +213,20 @@ void manualViewBaseContour::AddControlPoints() // ---------------------------------------------------------------------------- void manualViewBaseContour::AddTextActor() { - _wxvtkbaseview->GetRenderer()->AddActor2D( _textActor ); + if(_show_text) + { + _wxvtkbaseview->GetRenderer()->AddActor2D( _textActor ); + _wxvtkbaseview->GetRenderer()->AddActor2D( _textActor2 ); + } } // ---------------------------------------------------------------------------- void manualViewBaseContour::RemoveTextActor() { - _wxvtkbaseview->GetRenderer()->RemoveActor2D( _textActor ); + if(_show_text) + { + _wxvtkbaseview->GetRenderer()->RemoveActor2D( _textActor ); + _wxvtkbaseview->GetRenderer()->RemoveActor2D( _textActor2 ); + } } // ---------------------------------------------------------------------------- void manualViewBaseContour::DeleteVtkObjects() @@ -230,37 +266,50 @@ double manualViewBaseContour::GetWidthLine() // ---------------------------------------------------------------------------- void manualViewBaseContour::ConstructVTKObjects() { + + //JSTG 29-02-08 ----------------------------------------------- //int i , nps = _sizePointsContour; int i; int nps = _manContModel->GetNumberOfPointsSpline(); //------------------------------------------------------------- + DeleteVtkObjects(); _pts = vtkPoints::New(); _pts->SetNumberOfPoints(nps); - - for (i=0 ; iSetPoint(i, 0 , 0 , 0 ); } // This is for the boundaring inicialisation //EED 29Mars2009 - _pts->SetPoint(0, 0 , 0 , -1000 ); - _pts->SetPoint(1, 0 , 0 , 1000 ); + //_pts->SetPoint(0, 0 , 0 , -1000 ); + //_pts->SetPoint(1, 0 , 0 , 1000 ); + +//EED 2017-03-02 // _pts->SetPoint(0, -1000 , -1000 , -1000 ); // _pts->SetPoint(1, 1000 , 1000 , 1000 ); - - vtkCellArray *lines = vtkCellArray::New(); - lines->InsertNextCell( nps /* +1 */ ); - for ( i=0 ; iInsertCellPoint(i % nps ); + // This is the structure for the spline + _splineCell = vtkCellArray::New(); + _splineCell->InsertNextCell( nps /* +1 */ ); + for ( i=0 ; iInsertCellPoint(i % nps ); } + // This is the structure for the spline justo to points (line) + // This will be use in the refresh part, in case the spline have only 2 points + _lineCell = vtkCellArray::New(); + _lineCell->InsertNextCell(2); + _lineCell->InsertCellPoint(0); + _lineCell->InsertCellPoint(1); + _pd = vtkPolyData::New(); _pd->SetPoints( _pts ); - _pd->SetLines( lines ); - lines->Delete(); //do not delete lines ?? + _pd->SetLines( _splineCell ); + // lines->Delete(); //do not delete lines ?? _contourVtkActor = vtkActor::New(); _bboxMapper = vtkPolyDataMapper::New(); @@ -275,6 +324,23 @@ void manualViewBaseContour::ConstructVTKObjects() _pd->ComputeBounds(); + InitTextActor(); +} + +// ---------------------------------------------------------------------------- +void manualViewBaseContour::SetCellArray(bool type) +{ + if (type==true) + { + _pd->SetLines( _splineCell ); + } else { + _pd->SetLines( _lineCell ); + }// if type +} + +// ---------------------------------------------------------------------------- +void manualViewBaseContour::InitTextActor() +{ // Text _textActor = vtkTextActor::New(); // _textActor->SetDisplayPosition(200, 200); @@ -288,8 +354,26 @@ void manualViewBaseContour::ConstructVTKObjects() vtkTextProperty *tprop = _textActor->GetTextProperty(); tprop->SetFontSize(14); tprop->SetFontFamilyToArial(); - tprop->SetColor(0, 0, 1); + tprop->SetColor(1, 1, 0); + + + // Text 2 + _textActor2 = vtkTextActor::New(); +// _textActor->SetDisplayPosition(200, 200); + _textActor2->SetInput("00"); + // Set coordinates to match the old vtkScaledTextActor default value +// _textActor2->GetPosition2Coordinate()->SetCoordinateSystemToNormalizedViewport(); +// _textActor2->GetPosition2Coordinate()->SetValue( 0.2 , 0.2 ); + _textActor2->GetPositionCoordinate()->SetCoordinateSystemToWorld (); +// _textActor2->GetPositionCoordinate()->SetValue( 0.8 , 0.8 ); + + vtkTextProperty *tprop2 = _textActor2->GetTextProperty(); + tprop2->SetFontSize(14); + tprop2->SetFontFamilyToArial(); + tprop2->SetColor(1, 1, 0); + } + // ---------------------------------------------------------------------------- void manualViewBaseContour::CreateNewContour() { @@ -495,10 +579,11 @@ bool manualViewBaseContour::SelectPosibleContour(int x, int y, int z) bool result=false; SetPosibleSelected(result); int id = GetIdPoint(x,y,z); + if( !GetEditable() && !_selected && id!= -1) { result=true; - SetPosibleSelected(result); + _posibleSelected=true; } else { @@ -519,8 +604,6 @@ bool manualViewBaseContour::SelectPosibleContour(int x, int y, int z) SetPosibleSelected(result); } } - - } return result; } @@ -547,7 +630,7 @@ void manualViewBaseContour::UnSelectAllPoints(){ Refresh(); } // ---------------------------------------------------------------------------- -void manualViewBaseContour::SetModel(manualContourModel *manContModel){ +void manualViewBaseContour::SetModel(manualBaseModel *manContModel){ _manContModel=manContModel; } // ---------------------------------------------------------------------------- @@ -596,7 +679,8 @@ double* manualViewBaseContour::GetVectorPointsZManualContour() // ---------------------------------------------------------------------------- void manualViewBaseContour::Refresh() // virtual { - if (_contourVtkActor!=NULL){ + if (_contourVtkActor!=NULL) + { RefreshContour(); } int i,size=_lstViewPoints.size(); @@ -615,6 +699,7 @@ void manualViewBaseContour::Refresh() // virtual if (vri==NULL) { _wxvtkbaseview->GetRenWin()->Render(); + printf("EED %p How to optimize manualViewBaseContour::Refresh() \n",this); } } @@ -622,7 +707,10 @@ void manualViewBaseContour::Refresh() // virtual void manualViewBaseContour::RefreshText() // virtual { if( _textActor!=NULL) + { _textActor -> SetInput("00"); + _textActor2 -> SetInput("00"); + } } // ---------------------------------------------------------------------------- void manualViewBaseContour::SetColorNormalContour(double r, double g, double b) @@ -733,12 +821,12 @@ void manualViewBaseContour::TransfromCoordViewWorld(double &X, double &Y, double } // ---------------------------------------------------------------------------- -void manualViewBaseContour::SetRange(int range) +void manualViewBaseContour::SetRange(double range) { _range=range; } // ---------------------------------------------------------------------------- -int manualViewBaseContour::GetRange() +double manualViewBaseContour::GetRange() { return _range; } @@ -875,15 +963,18 @@ void manualViewBaseContour::SetVisible(bool ok) _contourVtkActor->GetProperty()->SetOpacity( opacity ); _textActor->GetProperty()->SetOpacity( opacity ); _textActor->SetInput("00"); + _textActor2->GetProperty()->SetOpacity( opacity ); + _textActor2->SetInput("00"); } // ---------------------------------------------------------------------------- void manualViewBaseContour::SetShowText(bool ok) { _show_text = ok; - if (_show_text==false) + if (_show_text==false && _textActor!=NULL) { _textActor->SetInput("00"); + _textActor2->SetInput("00"); } } // ----------------------------------------------------------------------------