X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FOBJECT%2FSMESH_CellLabelActor.cxx;h=0d7d428d6f6d276f96a5b4ab64acc4d82c3b1721;hp=3e117de16858568a164989c9d6734bc76faba832;hb=52d825495306f72048c8754aa5c86c6a390f8262;hpb=bd4e115a78b52e3fbc016e5e30bb0e19b2a9e7d6 diff --git a/src/OBJECT/SMESH_CellLabelActor.cxx b/src/OBJECT/SMESH_CellLabelActor.cxx index 3e117de16..0d7d428d6 100644 --- a/src/OBJECT/SMESH_CellLabelActor.cxx +++ b/src/OBJECT/SMESH_CellLabelActor.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -6,7 +6,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -27,6 +27,7 @@ #include #include +#include #include #include @@ -52,38 +53,36 @@ SMESH_CellLabelActor::SMESH_CellLabelActor() { myCellsNumDataSet = vtkUnstructuredGrid::New(); myCellCenters = VTKViewer_CellCenters::New(); - myCellCenters->SetInput(myCellsNumDataSet); + myCellCenters->SetInputData(myCellsNumDataSet); myClsMaskPoints = vtkMaskPoints::New(); - myClsMaskPoints->SetInput(myCellCenters->GetOutput()); + myClsMaskPoints->SetInputConnection(myCellCenters->GetOutputPort()); myClsMaskPoints->SetOnRatio(1); myClsSelectVisiblePoints = vtkSelectVisiblePoints::New(); - myClsSelectVisiblePoints->SetInput(myClsMaskPoints->GetOutput()); + myClsSelectVisiblePoints->SetInputConnection(myClsMaskPoints->GetOutputPort()); myClsSelectVisiblePoints->SelectInvisibleOff(); myClsSelectVisiblePoints->SetTolerance(0.1); myClsLabeledDataMapper = vtkLabeledDataMapper::New(); - myClsLabeledDataMapper->SetInput(myClsSelectVisiblePoints->GetOutput()); + myClsLabeledDataMapper->SetInputConnection(myClsSelectVisiblePoints->GetOutputPort()); myClsLabeledDataMapper->SetLabelFormat("%d"); myClsLabeledDataMapper->SetLabelModeToLabelScalars(); - vtkTextProperty* aClsTextProp = vtkTextProperty::New(); - aClsTextProp->SetFontFamilyToTimes(); - static int aCellsFontSize = 12; - aClsTextProp->SetFontSize(aCellsFontSize); - aClsTextProp->SetBold(1); - aClsTextProp->SetItalic(0); - aClsTextProp->SetShadow(0); - myClsLabeledDataMapper->SetLabelTextProperty(aClsTextProp); - aClsTextProp->Delete(); + myClsTextProp = vtkTextProperty::New(); + myClsTextProp->SetFontFamilyToTimes(); + myClsTextProp->SetFontSize(12); + myClsTextProp->SetBold(1); + myClsTextProp->SetItalic(0); + myClsTextProp->SetShadow(0); + myClsTextProp->SetColor( 0, 1, 0 ); + myClsLabeledDataMapper->SetLabelTextProperty(myClsTextProp); myIsCellsLabeled = false; myCellsLabels = vtkActor2D::New(); myCellsLabels->SetMapper(myClsLabeledDataMapper); - myCellsLabels->GetProperty()->SetColor(0,1,0); myCellsLabels->SetVisibility(myIsCellsLabeled); vtkCallbackCommand* callBackCommand = vtkCallbackCommand::New(); @@ -91,7 +90,7 @@ SMESH_CellLabelActor::SMESH_CellLabelActor() { callBackCommand->SetCallback(SMESH_CellLabelActor::ProcessEvents); myTransformFilter->AddObserver("VTKViewer_TransformFilter::TransformationFinished", - callBackCommand); + callBackCommand); callBackCommand->Delete(); } @@ -103,26 +102,43 @@ SMESH_CellLabelActor::~SMESH_CellLabelActor() { //Deleting of cells numbering pipeline //--------------------------------------- myCellsNumDataSet->Delete(); - - myClsLabeledDataMapper->RemoveAllInputs(); - myClsLabeledDataMapper->Delete(); - - // commented: porting to vtk 5.0 - // myClsSelectVisiblePoints->UnRegisterAllOutputs(); - myClsSelectVisiblePoints->Delete(); - + myCellsLabels->Delete(); // commented: porting to vtk 5.0 // myClsMaskPoints->UnRegisterAllOutputs(); myClsMaskPoints->Delete(); - // commented: porting to vtk 5.0 // myCellCenters->UnRegisterAllOutputs(); myCellCenters->Delete(); - - myCellsLabels->Delete(); + + myClsLabeledDataMapper->RemoveAllInputs(); + myClsLabeledDataMapper->Delete(); + // commented: porting to vtk 5.0 + // myClsSelectVisiblePoints->UnRegisterAllOutputs(); + myClsSelectVisiblePoints->Delete(); + myClsTextProp->Delete(); } +void SMESH_CellLabelActor::SetFontProperties( SMESH::LabelFont family, int size, + bool bold, bool italic, bool shadow, + double r, double g, double b ) +{ + switch ( family ) { + case SMESH::FntArial: + myClsTextProp->SetFontFamilyToArial(); break; + case SMESH::FntCourier: + myClsTextProp->SetFontFamilyToCourier(); break; + case SMESH::FntTimes: + default: + myClsTextProp->SetFontFamilyToTimes(); break; + } + myClsTextProp->SetFontSize( size ); + myClsTextProp->SetBold( bold ); + myClsTextProp->SetItalic( italic ); + myClsTextProp->SetShadow( shadow ); + myClsTextProp->SetColor( r, g, b ); +} + void SMESH_CellLabelActor::SetCellsLabeled(bool theIsCellsLabeled) { myTransformFilter->Update(); vtkUnstructuredGrid* aGrid = vtkUnstructuredGrid::SafeDownCast(myTransformFilter->GetOutput()); @@ -137,11 +153,13 @@ void SMESH_CellLabelActor::SetCellsLabeled(bool theIsCellsLabeled) { vtkIntArray *anArray = vtkIntArray::New(); anArray->SetNumberOfValues(aNbElem); for(int anId = 0; anId < aNbElem; anId++){ - int aSMDSId = myVisualObj->GetElemObjId(anId); + vtkIdType id = myExtractUnstructuredGrid->GetInputId(anId); + id = (id >=0) ? id : anId; + int aSMDSId = myVisualObj->GetElemObjId(id); anArray->SetValue(anId,aSMDSId); } aDataSet->GetCellData()->SetScalars(anArray); - myCellCenters->SetInput(aDataSet); + myCellCenters->SetInputData(aDataSet); myCellsLabels->SetVisibility(GetVisibility()); }else{ myCellsLabels->SetVisibility(false); @@ -176,9 +194,9 @@ void SMESH_CellLabelActor::UpdateLabels() { void SMESH_CellLabelActor::ProcessEvents(vtkObject* vtkNotUsed(theObject), - unsigned long theEvent, - void* theClientData, - void* vtkNotUsed(theCallData)) { + unsigned long theEvent, + void* theClientData, + void* vtkNotUsed(theCallData)) { SMESH_CellLabelActor* self = reinterpret_cast(theClientData); if(self) self->UpdateLabels();