Salome HOME
Fix regression of SALOME_TESTS/Grids/smesh/3D_mesh_Extrusion_01/B2
[modules/smesh.git] / src / OBJECT / SMESH_Actor.cxx
index e8340e7e9a65c60a0c5007e7123b7abbddfe1dab..34c956b5ce12c4c9b589955d30cf82d49cf1e2d3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016  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
@@ -82,9 +82,9 @@
 #include "utilities.h"
 
 #ifdef _DEBUG_
-static int MYDEBUG = 1;
+static int MYDEBUG = 0;
 #else
-static int MYDEBUG = 1;
+static int MYDEBUG = 0;
 #endif
 
 static int aLineWidthInc = 2;
@@ -143,10 +143,11 @@ SMESH_ActorDef::SMESH_ActorDef()
   if ( mgr && mgr->booleanValue( "SMESH", "use_precision", false ) )
     myControlsPrecision = mgr->integerValue( "SMESH", "controls_precision", -1);
 
-  double aElem0DSize   = SMESH::GetFloat("SMESH:elem0d_size",5);
-  double aBallElemSize = SMESH::GetFloat("SMESH:ball_elem_size",10);
-  double aLineWidth    = SMESH::GetFloat("SMESH:element_width",1);
-  double aOutlineWidth = SMESH::GetFloat("SMESH:outline_width",1);
+  double aElem0DSize    = SMESH::GetFloat("SMESH:elem0d_size",5);
+  double aBallElemSize  = SMESH::GetFloat("SMESH:ball_elem_size",10);
+  double aBallElemScale = SMESH::GetFloat("SMESH:ball_elem_scale",1.0);
+  double aLineWidth     = SMESH::GetFloat("SMESH:element_width",1);
+  double aOutlineWidth  = SMESH::GetFloat("SMESH:outline_width",1);
 
   SMESH::LabelFont aFamilyNd = SMESH::FntTimes;
   bool aBoldNd    = true;
@@ -221,10 +222,11 @@ SMESH_ActorDef::SMESH_ActorDef()
   aFilter = my2DActor->GetExtractUnstructuredGrid();
   aFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
   aFilter->RegisterCellsWithType(VTK_TRIANGLE);
-  aFilter->RegisterCellsWithType(VTK_POLYGON);
   aFilter->RegisterCellsWithType(VTK_QUAD);
+  aFilter->RegisterCellsWithType(VTK_POLYGON);
   aFilter->RegisterCellsWithType(VTK_QUADRATIC_TRIANGLE);
   aFilter->RegisterCellsWithType(VTK_QUADRATIC_QUAD);
+  aFilter->RegisterCellsWithType(VTK_QUADRATIC_POLYGON);
   aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUAD);
   aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_TRIANGLE);
 
@@ -244,10 +246,11 @@ SMESH_ActorDef::SMESH_ActorDef()
   my2DExtActor->SetRepresentation(SMESH_DeviceActor::eInsideframe);
   aFilter = my2DExtActor->GetExtractUnstructuredGrid();
   aFilter->RegisterCellsWithType(VTK_TRIANGLE);
-  aFilter->RegisterCellsWithType(VTK_POLYGON);
   aFilter->RegisterCellsWithType(VTK_QUAD);
+  aFilter->RegisterCellsWithType(VTK_POLYGON);
   aFilter->RegisterCellsWithType(VTK_QUADRATIC_TRIANGLE);
   aFilter->RegisterCellsWithType(VTK_QUADRATIC_QUAD);
+  aFilter->RegisterCellsWithType(VTK_QUADRATIC_POLYGON);
   aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUAD);
   aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_TRIANGLE);
 
@@ -274,10 +277,7 @@ SMESH_ActorDef::SMESH_ActorDef()
   aFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE);
   aFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID);
   aFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET);
-//#ifdef VTK_HAVE_POLYHEDRON
-  MESSAGE("RegisterCellsWithType(VTK_POLYHEDRON)");
   aFilter->RegisterCellsWithType(VTK_POLYHEDRON);
-//#endif
 
   my3DExtProp = vtkProperty::New();
   my3DExtProp->DeepCopy(myNormalVProp);
@@ -566,6 +566,7 @@ SMESH_ActorDef::SMESH_ActorDef()
 #endif
 
   SetBallSize(aBallElemSize);
+  SetBallScale(aBallElemScale);
   Set0DSize(aElem0DSize);
 }
 
@@ -693,7 +694,8 @@ void SMESH_ActorDef::SetCellsFontProperties( SMESH::LabelFont theFamily, int the
   }
 }
 
-bool SMESH_ActorDef::GetPointsLabeled() {
+bool SMESH_ActorDef::GetPointsLabeled()
+{
   return myNodeActor && myNodeActor->GetPointsLabeled();
 }
 
@@ -718,7 +720,8 @@ void SMESH_ActorDef::SetCellsLabeled(bool theIsCellsLabeled)
 }
 
 
-bool SMESH_ActorDef::GetCellsLabeled() {
+bool SMESH_ActorDef::GetCellsLabeled()
+{
   bool result = false;
   if(my3DActor)
     result = result || my3DActor->GetCellsLabeled();
@@ -788,18 +791,13 @@ bool SMESH_ActorDef::GetFacesOrientation3DVectors()
 }
 
 
-void
-SMESH_ActorDef::
-SetControlMode(eControl theMode)
+void SMESH_ActorDef::SetControlMode(eControl theMode)
 {
   SetControlMode(theMode,true);
 }
 
 
-void
-SMESH_ActorDef::
-SetControlMode(eControl theMode,
-               bool theCheckEntityMode)
+void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode )
 {
   vtkLookupTable* lookupTable = static_cast<vtkLookupTable*>(myScalarBarActor->GetLookupTable());
   bool isLogarithmic = lookupTable->GetScale() == VTK_SCALE_LOG10;
@@ -982,34 +980,45 @@ SetControlMode(eControl theMode,
       myControlActor = my2DActor;
       break;
     }
+    case eNodeConnectivityNb:
+    {
+      myFunctor.reset( new SMESH::Controls::NodeConnectivityNumber() );
+      myControlActor = myNodeActor;
+      break;
+    }
     default:
       return;
     }
 
     vtkUnstructuredGrid* aGrid = myControlActor->GetUnstructuredGrid();
     vtkIdType aNbCells = aGrid->GetNumberOfCells();
-    if(aNbCells){
+    bool aShowOnlyScalarBarTitle = false;
+    if(aNbCells) {
       myControlMode = theMode;
       switch(myControlMode){
       case eFreeNodes:
       case eCoincidentNodes:
         myNodeExtActor->SetExtControlMode(myFunctor);
+        aShowOnlyScalarBarTitle = true;
         break;
       case eFreeEdges:
       case eFreeBorders:
       case eCoincidentElems1D:
         my1DExtActor->SetExtControlMode(myFunctor);
+        aShowOnlyScalarBarTitle = true;
         break;
       case eFreeFaces:
       case eBareBorderFace:
       case eOverConstrainedFace:
       case eCoincidentElems2D:
         my2DExtActor->SetExtControlMode(myFunctor);
+        aShowOnlyScalarBarTitle = true;
         break;
       case eBareBorderVolume:
       case eOverConstrainedVolume:
       case eCoincidentElems3D:
         my3DExtActor->SetExtControlMode(myFunctor);
+        aShowOnlyScalarBarTitle = true;
         break;
       case eLength2D:
       case eMultiConnection2D:
@@ -1020,9 +1029,19 @@ SetControlMode(eControl theMode,
         myControlActor->SetControlMode(myFunctor,myScalarBarActor,myLookupTable);
         UpdateDistribution();
       }
+      myScalarBarActor->SetTitleOnlyVisibility(aShowOnlyScalarBarTitle);
     }
 
     if(theCheckEntityMode) {
+      // if(myControlActor == myNodeActor) {
+      //   if ( myControlMode == eNodeConnectivityNb ) {
+      //     if (!myIsEntityModeCache){
+      //       myEntityModeCache = GetEntityMode();
+      //       myIsEntityModeCache=true;
+      //     }
+      //     SetEntityMode(0);
+      //   }
+      // }
       if(myControlActor == my1DActor) {
         if (!myIsEntityModeCache){
           myEntityModeCache = GetEntityMode();
@@ -1057,6 +1076,9 @@ SetControlMode(eControl theMode,
         SetEntityMode(eVolumes);
     }
     }
+    QString aTitle = QString(myScalarBarActor->GetTitle());
+    aTitle.replace(QRegExp("(:\\s).*"),"\\1"+ QString::number(GetNumberControlEntities()));
+    myScalarBarActor->SetTitle(aTitle.toLatin1().constData());
 
   }
   else {
@@ -1081,9 +1103,37 @@ SetControlMode(eControl theMode,
   Update();
 }
 
+int SMESH_ActorDef::GetNumberControlEntities()
+{
+  SMESH_DeviceActor* anAct = NULL;
+  switch(myControlMode){
+    case eFreeNodes:
+    case eCoincidentNodes:
+      anAct = myNodeExtActor;
+      break;
+    case eFreeEdges:
+    case eFreeBorders:
+    case eCoincidentElems1D:
+      anAct = my1DExtActor;
+      break;
+    case eFreeFaces:
+    case eBareBorderFace:
+    case eOverConstrainedFace:
+    case eCoincidentElems2D:
+      anAct = my2DExtActor;
+      break;
+    case eBareBorderVolume:
+    case eOverConstrainedVolume:
+    case eCoincidentElems3D:
+      anAct = my3DExtActor;
+      break;
+    default:;
+  }
+  return (anAct) ? anAct->GetUnstructuredGrid()->GetNumberOfCells() : -1;
+}
 
-void SMESH_ActorDef::AddToRender(vtkRenderer* theRenderer){
-
+void SMESH_ActorDef::AddToRender(vtkRenderer* theRenderer)
+{
   theRenderer->AddActor(myBaseActor);
   theRenderer->AddActor(myNodeExtActor);
   theRenderer->AddActor(my1DExtActor);
@@ -1106,7 +1156,8 @@ void SMESH_ActorDef::AddToRender(vtkRenderer* theRenderer){
   SALOME_Actor::AddToRender(theRenderer);
 }
 
-void SMESH_ActorDef::RemoveFromRender(vtkRenderer* theRenderer){
+void SMESH_ActorDef::RemoveFromRender(vtkRenderer* theRenderer)
+{
   SALOME_Actor::RemoveFromRender(theRenderer);
 
   theRenderer->RemoveActor(myBaseActor);
@@ -1133,9 +1184,9 @@ void SMESH_ActorDef::RemoveFromRender(vtkRenderer* theRenderer){
 
 
 bool SMESH_ActorDef::Init(TVisualObjPtr theVisualObj,
-                          const char* theEntry,
-                          const char* theName,
-                          int theIsClear)
+                          const char*   theEntry,
+                          const char*   theName,
+                          int           theIsClear)
 {
   Handle(SALOME_InteractiveObject) anIO = new SALOME_InteractiveObject(theEntry,"SMESH",theName);
   setIO(anIO);
@@ -1221,17 +1272,20 @@ bool SMESH_ActorDef::Init(TVisualObjPtr theVisualObj,
 }
 
 
-double* SMESH_ActorDef::GetBounds(){
+double* SMESH_ActorDef::GetBounds()
+{
   return myNodeActor->GetBounds();
 }
 
 
-vtkDataSet* SMESH_ActorDef::GetInput(){
+vtkDataSet* SMESH_ActorDef::GetInput()
+{
   return GetUnstructuredGrid();
 }
 
 
-void SMESH_ActorDef::SetTransform(VTKViewer_Transform* theTransform){
+void SMESH_ActorDef::SetTransform(VTKViewer_Transform* theTransform)
+{
   Superclass::SetTransform(theTransform);
 
   myNodeActor->SetTransform(theTransform);
@@ -1257,27 +1311,32 @@ void SMESH_ActorDef::SetTransform(VTKViewer_Transform* theTransform){
 }
 
 
-void SMESH_ActorDef::SetMapper(vtkMapper* theMapper){
+void SMESH_ActorDef::SetMapper(vtkMapper* theMapper)
+{
   vtkLODActor::SetMapper(theMapper);
 }
 
 
-void SMESH_ActorDef::ShallowCopy(vtkProp *prop){
+void SMESH_ActorDef::ShallowCopy(vtkProp *prop)
+{
   SALOME_Actor::ShallowCopy(prop);
 }
 
 
-vtkMapper* SMESH_ActorDef::GetMapper(){
+vtkMapper* SMESH_ActorDef::GetMapper()
+{
   return myPickableActor->GetMapper();
 }
 
 
-vtkUnstructuredGrid* SMESH_ActorDef::GetUnstructuredGrid(){
+vtkUnstructuredGrid* SMESH_ActorDef::GetUnstructuredGrid()
+{
   return myVisualObj->GetUnstructuredGrid();
 }
 
 
-bool SMESH_ActorDef::IsInfinitive(){
+bool SMESH_ActorDef::IsInfinitive()
+{
   vtkDataSet *aDataSet = myPickableActor->GetUnstructuredGrid();
   myIsInfinite = aDataSet->GetNumberOfCells() == 0 ||
     ( aDataSet->GetNumberOfCells() == 1 &&
@@ -1286,18 +1345,21 @@ bool SMESH_ActorDef::IsInfinitive(){
 }
 
 
-void SMESH_ActorDef::SetIsShrunkable(bool theShrunkable){
+void SMESH_ActorDef::SetIsShrunkable(bool theShrunkable)
+{
   if ( myIsShrinkable == theShrunkable )
     return;
   myIsShrinkable = theShrunkable;
   Modified();
 }
 
-double SMESH_ActorDef::GetShrinkFactor(){
+double SMESH_ActorDef::GetShrinkFactor()
+{
   return myBaseActor->GetShrinkFactor();
 }
 
-void SMESH_ActorDef::SetShrinkFactor(double theValue){
+void SMESH_ActorDef::SetShrinkFactor(double theValue)
+{
   myBaseActor->SetShrinkFactor(theValue);
 
   my1DActor->SetShrinkFactor(theValue);
@@ -1313,7 +1375,8 @@ void SMESH_ActorDef::SetShrinkFactor(double theValue){
   Modified();
 }
 
-void SMESH_ActorDef::SetShrink() {
+void SMESH_ActorDef::SetShrink()
+{
   if(!myIsShrinkable) return;
 
   myBaseActor->SetShrink();
@@ -1331,7 +1394,8 @@ void SMESH_ActorDef::SetShrink() {
   Modified();
 }
 
-void SMESH_ActorDef::UnShrink(){
+void SMESH_ActorDef::UnShrink()
+{
   if(!myIsShrunk) return;
 
   myBaseActor->UnShrink();
@@ -1350,30 +1414,36 @@ void SMESH_ActorDef::UnShrink(){
 }
 
 
-int SMESH_ActorDef::GetNodeObjId(int theVtkID){
+int SMESH_ActorDef::GetNodeObjId(int theVtkID)
+{
   return myPickableActor->GetNodeObjId(theVtkID);
 }
 
-double* SMESH_ActorDef::GetNodeCoord(int theObjID){
+double* SMESH_ActorDef::GetNodeCoord(int theObjID)
+{
   return myPickableActor->GetNodeCoord(theObjID);
 }
 
 
-int SMESH_ActorDef::GetElemObjId(int theVtkID){
+int SMESH_ActorDef::GetElemObjId(int theVtkID)
+{
   return myPickableActor->GetElemObjId(theVtkID);
 }
 
-vtkCell* SMESH_ActorDef::GetElemCell(int theObjID){
+vtkCell* SMESH_ActorDef::GetElemCell(int theObjID)
+{
   return myPickableActor->GetElemCell(theObjID);
 }
 
 
-void SMESH_ActorDef::SetVisibility(int theMode){
+void SMESH_ActorDef::SetVisibility(int theMode)
+{
   SetVisibility(theMode,true);
 }
 
 
-void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation){
+void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation)
+{
   SALOME_Actor::SetVisibility(theMode);
 
   myNodeActor->VisibilityOff();
@@ -1399,8 +1469,8 @@ void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation){
     if(theIsUpdateRepersentation)
       SetRepresentation(GetRepresentation());
 
-    if(myControlMode != eNone){
-      switch(myControlMode){
+    if(myControlMode != eNone) {
+      switch(myControlMode) {
       case eFreeNodes:
       case eCoincidentNodes:
         myNodeExtActor->VisibilityOn();
@@ -1424,10 +1494,11 @@ void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation){
       case eLength2D:
       case eMultiConnection2D:
         my1DExtActor->VisibilityOn();
-      default:
-        if(myControlActor->GetUnstructuredGrid()->GetNumberOfCells())
-          myScalarBarActor->VisibilityOn();
+        break;
+      default:;
       }
+      if(myControlActor->GetUnstructuredGrid()->GetNumberOfCells())
+        myScalarBarActor->VisibilityOn();
     }
 
     if(myRepresentation != ePoint)
@@ -1563,18 +1634,20 @@ void SMESH_ActorDef::SetEntityMode(unsigned int theMode)
   if (myEntityMode & eFaces) {
     if (MYDEBUG) MESSAGE("FACES");
     aFilter->RegisterCellsWithType(VTK_TRIANGLE);
-    aFilter->RegisterCellsWithType(VTK_POLYGON);
     aFilter->RegisterCellsWithType(VTK_QUAD);
+    aFilter->RegisterCellsWithType(VTK_POLYGON);
     aFilter->RegisterCellsWithType(VTK_QUADRATIC_TRIANGLE);
     aFilter->RegisterCellsWithType(VTK_QUADRATIC_QUAD);
+    aFilter->RegisterCellsWithType(VTK_QUADRATIC_POLYGON);
     aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUAD);
     aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_TRIANGLE);
 
     aHightFilter->RegisterCellsWithType(VTK_TRIANGLE);
-    aHightFilter->RegisterCellsWithType(VTK_POLYGON);
     aHightFilter->RegisterCellsWithType(VTK_QUAD);
+    aHightFilter->RegisterCellsWithType(VTK_POLYGON);
     aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_TRIANGLE);
     aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_QUAD);
+    aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_POLYGON);
     aHightFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUAD);
     aHightFilter->RegisterCellsWithType(VTK_BIQUADRATIC_TRIANGLE);
   }
@@ -1593,9 +1666,7 @@ void SMESH_ActorDef::SetEntityMode(unsigned int theMode)
     aFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID);
     aFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE);
     aFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET);
-//#ifdef VTK_HAVE_POLYHEDRON
     aFilter->RegisterCellsWithType(VTK_POLYHEDRON);
-//#endif
 
     aHightFilter->RegisterCellsWithType(VTK_TETRA);
     aHightFilter->RegisterCellsWithType(VTK_VOXEL);
@@ -1609,9 +1680,7 @@ void SMESH_ActorDef::SetEntityMode(unsigned int theMode)
     aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE);
     aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID);
     aHightFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET);
-//#ifdef VTK_HAVE_POLYHEDRON
     aHightFilter->RegisterCellsWithType(VTK_POLYHEDRON);
-//#endif
   }
   aFilter->Update();
   if (MYDEBUG) MESSAGE(aFilter->GetOutput()->GetNumberOfCells());
@@ -1708,13 +1777,14 @@ void SMESH_ActorDef::SetRepresentation (int theMode)
   my0DActor->SetRepresentation(aReperesent);
   myBallActor->SetRepresentation(aReperesent);
 
-  switch(myControlMode){
+  switch ( myControlMode ) {
   case eLength:
   case eMultiConnection:
     aProp = aBackProp = my1DProp;
     if(myRepresentation != ePoint)
       aReperesent = SMESH_DeviceActor::eInsideframe;
     break;
+  default:;
   }
 
   if(aQuadraticMode == SMESH_Actor::eLines)
@@ -1741,19 +1811,22 @@ void SMESH_ActorDef::SetRepresentation (int theMode)
 }
 
 
-void SMESH_ActorDef::SetPointRepresentation(bool theIsPointsVisible){
+void SMESH_ActorDef::SetPointRepresentation(bool theIsPointsVisible)
+{
   if ( myIsPointsVisible == theIsPointsVisible )
     return;
   myIsPointsVisible = theIsPointsVisible;
   SetRepresentation(GetRepresentation());
 }
 
-bool SMESH_ActorDef::GetPointRepresentation(){
+bool SMESH_ActorDef::GetPointRepresentation()
+{
   return myIsPointsVisible || myNodeActor->GetPointsLabeled();
 }
 
 
-void SMESH_ActorDef::UpdateHighlight(){
+void SMESH_ActorDef::UpdateHighlight()
+{
   myHighlitableActor->SetHighlited(false);
   myHighlitableActor->SetVisibility(false);
   bool anIsVisible = GetVisibility();
@@ -1796,7 +1869,8 @@ void SMESH_ActorDef::UpdateHighlight(){
 }
 
 
-void SMESH_ActorDef::highlight(bool theHighlight){
+void SMESH_ActorDef::highlight(bool theHighlight)
+{
   if ( myIsHighlighted == theHighlight )
     return;
   myIsHighlighted = theHighlight;
@@ -1804,7 +1878,8 @@ void SMESH_ActorDef::highlight(bool theHighlight){
 }
 
 
-void SMESH_ActorDef::SetPreSelected(bool thePreselect){
+void SMESH_ActorDef::SetPreSelected(bool thePreselect)
+{
   if ( myIsPreselected == thePreselect )
     return;
   myIsPreselected = thePreselect;
@@ -1837,7 +1912,8 @@ int SMESH_ActorDef::RenderTranslucentGeometry(vtkViewport *vp)
 }
 
 
-void SMESH_ActorDef::Render(vtkRenderer *ren){
+void SMESH_ActorDef::Render(vtkRenderer *ren)
+{
   unsigned long aTime = myTimeStamp->GetMTime();
   unsigned long anObjTime = myVisualObj->GetUnstructuredGrid()->GetMTime();
   unsigned long aClippingTime = myImplicitBoolean->GetMTime();
@@ -1846,7 +1922,8 @@ void SMESH_ActorDef::Render(vtkRenderer *ren){
 }
 
 
-void SMESH_ActorDef::Update(){
+void SMESH_ActorDef::Update()
+{
   if(MYDEBUG) MESSAGE("SMESH_ActorDef::Update");
 
   if(GetControlMode() != eNone) {
@@ -1890,14 +1967,16 @@ void SMESH_ActorDef::Update(){
 }
 
 
-void SMESH_ActorDef::ReleaseGraphicsResources(vtkWindow *renWin){
+void SMESH_ActorDef::ReleaseGraphicsResources(vtkWindow *renWin)
+{
   SALOME_Actor::ReleaseGraphicsResources(renWin);
 
   myPickableActor->ReleaseGraphicsResources(renWin);
 }
 
 
-static void GetColor(vtkProperty *theProperty, double& r,double& g,double& b){
+static void GetColor(vtkProperty *theProperty, double& r,double& g,double& b)
+{
   double* aColor = theProperty->GetColor();
   r = aColor[0];
   g = aColor[1];
@@ -1905,7 +1984,8 @@ static void GetColor(vtkProperty *theProperty, double& r,double& g,double& b){
 }
 
 
-void SMESH_ActorDef::SetOpacity(double theValue){
+void SMESH_ActorDef::SetOpacity(double theValue)
+{
   mySurfaceProp->SetOpacity(theValue);
   myBackSurfaceProp->SetOpacity(theValue);
   myNormalVProp->SetOpacity(theValue);
@@ -1920,12 +2000,14 @@ void SMESH_ActorDef::SetOpacity(double theValue){
 }
 
 
-double SMESH_ActorDef::GetOpacity(){
+double SMESH_ActorDef::GetOpacity()
+{
   return mySurfaceProp->GetOpacity();
 }
 
 
-void SMESH_ActorDef::SetSufaceColor(double r,double g,double b, int delta){
+void SMESH_ActorDef::SetSufaceColor(double r,double g,double b, int delta)
+{
   mySurfaceProp->SetColor(r,g,b);
   my2DExtProp->SetColor(1.0-r,1.0-g,1.0-b);
   if( SMESH_GroupObj* aGroupObj = dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
@@ -1938,12 +2020,14 @@ void SMESH_ActorDef::SetSufaceColor(double r,double g,double b, int delta){
   Modified();
 }
 
-void SMESH_ActorDef::GetSufaceColor(double& r,double& g,double& b, int& delta){
+void SMESH_ActorDef::GetSufaceColor(double& r,double& g,double& b, int& delta)
+{
   ::GetColor(mySurfaceProp,r,g,b);
   delta = myDeltaBrightness;
 }
 
-void SMESH_ActorDef::SetVolumeColor(double r,double g,double b, int delta){
+void SMESH_ActorDef::SetVolumeColor(double r,double g,double b, int delta)
+{
   myNormalVProp->SetColor(r,g,b);
   my3DExtProp->SetColor(1.0-r,1.0-g,1.0-b);
   if( SMESH_GroupObj* aGroupObj = dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
@@ -1956,12 +2040,14 @@ void SMESH_ActorDef::SetVolumeColor(double r,double g,double b, int delta){
   Modified();
 }
 
-void SMESH_ActorDef::GetVolumeColor(double& r,double& g,double& b, int& delta){
+void SMESH_ActorDef::GetVolumeColor(double& r,double& g,double& b, int& delta)
+{
   ::GetColor(myNormalVProp,r,g,b);
   delta = myDeltaVBrightness;
 }
 
-void SMESH_ActorDef::SetEdgeColor(double r,double g,double b){
+void SMESH_ActorDef::SetEdgeColor(double r,double g,double b)
+{
   myEdgeProp->SetColor(r,g,b);
   my1DProp->SetColor(r,g,b);
   my1DExtProp->SetColor(1.0-r,1.0-g,1.0-b);
@@ -1971,21 +2057,25 @@ void SMESH_ActorDef::SetEdgeColor(double r,double g,double b){
   Modified();
 }
 
-void SMESH_ActorDef::GetEdgeColor(double& r,double& g,double& b){
+void SMESH_ActorDef::GetEdgeColor(double& r,double& g,double& b)
+{
   ::GetColor(myEdgeProp,r,g,b);
 }
 
-void SMESH_ActorDef::SetOutlineColor(double r,double g,double b){
+void SMESH_ActorDef::SetOutlineColor(double r,double g,double b)
+{
   myOutLineProp->SetColor(r,g,b);
   Modified();
 }
 
-void SMESH_ActorDef::GetOutlineColor(double& r,double& g,double& b){
+void SMESH_ActorDef::GetOutlineColor(double& r,double& g,double& b)
+{
   ::GetColor(myOutLineProp,r,g,b);
 }
 
 
-void SMESH_ActorDef::SetNodeColor(double r,double g,double b){ 
+void SMESH_ActorDef::SetNodeColor(double r,double g,double b)
+{ 
   myNodeProp->SetColor(r,g,b);
   myNodeExtProp->SetColor(1.0-r,1.0-g,1.0-b);
   if( SMESH_GroupObj* aGroupObj = dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
@@ -1994,11 +2084,13 @@ void SMESH_ActorDef::SetNodeColor(double r,double g,double b){
   Modified();
 }
 
-void SMESH_ActorDef::GetNodeColor(double& r,double& g,double& b){ 
+void SMESH_ActorDef::GetNodeColor(double& r,double& g,double& b)
+{ 
   ::GetColor(myNodeProp,r,g,b);
 }
 
-void SMESH_ActorDef::Set0DColor(double r,double g,double b){ 
+void SMESH_ActorDef::Set0DColor(double r,double g,double b)
+{ 
   my0DProp->SetColor(r,g,b);
   if( SMESH_GroupObj* aGroupObj = dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
     if( aGroupObj->GetElementType() == SMDSAbs_0DElement )
@@ -2006,11 +2098,13 @@ void SMESH_ActorDef::Set0DColor(double r,double g,double b){
   Modified();
 }
 
-void SMESH_ActorDef::Get0DColor(double& r,double& g,double& b){ 
+void SMESH_ActorDef::Get0DColor(double& r,double& g,double& b)
+{ 
   ::GetColor(my0DProp,r,g,b);
 }
 
-void SMESH_ActorDef::SetBallColor(double r,double g,double b){ 
+void SMESH_ActorDef::SetBallColor(double r,double g,double b)
+{ 
   myBallProp->SetColor(r,g,b);
   if( SMESH_GroupObj* aGroupObj = dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
     if( aGroupObj->GetElementType() == SMDSAbs_Ball )
@@ -2018,35 +2112,42 @@ void SMESH_ActorDef::SetBallColor(double r,double g,double b){
   Modified();
 }
 
-void SMESH_ActorDef::GetBallColor(double& r,double& g,double& b){ 
+void SMESH_ActorDef::GetBallColor(double& r,double& g,double& b)
+{ 
   ::GetColor(myBallProp,r,g,b);
 }
 
-void SMESH_ActorDef::SetHighlightColor(double r,double g,double b){ 
+void SMESH_ActorDef::SetHighlightColor(double r,double g,double b)
+{ 
   myHighlightProp->SetColor(r,g,b);
   Modified();
 }
 
-void SMESH_ActorDef::GetHighlightColor(double& r,double& g,double& b){ 
+void SMESH_ActorDef::GetHighlightColor(double& r,double& g,double& b)
+{ 
   ::GetColor(myHighlightProp,r,g,b);
 }
 
-void SMESH_ActorDef::SetPreHighlightColor(double r,double g,double b){ 
+void SMESH_ActorDef::SetPreHighlightColor(double r,double g,double b)
+{ 
   myPreselectProp->SetColor(r,g,b);
   Modified();
 }
 
-void SMESH_ActorDef::GetPreHighlightColor(double& r,double& g,double& b){ 
+void SMESH_ActorDef::GetPreHighlightColor(double& r,double& g,double& b)
+{ 
   ::GetColor(myPreselectProp,r,g,b);
 }
 
 
-double SMESH_ActorDef::GetLineWidth(){
+double SMESH_ActorDef::GetLineWidth()
+{
   return myEdgeProp->GetLineWidth();
 }
 
 
-void SMESH_ActorDef::SetLineWidth(double theVal){
+void SMESH_ActorDef::SetLineWidth(double theVal)
+{
   myEdgeProp->SetLineWidth(theVal);
 
   my1DProp->SetLineWidth(theVal + aLineWidthInc);
@@ -2070,7 +2171,8 @@ void SMESH_ActorDef::SetOutlineWidth(double theVal)
   Modified();
 }
 
-void SMESH_ActorDef::Set0DSize(double theVal){
+void SMESH_ActorDef::Set0DSize(double theVal)
+{
   my0DProp->SetPointSize(theVal);
   myHighlightProp->SetPointSize(theVal);
   myPreselectProp->SetPointSize(theVal);
@@ -2085,11 +2187,13 @@ void SMESH_ActorDef::Set0DSize(double theVal){
   Modified();
 }
 
-double SMESH_ActorDef::Get0DSize(){
+double SMESH_ActorDef::Get0DSize()
+{
   return my0DProp->GetPointSize();
 }
 
-void SMESH_ActorDef::SetBallSize(double theVal){
+void SMESH_ActorDef::SetBallSize(double theVal)
+{
   myBallProp->SetPointSize(theVal);
 
   if(SMESH_SVTKActor* aCustom = SMESH_SVTKActor::SafeDownCast( myHighlightActor )) {
@@ -2102,24 +2206,40 @@ void SMESH_ActorDef::SetBallSize(double theVal){
   Modified();
 }
 
-double SMESH_ActorDef::GetBallSize(){
+double SMESH_ActorDef::GetBallSize()
+{
   return myBallProp->GetPointSize();
 }
 
+double SMESH_ActorDef::GetBallScale()
+{
+  return myBallActor->GetBallScale();
+}
+
+void SMESH_ActorDef::SetBallScale( double theVal )
+{
+  myBallActor->SetBallScale( theVal );
+  if(SMESH_SVTKActor* aCustom = SMESH_SVTKActor::SafeDownCast( myHighlightActor )) {
+    aCustom->SetBallScale(theVal);
+  }
+  if(SMESH_SVTKActor* aCustom = SMESH_SVTKActor::SafeDownCast( myPreHighlightActor )) {
+    aCustom->SetBallScale(theVal);
+  }
+
+  Modified();
+}
+
 int SMESH_ActorDef::GetObjDimension( const int theObjId )
 {
   return myVisualObj->GetElemDimension( theObjId );
 }
 
-bool
-SMESH_ActorDef::
-IsImplicitFunctionUsed() const
+bool SMESH_ActorDef::IsImplicitFunctionUsed() const
 {
   return myBaseActor->IsImplicitFunctionUsed();
 }
 
-void
-SMESH_ActorDef::SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed)
+void SMESH_ActorDef::SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed)
 {
   myNodeActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
   myBaseActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
@@ -2141,8 +2261,7 @@ SMESH_ActorDef::SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed)
   my3DExtActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
 }
 
-vtkIdType
-SMESH_ActorDef::AddClippingPlane(vtkPlane* thePlane)
+vtkIdType SMESH_ActorDef::AddClippingPlane(vtkPlane* thePlane)
 {
   if(thePlane){
     myImplicitBoolean->GetFunction()->AddItem(thePlane);
@@ -2154,15 +2273,13 @@ SMESH_ActorDef::AddClippingPlane(vtkPlane* thePlane)
   return myCippingPlaneCont.size();
 }
 
-void
-SMESH_ActorDef::AddOpenGLClippingPlane(vtkPlane* thePlane)
+void SMESH_ActorDef::AddOpenGLClippingPlane(vtkPlane* thePlane)
 {
   if(thePlane)
     myPlaneCollection->AddItem( thePlane );
 }
 
-void
-SMESH_ActorDef::SetOpenGLClippingPlane()
+void SMESH_ActorDef::SetOpenGLClippingPlane()
 {
   // before use this method you must add clipping planes using method
   // SMESH_ActorDef::AddOpenGLClippingPlane(vtkPlane* thePlane)
@@ -2213,9 +2330,7 @@ SMESH_ActorDef::SetOpenGLClippingPlane()
     Modified();
 }
 
-void
-SMESH_ActorDef::
-RemoveAllClippingPlanes()
+void SMESH_ActorDef::RemoveAllClippingPlanes()
 {
   myPlaneCollection->RemoveAllItems();
   myImplicitBoolean->GetFunction()->RemoveAllItems();
@@ -2225,18 +2340,14 @@ RemoveAllClippingPlanes()
   myNodeActor->UpdateLabels();
 }
 
-vtkIdType
-SMESH_ActorDef::
-GetNumberOfClippingPlanes()
+vtkIdType SMESH_ActorDef::GetNumberOfClippingPlanes()
 {
   return myCippingPlaneCont.size();
 }
 
-vtkPlane*
-SMESH_ActorDef::
-GetClippingPlane(vtkIdType theID)
+vtkPlane* SMESH_ActorDef::GetClippingPlane(vtkIdType theID)
 {
-  if(theID >= myCippingPlaneCont.size())
+  if ( theID >= (vtkIdType)myCippingPlaneCont.size() )
     return NULL;
   return myCippingPlaneCont[theID].Get();
 }
@@ -2383,7 +2494,7 @@ void SMESH_ActorDef::UpdateDistribution()
     SMESH_VisualObjDef::TEntityList elems;
     if ( ! dynamic_cast<SMESH_MeshObj*>(myVisualObj.get()))
       dynamic_cast<SMESH_VisualObjDef*>(myVisualObj.get())->GetEntities( fun->GetType(), elems );
-    std::vector<int> elemIds;
+    std::vector<int> elemIds; elemIds.reserve( elems.size() );
     for ( SMESH_VisualObjDef::TEntityList::iterator e = elems.begin(); e != elems.end(); ++e)
       elemIds.push_back( (*e)->GetID());
     vtkLookupTable* lookupTable = static_cast<vtkLookupTable*>(myScalarBarActor->GetLookupTable());
@@ -2439,8 +2550,8 @@ void SMESH_ActorDef::SetMarkerTexture( int theMarkerId, VTK::MarkerTexture theMa
 }
 
 #ifndef DISABLE_PLOT2DVIEWER
-SPlot2d_Histogram* SMESH_ActorDef::UpdatePlot2Histogram() {
-
+SPlot2d_Histogram* SMESH_ActorDef::UpdatePlot2Histogram()
+{
   if(my2dHistogram)
     my2dHistogram->clearAllPoints();
 
@@ -2470,7 +2581,7 @@ SPlot2d_Histogram* SMESH_ActorDef::UpdatePlot2Histogram() {
     bool isLogarithmic = lookupTable->GetScale() == VTK_SCALE_LOG10;
     fun->GetHistogram(nbIntervals, nbEvents, funValues, elemIds, range, isLogarithmic);
 
-    for ( int i = 0; i < std::min( nbEvents.size(), funValues.size() -1 ); i++ )
+    for ( size_t i = 0; i < std::min( nbEvents.size(), funValues.size() -1 ); i++ )
       my2dHistogram->addPoint(funValues[i] + (funValues[i+1] - funValues[i])/2.0, static_cast<double>(nbEvents[i]));
 
     if(funValues.size() >= 2)