Salome HOME
Fix on - Bug PAL7334 DEVELOPMENT : Control Improvement - implementation of Display...
[modules/smesh.git] / src / OBJECT / SMESH_Actor.cxx
index c3a7abe32e474e4350dc61efa26d8350587b8e0a..0c57a09da43f4fc503ac10e6bfa01bfb4a4d7824 100644 (file)
@@ -439,6 +439,8 @@ SMESH_Actor::SMESH_Actor(){
   myPtsLabeledDataMapper->SetLabelTextProperty(aPtsTextProp);
   aPtsTextProp->Delete();
     
+  myEntityMode = eAllEntity;
+
   myIsPointsLabeled = false;
 
   myPointLabels = vtkActor2D::New();
@@ -1021,6 +1023,55 @@ void SMESH_Actor::SetVisibility(int theMode, bool theIsUpdateRepersentation){
 }
 
 
+namespace{
+
+  inline bool UpdateEntityMode(unsigned int& theOutputMode, 
+                              unsigned int theInputMode, 
+                              unsigned int theMode,
+                              int theCondition)
+  {
+    if(!theCondition)
+      theOutputMode &= ~theMode;
+
+    return theOutputMode & theMode && theCondition;
+  }
+
+}
+
+void SMESH_Actor::SetEntityMode(unsigned int theMode){
+  if(!myVisualObj->GetNbEntities(SMESH::EDGE))
+    theMode &= ~eEdges;
+
+  if(!myVisualObj->GetNbEntities(SMESH::FACE))
+    theMode &= ~eFaces;
+
+  if(!myVisualObj->GetNbEntities(SMESH::VOLUME))
+    theMode &= ~eVolumes;
+
+  if(!theMode)
+    return;
+
+  myScalarBarActor->VisibilityOff();
+
+  my1DExtActor->VisibilityOff();
+  my1DActor->VisibilityOff();
+  
+  my2DActor->VisibilityOff();
+  my3DActor->VisibilityOff();
+  
+  if(theMode & eEdges)
+    my1DActor->VisibilityOn();
+  
+  if(theMode & eFaces)
+    my2DActor->VisibilityOn();
+  
+  if(theMode & eVolumes)
+    my3DActor->VisibilityOn();
+  
+  myEntityMode = theMode;
+}
+
+
 void SMESH_Actor::SetRepresentation(int theMode){ 
   int aNbEdges = myVisualObj->GetNbEntities(SMESH::EDGE);
   int aNbFaces = myVisualObj->GetNbEntities(SMESH::FACE);