+/*# ---------------------------------------------------------------------
+#
+# 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"
_spc[0] = 1;
_spc[1] = 1;
_spc[2] = 1;
-
_coulorEdit_r = 1;
_coulorEdit_g = 1;
_coulorEdit_b = 0;
-
_coulorNormal_r = 1;
_coulorNormal_g = 0;
_coulorNormal_b = 1;
-
_coulorSelection_r = 0;
_coulorSelection_g = 1;
_coulorSelection_b = 0;
-
_widthline = 1;
-
}
// ----------------------------------------------------------------------------
manualViewBaseContour::~manualViewBaseContour()
//int manualViewCircle::GetType() 3;
//int manualViewStar::GetType() 4;
//int manualViewLine::GetType() 6;
+//int manualViewPoints::GetType() 7;
return 0;
/*vtkRenderer * theRenderer = */ _wxvtkbaseview->GetRenderer(); // JPRx ??
//Adding the spline
AddSplineActor();
-
AddTextActor();
+
//Adding each control point
if( ifControlPoints )
+ {
AddControlPoints();
+ }
RefreshContour();
Refresh();
}
// ---------------------------------------------------------------------------
-void manualViewBaseContour :: RemoveCompleteContourActor()
+void manualViewBaseContour::RemoveCompleteContourActor()
{
/*vtkRenderer * theRenderer =*/ _wxvtkbaseview->GetRenderer(); // JPRx ??
//Removing the spline
// ----------------------------------------------------------------------------
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()
// ----------------------------------------------------------------------------
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 ; i<nps ; i++){
+ for (i=0 ; i<nps ; i++)
+ {
_pts->SetPoint(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 ; i<nps+1 ; i++ ){
- lines->InsertCellPoint(i % nps );
+ // This is the structure for the spline
+ _splineCell = vtkCellArray::New();
+ _splineCell->InsertNextCell( nps /* +1 */ );
+ for ( i=0 ; i<nps+1 ; i++ )
+ {
+ _splineCell->InsertCellPoint(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();
_bboxMapper->ScalarVisibilityOff( );
+
+//EED 2017-01-01 Migration VTK7
+#if VTK_MAJOR_VERSION <= 5
_bboxMapper->SetInput(_pd);
+#else
+ _bboxMapper->SetInputData(_pd);
+#endif
+
+
_bboxMapper->ImmediateModeRenderingOn();
_contourVtkActor->SetMapper(_bboxMapper);
_contourVtkActor->GetProperty()->BackfaceCullingOff();
_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);
// _textActor->GetPositionCoordinate()->SetValue( 0.8 , 0.8 );
vtkTextProperty *tprop = _textActor->GetTextProperty();
- tprop->SetFontSize(14);
+ tprop->SetFontSize(12);
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(12);
+ tprop2->SetFontFamilyToArial();
+ tprop2->SetColor(1, 1, 0);
+
}
+
// ----------------------------------------------------------------------------
void manualViewBaseContour::CreateNewContour()
{
bool result=false;
SetPosibleSelected(result);
int id = GetIdPoint(x,y,z);
+
if( !GetEditable() && !_selected && id!= -1)
{
result=true;
- SetPosibleSelected(result);
+ _posibleSelected=true;
}
else
{
SetPosibleSelected(result);
}
}
-
-
}
return result;
}
Refresh();
}
// ----------------------------------------------------------------------------
-void manualViewBaseContour::SetModel(manualContourModel *manContModel){
+void manualViewBaseContour::SetModel(manualBaseModel *manContModel){
_manContModel=manContModel;
}
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
void manualViewBaseContour::Refresh() // virtual
{
- if (_contourVtkActor!=NULL){
+ if (_contourVtkActor!=NULL)
+ {
RefreshContour();
}
int i,size=_lstViewPoints.size();
if (vri==NULL)
{
_wxvtkbaseview->GetRenWin()->Render();
+ printf("EED %p How to optimize manualViewBaseContour::Refresh() \n",this);
}
}
void manualViewBaseContour::RefreshText() // virtual
{
if( _textActor!=NULL)
+ {
_textActor -> SetInput("00");
+ _textActor2 -> SetInput("00");
+ }
}
// ----------------------------------------------------------------------------
void manualViewBaseContour::SetColorNormalContour(double r, double g, double b)
}
// ----------------------------------------------------------------------------
-void manualViewBaseContour::SetRange(int range)
+void manualViewBaseContour::SetRange(double range)
{
_range=range;
}
// ----------------------------------------------------------------------------
-int manualViewBaseContour::GetRange()
+double manualViewBaseContour::GetRange()
{
return _range;
}
_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");
+ _textActor->SetInput("");
+ _textActor2->SetInput("");
}
}
// ----------------------------------------------------------------------------