Salome HOME
PR: synchro V6_main tag mergeto_V7_main_11Feb13
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_VTKUtils.cxx
index 6562da87a3a4c19ba8d4e4c470f7e8823e009bef..229d7f809518fb67cbb493a59ff6cddc8be115f5 100644 (file)
@@ -34,6 +34,8 @@
 
 #include <SMESH_Actor.h>
 #include <SMESH_ActorUtils.h>
+#include "SMESH_NodeLabelActor.h"
+#include "SMESH_CellLabelActor.h"
 #include <SMESH_ObjectDef.h>
 #include <SMDS_Mesh.hxx>
 
@@ -614,7 +616,7 @@ namespace SMESH
           int deltaF, deltaV;
           SMESH::GetColor( "SMESH", "fill_color", c, deltaF, "0,170,255|-100"  );
           SMESH::GetColor( "SMESH", "volume_color", c, deltaV, "255,0,170|-100"  );
-          SMESH::GetColor( "SMESH", "default_grp_color", c );
+          c = SMESH::GetColor( "SMESH", "default_grp_color", c );
           SALOMEDS::Color aColor = aGroup->GetColor();
           if( !( aColor.R > 0 || aColor.G > 0 || aColor.B > 0 ))
           {
@@ -949,6 +951,81 @@ namespace SMESH
   }
 
 
+  void UpdateFontProp( SMESHGUI* theModule )
+  {
+    if ( !theModule ) return;
+
+    SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( theModule->application() );
+    if ( !app ) return;
+
+    SUIT_ResourceMgr* mgr = SMESH::GetResourceMgr( theModule );
+    if ( !mgr ) return;
+    //
+    vtkFloatingPointType anRGBNd[3] = {1,1,1};
+    SMESH::GetColor( "SMESH", "numbering_node_color", anRGBNd[0], anRGBNd[1], anRGBNd[2], QColor( 255, 255, 255 ) );
+    int aSizeNd = 10;
+    SMESH::LabelFont aFamilyNd = SMESH::FntTimes;
+    bool aBoldNd    = true;
+    bool anItalicNd = false;
+    bool aShadowNd  = false;
+
+    if ( mgr->hasValue( "SMESH", "numbering_node_font" ) ) {
+      QFont f = mgr->fontValue( "SMESH", "numbering_node_font" );
+      if ( f.family()      == "Arial" )   aFamilyNd = SMESH::FntArial;
+      else if ( f.family() == "Courier" ) aFamilyNd = SMESH::FntCourier;
+      else if ( f.family() == "Times" )   aFamilyNd = SMESH::FntTimes;
+      aBoldNd    = f.bold();
+      anItalicNd = f.italic();
+      aShadowNd  = f.overline();
+      aSizeNd    = f.pointSize();
+    }
+    //
+    vtkFloatingPointType anRGBEl[3] = {0,1,0};
+    SMESH::GetColor( "SMESH", "numbering_elem_color", anRGBEl[0], anRGBEl[1], anRGBEl[2], QColor( 0, 255, 0 ) );
+    int aSizeEl = 12;
+    SMESH::LabelFont aFamilyEl = SMESH::FntTimes;
+    bool aBoldEl    = true;
+    bool anItalicEl = false;
+    bool aShadowEl  = false;
+
+    if ( mgr->hasValue( "SMESH", "numbering_elem_font" ) ) {
+      QFont f = mgr->fontValue( "SMESH", "numbering_elem_font" );
+
+      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();
+      anItalicEl = f.italic();
+      aShadowEl  = f.overline();
+      aSizeEl    = f.pointSize();
+    }
+    //
+    ViewManagerList vmList;
+    app->viewManagers( SVTK_Viewer::Type(), vmList );
+    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 ); 
+       }
+      }
+    }
+  }
+
   //----------------------------------------------------------------------------
   SVTK_Selector*
   GetSelector(SUIT_ViewWindow *theWindow)