Salome HOME
#18963 Minimize compiler warnings
[modules/smesh.git] / src / OBJECT / SMESH_CellLabelActor.cxx
index 3e117de16858568a164989c9d6734bc76faba832..07275df16a8c1f7c110ee7081c3fec488ee01e12 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  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
 //
 #include "SMESH_CellLabelActor.h"
 
+#include "SMESH_ExtractGeometry.h"
+
 #include <VTKViewer_TransformFilter.h>
 #include <VTKViewer_CellCenters.h>
+#include <VTKViewer_ExtractUnstructuredGrid.h>
 
 #include <vtkObjectFactory.h>
 #include <vtkCallbackCommand.h>
 #include <vtkUnstructuredGrid.h>
 #include <vtkCellData.h>
 
-vtkStandardNewMacro(SMESH_CellLabelActor);
+vtkStandardNewMacro(SMESH_CellLabelActor)
 
 /*!
   Constructor.
 */
-SMESH_CellLabelActor::SMESH_CellLabelActor() {
-    //Definition of cells numbering pipeline
+SMESH_CellLabelActor::SMESH_CellLabelActor()
+{
+  //Definition of cells numbering pipeline
   //---------------------------------------
   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 +93,7 @@ SMESH_CellLabelActor::SMESH_CellLabelActor() {
   callBackCommand->SetCallback(SMESH_CellLabelActor::ProcessEvents);
 
   myTransformFilter->AddObserver("VTKViewer_TransformFilter::TransformationFinished",
-                                callBackCommand);
+                                 callBackCommand);
   callBackCommand->Delete();
 }
 
@@ -99,52 +101,78 @@ SMESH_CellLabelActor::SMESH_CellLabelActor() {
 /*!
   Destructor.
 */
-SMESH_CellLabelActor::~SMESH_CellLabelActor() {
+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::SetCellsLabeled(bool theIsCellsLabeled) {
+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)
+{
+  myIsCellsLabeled = theIsCellsLabeled;
+
+  myCellsLabels->SetVisibility(false);
+
   myTransformFilter->Update();
   vtkUnstructuredGrid* aGrid = vtkUnstructuredGrid::SafeDownCast(myTransformFilter->GetOutput());
-  if(!aGrid)
-    return;
 
-  myIsCellsLabeled = theIsCellsLabeled && aGrid->GetNumberOfPoints();
-  if(myIsCellsLabeled){
+  if ( myIsCellsLabeled && aGrid )
+  {
     myCellsNumDataSet->ShallowCopy(aGrid);
     vtkUnstructuredGrid *aDataSet = myCellsNumDataSet;
     int aNbElem = aDataSet->GetNumberOfCells();
     vtkIntArray *anArray = vtkIntArray::New();
     anArray->SetNumberOfValues(aNbElem);
-    for(int anId = 0; anId < aNbElem; anId++){
-      int aSMDSId = myVisualObj->GetElemObjId(anId);
+    myExtractUnstructuredGrid->BuildOut2InMap();
+    for(int anId = 0; anId < aNbElem; anId++)
+    {
+      vtkIdType id = anId;
+      if(IsImplicitFunctionUsed())
+        id = myExtractGeometry->GetElemObjId(id);
+      id = myExtractUnstructuredGrid->GetInputId(id);
+      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);
   }
 }
 
@@ -169,16 +197,18 @@ void SMESH_CellLabelActor::RemoveFromRender(vtkRenderer* theRenderer)
   SMESH_DeviceActor::RemoveFromRender(theRenderer);
 }
 
-void SMESH_CellLabelActor::UpdateLabels() {
+void SMESH_CellLabelActor::UpdateLabels()
+{
   if(myIsCellsLabeled)
     SetCellsLabeled(myIsCellsLabeled);
 }
 
 
 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<SMESH_CellLabelActor*>(theClientData);
   if(self)
     self->UpdateLabels();