X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FOBJECT%2FSMESH_Actor.cxx;h=1d83c6501d12beba09fdf80dfca7d83df53dd6de;hp=667a80b6ef86c709448e1f785d67f6434c8f510b;hb=1809a8e762de0f37fee9bb2c43bdc7de34e558fa;hpb=9a358116f4ee87b52d3d86752c4fb6b3f814a69f diff --git a/src/OBJECT/SMESH_Actor.cxx b/src/OBJECT/SMESH_Actor.cxx index 667a80b6e..1d83c6501 100644 --- a/src/OBJECT/SMESH_Actor.cxx +++ b/src/OBJECT/SMESH_Actor.cxx @@ -99,6 +99,8 @@ SMESH_Actor* SMESH_Actor::New(TVisualObjPtr theVisualObj, anActor->Delete(); anActor = NULL; } + if( anActor ) + anActor->UpdateScalarBar(); return anActor; } @@ -114,7 +116,10 @@ SMESH_ActorDef::SMESH_ActorDef() myIsShrinkable = false; myIsShrunk = false; - myControlsPrecision = (long)SMESH::GetFloat( "SMESH:controls_precision", -1 ); + myControlsPrecision = -1; + SUIT_ResourceMgr* mgr = SUIT_Session::session()->resourceMgr(); + if ( mgr && mgr->booleanValue( "SMESH", "use_precision", false ) ) + myControlsPrecision = (long)SMESH::GetFloat( "SMESH", "controls_precision", -1 ); float aPointSize = SMESH::GetFloat("SMESH:node_size",3); float aLineWidth = SMESH::GetFloat("SMESH:element_width",1); @@ -257,7 +262,7 @@ SMESH_ActorDef::SMESH_ActorDef() myHighlitableActor->PickableOff(); myHighlitableActor->SetRepresentation(SMESH_DeviceActor::eWireframe); - SetShrinkFactor( SMESH::GetFloat( "SMESH", "shrink_coeff", 0.75 ) ); + SetShrinkFactor( SMESH::GetFloat( "SMESH:shrink_coeff", 0.75 ) ); myName = ""; myIO = NULL; @@ -276,115 +281,10 @@ SMESH_ActorDef::SMESH_ActorDef() myScalarBarActor->SetVisibility(false); myScalarBarActor->SetLookupTable(myLookupTable); - vtkTextProperty* aScalarBarTitleProp = vtkTextProperty::New(); - - SUIT_ResourceMgr* mgr = SUIT_Session::session()->resourceMgr(); + mgr = SUIT_Session::session()->resourceMgr(); if( !mgr ) return; - QColor aTColor = mgr->colorValue( "SMESH", "ScalarBarTitleColor", QColor( 255, 255, 255 ) ); - aScalarBarTitleProp->SetColor( aTColor.red()/255., aTColor.green()/255., aTColor.blue()/255. ); - - aScalarBarTitleProp->SetFontFamilyToArial(); - - if ( mgr->hasValue( "SMESH", "ScalarBarTitleFont" ) ) - { - QString str = mgr->stringValue( "SMESH", "ScalarBarTitleFont" ); - if ( str == "Arial" ) - aScalarBarTitleProp->SetFontFamilyToArial(); - else if ( str == "Courier" ) - aScalarBarTitleProp->SetFontFamilyToCourier(); - else if ( str == "Times" ) - aScalarBarTitleProp->SetFontFamilyToTimes(); - } - - if ( mgr->booleanValue( "SMESH", "ScalarBarTitleBold" ) ) - aScalarBarTitleProp->BoldOn(); - else - aScalarBarTitleProp->BoldOff(); - - if ( mgr->booleanValue( "SMESH", "ScalarBarTitleItalic" ) ) - aScalarBarTitleProp->ItalicOn(); - else - aScalarBarTitleProp->ItalicOff(); - - if ( mgr->booleanValue( "SMESH", "ScalarBarTitleShadow" ) ) - aScalarBarTitleProp->ShadowOn(); - else - aScalarBarTitleProp->ShadowOff(); - - myScalarBarActor->SetTitleTextProperty( aScalarBarTitleProp ); - aScalarBarTitleProp->Delete(); - - vtkTextProperty* aScalarBarLabelProp = vtkTextProperty::New(); - - aTColor = mgr->colorValue( "SMESH", "ScalarBarLabelColor", QColor( 255, 255, 255 ) ); - aScalarBarLabelProp->SetColor( aTColor.red()/255., aTColor.green()/255., aTColor.blue()/255. ); - - aScalarBarLabelProp->SetFontFamilyToArial(); - if( mgr->hasValue( "SMESH", "ScalarBarLabelFont" ) ) - { - QString str = mgr->stringValue( "SMESH", "ScalarBarLabelFont" ); - if( str == "Arial" ) - aScalarBarLabelProp->SetFontFamilyToArial(); - else if( str == "Courier" ) - aScalarBarLabelProp->SetFontFamilyToCourier(); - else if( str == "Times" ) - aScalarBarLabelProp->SetFontFamilyToTimes(); - } - - if ( mgr->booleanValue( "SMESH", "ScalarBarLabelBold" ) ) - aScalarBarLabelProp->BoldOn(); - else - aScalarBarLabelProp->BoldOff(); - - if ( mgr->booleanValue( "SMESH", "ScalarBarLabelItalic" ) ) - aScalarBarLabelProp->ItalicOn(); - else - aScalarBarLabelProp->ItalicOff(); - - if( mgr->booleanValue( "SMESH", "ScalarBarLabelShadow" ) ) - aScalarBarLabelProp->ShadowOn(); - else - aScalarBarLabelProp->ShadowOff(); - - myScalarBarActor->SetLabelTextProperty( aScalarBarLabelProp ); - aScalarBarLabelProp->Delete(); - - if( mgr->stringValue( "SMESH", "ScalarBarOrientation" ) == "Horizontal" ) - myScalarBarActor->SetOrientationToHorizontal(); - else - myScalarBarActor->SetOrientationToVertical(); - - float aXVal = mgr->stringValue( "SMESH", "ScalarBarOrientation" ) == "Horizontal" ? 0.20 : 0.01; - if( mgr->hasValue( "SMESH", "ScalarBarXPosition" ) ) - aXVal = mgr->doubleValue( "SMESH", "ScalarBarXPosition", aXVal ); - float aYVal = mgr->stringValue( "SMESH", "ScalarBarOrientation" ) == "Horizontal" ? 0.01 : 0.1; - if( mgr->hasValue( "SMESH", "ScalarBarYPosition" ) ) - aYVal = mgr->doubleValue( "SMESH", "ScalarBarYPosition", aYVal ); - myScalarBarActor->SetPosition( aXVal, aYVal ); - - float aWVal = mgr->stringValue( "SMESH", "ScalarBarOrientation" ) == "Horizontal" ? 0.60 : 0.10; - if( mgr->hasValue( "SMESH", "ScalarBarWidth" ) ) - aWVal = mgr->doubleValue( "SMESH", "ScalarBarWidth", aWVal ); - myScalarBarActor->SetWidth( aWVal ); - - float aHVal = mgr->stringValue( "SMESH", "ScalarBarOrientation" ) == "Horizontal" ? 0.12 : 0.80; - if( mgr->hasValue( "SMESH", "ScalarBarHeight" ) ) - aHVal = mgr->doubleValue( "SMESH", "ScalarBarHeight", aHVal ); - myScalarBarActor->SetHeight( aHVal ); - - int anIntVal = 5; - if( mgr->hasValue( "SMESH", "ScalarBarNbOfLabels" ) ) - anIntVal = mgr->integerValue( "SMESH", "ScalarBarNbOfLabels", anIntVal ); - myScalarBarActor->SetNumberOfLabels( anIntVal == 0 ? 5: anIntVal ); - - anIntVal = 64; - if( mgr->hasValue( "SMESH", "ScalarBarNbOfColors" ) ) - anIntVal = mgr->integerValue( "SMESH", "ScalarBarNbOfColors", anIntVal ); - myScalarBarActor->SetMaximumNumberOfColors( anIntVal == 0 ? 64 : anIntVal ); - - //Definition of points numbering pipeline //--------------------------------------- myPointsNumDataSet = vtkUnstructuredGrid::New(); @@ -846,19 +746,18 @@ bool SMESH_ActorDef::Init(TVisualObjPtr theVisualObj, if( !mgr ) return false; - QString aMode = mgr->stringValue( "DisplayMode", "SMESH" ); + int aMode = mgr->integerValue( "SMESH", "display_mode" ); SetRepresentation(-1); - if(aMode.compare("Wireframe") == 0){ + if(aMode == 0){ SetRepresentation(eEdge); - }else if(aMode.compare("Shading") == 0){ + }else if(aMode == 1){ SetRepresentation(eSurface); - }else if(aMode.compare("Nodes") == 0){ + }else if(aMode == 2){ SetRepresentation(ePoint); } - aMode = mgr->stringValue( "Shrink", "SMESH" ); - if(aMode == "yes"){ + if(aMode == 3){ SetShrink(); } @@ -1602,3 +1501,119 @@ void SMESH_ActorDef::GetPlaneParam(float theDir[3], float& theDist, vtkPlane* th thePlane->GetOrigin(anOrigin); ::PositionToDistance(GetUnstructuredGrid(),theDir,anOrigin,theDist); } + +void SMESH_ActorDef::UpdateScalarBar() +{ + SUIT_ResourceMgr* mgr = SUIT_Session::session()->resourceMgr(); + if( !mgr ) + return; + + vtkTextProperty* aScalarBarTitleProp = vtkTextProperty::New(); + + QColor aTColor = mgr->colorValue( "SMESH", "scalar_bar_title_color", QColor( 255, 255, 255 ) ); + aScalarBarTitleProp->SetColor( aTColor.red()/255., aTColor.green()/255., aTColor.blue()/255. ); + + aScalarBarTitleProp->SetFontFamilyToArial(); + + if ( mgr->hasValue( "SMESH", "scalar_bar_title_font" ) ) + { + QFont f = mgr->fontValue( "SMESH", "scalar_bar_title_font" ); + if ( f.family() == "Arial" ) + aScalarBarTitleProp->SetFontFamilyToArial(); + else if ( f.family() == "Courier" ) + aScalarBarTitleProp->SetFontFamilyToCourier(); + else if ( f.family() == "Times" ) + aScalarBarTitleProp->SetFontFamilyToTimes(); + + if ( f.bold() ) + aScalarBarTitleProp->BoldOn(); + else + aScalarBarTitleProp->BoldOff(); + + if ( f.italic() ) + aScalarBarTitleProp->ItalicOn(); + else + aScalarBarTitleProp->ItalicOff(); + + if ( f.underline() ) + aScalarBarTitleProp->ShadowOn(); + else + aScalarBarTitleProp->ShadowOff(); + } + + myScalarBarActor->SetTitleTextProperty( aScalarBarTitleProp ); + aScalarBarTitleProp->Delete(); + + vtkTextProperty* aScalarBarLabelProp = vtkTextProperty::New(); + + aTColor = mgr->colorValue( "SMESH", "scalar_bar_label_color", QColor( 255, 255, 255 ) ); + aScalarBarLabelProp->SetColor( aTColor.red()/255., aTColor.green()/255., aTColor.blue()/255. ); + + aScalarBarLabelProp->SetFontFamilyToArial(); + if( mgr->hasValue( "SMESH", "scalar_bar_label_font" ) ) + { + QFont f = mgr->stringValue( "SMESH", "scalar_bar_label_font" ); + if( f.family() == "Arial" ) + aScalarBarLabelProp->SetFontFamilyToArial(); + else if( f.family() == "Courier" ) + aScalarBarLabelProp->SetFontFamilyToCourier(); + else if( f.family() == "Times" ) + aScalarBarLabelProp->SetFontFamilyToTimes(); + + if ( f.bold() ) + aScalarBarLabelProp->BoldOn(); + else + aScalarBarLabelProp->BoldOff(); + + if ( f.italic() ) + aScalarBarLabelProp->ItalicOn(); + else + aScalarBarLabelProp->ItalicOff(); + + if( f.underline() ) + aScalarBarLabelProp->ShadowOn(); + else + aScalarBarLabelProp->ShadowOff(); + } + + myScalarBarActor->SetLabelTextProperty( aScalarBarLabelProp ); + aScalarBarLabelProp->Delete(); + + bool horiz = ( mgr->integerValue( "SMESH", "scalar_bar_orientation" ) == 1 ); + QString name = QString( "scalar_bar_%1_" ).arg( horiz ? "horizontal" : "vertical" ); + if( horiz ) + myScalarBarActor->SetOrientationToHorizontal(); + else + myScalarBarActor->SetOrientationToVertical(); + + + float aXVal = horiz ? 0.20 : 0.01; + if( mgr->hasValue( "SMESH", name + "x" ) ) + aXVal = mgr->doubleValue( "SMESH", name + "x", aXVal ); + + float aYVal = horiz ? 0.01 : 0.1; + if( mgr->hasValue( "SMESH", name + "y" ) ) + aYVal = mgr->doubleValue( "SMESH", name + "y", aYVal ); + myScalarBarActor->SetPosition( aXVal, aYVal ); + + float aWVal = horiz ? 0.60 : 0.10; + if( mgr->hasValue( "SMESH", name + "width" ) ) + aWVal = mgr->doubleValue( "SMESH", name + "width", aWVal ); + myScalarBarActor->SetWidth( aWVal ); + + float aHVal = horiz ? 0.12 : 0.80; + if( mgr->hasValue( "SMESH", name + "height" ) ) + aHVal = mgr->doubleValue( "SMESH", name + "height", aHVal ); + myScalarBarActor->SetHeight( aHVal ); + + int anIntVal = 5; + if( mgr->hasValue( "SMESH", "scalar_bar_num_labels" ) ) + anIntVal = mgr->integerValue( "SMESH", "scalar_bar_num_labels", anIntVal ); + myScalarBarActor->SetNumberOfLabels( anIntVal == 0 ? 5: anIntVal ); + + anIntVal = 64; + if( mgr->hasValue( "SMESH", "scalar_bar_num_colors" ) ) + anIntVal = mgr->integerValue( "SMESH", "scalar_bar_num_colors", anIntVal ); + myScalarBarActor->SetMaximumNumberOfColors( anIntVal == 0 ? 64 : anIntVal ); + +}