Salome HOME
22877: EDF 10054 SMESH: Add a new filter "BelongToSmeshGroup" for Create Group
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_VTKUtils.cxx
index 1bd966e379715c7a5661d8c764816e1c6d76be0b..bcc289cc0763792680d075b5819b539c9d7af37d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015  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 "SMESHGUI_VTKUtils.h"
 
 #include "SMESHGUI.h"
-#include "SMESHGUI_Utils.h"
 #include "SMESHGUI_Filter.h"
+#include "SMESHGUI_Utils.h"
+#include "SMDS_Mesh.hxx"
+#include "SMESH_Actor.h"
+#include "SMESH_ActorUtils.h"
+#include "SMESH_CellLabelActor.h"
 #include "SMESH_ControlsDef.hxx"
-
-#include <SMESH_Actor.h>
-#include <SMESH_ActorUtils.h>
 #include "SMESH_NodeLabelActor.h"
-#include "SMESH_CellLabelActor.h"
-#include <SMESH_ObjectDef.h>
-#include <SMDS_Mesh.hxx>
+#include "SMESH_ObjectDef.h"
 
 // SALOME GUI includes
 #include <SUIT_Desktop.h>
@@ -47,7 +46,6 @@
 #include <SUIT_ResourceMgr.h>
 
 #include <SALOME_ListIO.hxx>
-#include <SALOME_ListIteratorOfListIO.hxx>
 
 #include <SVTK_Selector.h>
 #include <SVTK_ViewModel.h>
@@ -991,7 +989,7 @@ namespace SMESH
     if ( mgr->hasValue( "SMESH", "numbering_elem_font" ) ) {
       QFont f = mgr->fontValue( "SMESH", "numbering_elem_font" );
 
-      if ( f.family()      == "Arial" )          aFamilyEl = SMESH::FntArial;
+      if ( f.family()      == "Arial" )   aFamilyEl = SMESH::FntArial;
       else if ( f.family() == "Courier" ) aFamilyEl = SMESH::FntCourier;
       else if ( f.family() == "Times" )   aFamilyEl = SMESH::FntTimes;    
       aBoldEl    = f.bold();
@@ -1005,23 +1003,23 @@ namespace SMESH
     foreach ( SUIT_ViewManager* vm, vmList ) {
       QVector<SUIT_ViewWindow*> views = vm->getViews();
       foreach ( SUIT_ViewWindow* vw, views ) {
-       // update VTK viewer properties
-       if ( SVTK_ViewWindow* aVtkView = GetVtkViewWindow( vw ) ) {
-         // update actors
-         vtkRenderer* aRenderer = aVtkView->getRenderer();
-         VTK::ActorCollectionCopy aCopy( aRenderer->GetActors() );
-         vtkActorCollection* aCollection = aCopy.GetActors();
-         aCollection->InitTraversal();
-         while ( vtkActor* anAct = aCollection->GetNextActor() ) {
-           if ( SMESH_NodeLabelActor* anActor = dynamic_cast< SMESH_NodeLabelActor* >( anAct ) ) {
-             anActor->SetFontProperties( aFamilyNd, aSizeNd, aBoldNd, anItalicNd, aShadowNd, anRGBNd[0], anRGBNd[1], anRGBNd[2] );
-           }
-           else if ( SMESH_CellLabelActor* anActor = dynamic_cast< SMESH_CellLabelActor* >( anAct ) ) {
-             anActor->SetFontProperties( aFamilyEl, aSizeEl, aBoldEl, anItalicEl, aShadowEl, anRGBEl[0], anRGBEl[1], anRGBEl[2] );
-           }
-         }
-         aVtkView->Repaint( false ); 
-       }
+        // update VTK viewer properties
+        if ( SVTK_ViewWindow* aVtkView = GetVtkViewWindow( vw ) ) {
+          // update actors
+          vtkRenderer* aRenderer = aVtkView->getRenderer();
+          VTK::ActorCollectionCopy aCopy( aRenderer->GetActors() );
+          vtkActorCollection* aCollection = aCopy.GetActors();
+          aCollection->InitTraversal();
+          while ( vtkActor* anAct = aCollection->GetNextActor() ) {
+            if ( SMESH_NodeLabelActor* anActor = dynamic_cast< SMESH_NodeLabelActor* >( anAct ) ) {
+              anActor->SetFontProperties( aFamilyNd, aSizeNd, aBoldNd, anItalicNd, aShadowNd, anRGBNd[0], anRGBNd[1], anRGBNd[2] );
+            }
+            else if ( SMESH_CellLabelActor* anActor = dynamic_cast< SMESH_CellLabelActor* >( anAct ) ) {
+              anActor->SetFontProperties( aFamilyEl, aSizeEl, aBoldEl, anItalicEl, aShadowEl, anRGBEl[0], anRGBEl[1], anRGBEl[2] );
+            }
+          }
+          aVtkView->Repaint( false ); 
+        }
       }
     }
   }
@@ -1396,6 +1394,20 @@ namespace SMESH
                                        double theDist,
                                        double theBounds[6],
                                        double theOrigin[3] )
+  {
+    bool anIsOk = false;
+    anIsOk = ComputeBounds( theActorList, theBounds );
+
+
+    if( !anIsOk )
+      return false;
+
+    DistanceToPosition( theBounds, theNormal, theDist, theOrigin );
+    return true;
+  }
+
+  bool ComputeBounds( std::list<vtkActor*> theActorList,
+                      double theBounds[6])
   {
     bool anIsOk = false;
     theBounds[0] = theBounds[2] = theBounds[4] = VTK_DOUBLE_MAX;
@@ -1416,12 +1428,7 @@ namespace SMESH
         }
       }
     }
-
-    if( !anIsOk )
-      return false;
-    
-    DistanceToPosition( theBounds, theNormal, theDist, theOrigin );
-    return true;
+    return anIsOk;
   }
 
 #ifndef DISABLE_PLOT2DVIEWER