]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
Fix for bug PAL9160 ( No shading on visualizations ).
authormzn <mzn@opencascade.com>
Thu, 27 Oct 2005 11:59:06 +0000 (11:59 +0000)
committermzn <mzn@opencascade.com>
Thu, 27 Oct 2005 11:59:06 +0000 (11:59 +0000)
src/VISUGUI/VISU_msg_en.po
src/VISUGUI/VisuGUI.cxx
src/VISUGUI/VisuGUI.h
src/VISUGUI/VisuGUI_ActionsDef.h
src/VISUGUI/VisuGUI_PopupTools.cxx
src/VISUGUI/VisuGUI_PopupTools.h
src/VISUGUI/VisuGUI_Tools.cxx
src/VISUGUI/VisuGUI_Tools.h

index b1f9448062bcca1727553f9242931e021593a531..5598166fb9af2a00078e7a2e2beab6ef9056e4a7 100644 (file)
@@ -268,6 +268,12 @@ msgstr "Show Table"
 msgid "VisuGUI::MEN_SHRINK"
 msgstr "Shrink"
 
+msgid "VisuGUI::MEN_SHADING"
+msgstr "Shading On"
+
+msgid "VisuGUI::MEN_NOSHADING"
+msgstr "Shading Off"
+
 msgid "VisuGUI::MEN_STREAM_LINES"
 msgstr "Stream Lines"
 
index 94d4ad9acfec413e6c772d1db8a836eece960613..52de37fb81941da51bd7e2fadc2ec77caafe3c0c 100644 (file)
@@ -870,6 +870,20 @@ OnMakeShrink()
   ChangeRepresentation(this, VISU::SHRINK);
 }
 
+void
+VisuGUI::
+OnSetShadingOn()
+{
+  SetShading(this, true);
+}
+
+void
+VisuGUI::
+OnSetShadingOff()
+{
+  SetShading(this, false);
+}
+
 void
 VisuGUI::
 OnChangeColor()
@@ -2136,6 +2150,14 @@ createActions()
   createAction( VISU_UNSHRINK, tr("MEN_UNSHRINK"), QIconSet(),
                 tr("MEN_UNSHRINK"), "", 0, aParent, false,
                 this, SLOT(OnMakeShrink()));
+  
+  createAction( VISU_SHADING, tr("MEN_SHADING"), QIconSet(),
+                tr("MEN_SHADING"), "", 0, aParent, false,
+                this, SLOT(OnSetShadingOn()));
+  
+  createAction( VISU_NOSHADING, tr("MEN_NOSHADING"), QIconSet(),
+                tr("MEN_NOSHADING"), "", 0, aParent, false,
+                this, SLOT(OnSetShadingOff()));
 
   createAction( VISU_CELL_COLOR, tr("MEN_CELL_COLOR"), QIconSet(),
                 tr("MEN_CELL_COLOR"), "", 0, aParent, false,
@@ -2377,6 +2399,9 @@ createPopupMenus()
   mgr->insert( action( VISU_SURFACEFRAME ), parentId, -1, -1 ); // surfaceframe
   mgr->insert( action( VISU_SHRINK )      , parentId, -1, -1 ); // shrink
   mgr->insert( action( VISU_UNSHRINK )    , parentId, -1, -1 ); // unshrink
+  mgr->insert( separator(), parentId, -1, -1 );
+  mgr->insert( action( VISU_SHADING )     , parentId, -1, -1 ); // shading
+  mgr->insert( action( VISU_NOSHADING )   , parentId, -1, -1 ); // noshading
 
   // "Properties" submenu
   parentId = mgr->insert( tr( "MEN_PROPERTIES" ), -1, -1 );
@@ -2501,6 +2526,9 @@ createPopupMenus()
   mgr->setRule( action( VISU_SHRINK )  , aRule + aShrinkType + " and isShrunk=0", true );
   mgr->setRule( action( VISU_UNSHRINK ), aRule + aShrinkType + " and isShrunk=1", true );
 
+  mgr->setRule( action( VISU_SHADING )  , aRule + " and isScalarMapAct=1 and isShading=0", true );
+  mgr->setRule( action( VISU_NOSHADING ), aRule + " and isScalarMapAct=1 and isShading=1", true );
+
   // "Properties" submenu
   mgr->setRule( action( VISU_CELL_COLOR ), aRule + " and type='VISU::TMESH' and representation='VISU::SURFACEFRAME'", true );
   mgr->setRule( action( VISU_EDGE_COLOR ), aRule + " and type='VISU::TMESH' and representation='VISU::SURFACEFRAME'", true );
index b87466443ef4b66bf0240389099a7893ad9a13cb..5b64c53a4f1145d384b9d15e9ea2e32b8ca4b65f 100644 (file)
@@ -105,6 +105,9 @@ protected slots:
   void OnMakePoints();
   void OnMakeShrink();
 
+  void OnSetShadingOn();
+  void OnSetShadingOff();
+
   void OnChangeColor();
   void OnChangeWireframeColor();
   void OnChangeOpacity();
index 0a795733c1da8441bf53c0234c8af0c9e4735ff2..b3b99f36ccacc370beb20e0243e93efdf734d3c9 100644 (file)
@@ -55,6 +55,9 @@
 #define VISU_SHRINK                 4055
 #define VISU_UNSHRINK               4056
 
+#define VISU_SHADING                4083
+#define VISU_NOSHADING              4084
+
 #define VISU_CELL_COLOR             4057
 #define VISU_COLOR                  4058
 #define VISU_EDGE_COLOR             4059
index 3aceb478c683ac888b6624f2a368e40e34096ebb..73826c9682b25aa172326d9f8add8c8d906190b9 100644 (file)
@@ -29,6 +29,7 @@
 #include "VisuGUI_Tools.h"
 
 #include "VISU_Actor.h"
+#include "VISU_ScalarMapAct.h"
 
 using namespace VISU;
 
@@ -49,6 +50,8 @@ QtxValue VisuGUI_Selection::param( const int ind, const QString& p ) const
 //    else if ( p == "isVisible"      ) val = QtxValue( isVisible( ind ) );
     else if ( p == "isShrunk"       ) val = QtxValue( isShrunk( ind ) );
     else if ( p == "hasActor"       ) val = QtxValue( hasActor( ind ) );
+    else if ( p == "isShading"      ) val = QtxValue( isShading( ind ) );
+    else if ( p == "isScalarMapAct" ) val = QtxValue( isScalarMapAct( ind ) );
   }
 
   return val;
@@ -215,3 +218,29 @@ QString VisuGUI_Selection::hasActor( const int ind ) const
 {
   return representation( ind ).isEmpty() ? "0" : "1";
 }
+
+QString VisuGUI_Selection::isShading( const int ind ) const
+{
+  QString aResStr;
+  
+  if ( SVTK_ViewWindow* aView = GetViewWindow( myModule ) )
+    if ( VISU_Actor* anVISUActor = FindActor( aView, entry( ind ).latin1() ) )
+      if ( VISU_ScalarMapAct* anActor = dynamic_cast<VISU_ScalarMapAct*>(anVISUActor) )
+       aResStr = anActor->IsShading() ? "1" : "0";
+  
+  return aResStr;      
+}
+
+QString VisuGUI_Selection::isScalarMapAct( const int ind ) const
+{
+  QString aResStr;
+
+  if ( SVTK_ViewWindow* aView = GetViewWindow( myModule ) )
+    if ( VISU_Actor* anVISUActor = FindActor( aView, entry( ind ).latin1() ) )
+      {
+       VISU_ScalarMapAct* anActor = dynamic_cast<VISU_ScalarMapAct*>(anVISUActor);
+       aResStr = anActor ? "1" : "0";
+      }
+  
+  return aResStr;
+}
index f93d8810b3444d13d3683812724632a9d01127c1..537dfafb3780e8f4fe1396242c8da7b92bef2e48 100644 (file)
@@ -54,6 +54,8 @@ private:
   QString          isVisible( const int ) const;
   QString          isShrunk( const int ) const;
   QString          hasActor( const int ) const;
+  QString          isShading( const int ) const;
+  QString          isScalarMapAct( const int ) const;
 
 private:
   int              nbChild( const int, const bool ) const;
index 208b8a1a81bd440b3756c6528645ecd581d4b2b9..86f6b65463e33252bdbb91f231cd06691ab02e95 100644 (file)
@@ -36,6 +36,7 @@
 #include "VISU_ViewManager_i.hh"
 
 #include "VISU_Actor.h"
+#include "VISU_ScalarMapAct.h"
 
 #include "SalomeApp_Module.h"
 #include "SalomeApp_Study.h"
@@ -500,6 +501,36 @@ namespace VISU
       }
     }
   }
+  
+  void
+  SetShading ( const SalomeApp_Module* theModule,
+             bool theOn )
+  {
+    SUIT_ViewWindow* aView = GetActiveView(theModule, SVTK_Viewer::Type());
+    if (!aView) return;
+    SVTK_ViewWindow* vw  = dynamic_cast<SVTK_ViewWindow*>( aView );
+    if( !vw )
+      return;
+    
+    Handle(SALOME_InteractiveObject) anIO;
+    CORBA::Object_var anObject = GetSelectedObj(theModule, &anIO);
+    if (CORBA::is_nil(anObject)) return;
+
+    VISU::Base_var aVisuObj = VISU::Base::_narrow(anObject);
+    if (CORBA::is_nil(aVisuObj)) return;
+
+    PortableServer::ServantBase_var aServant = VISU::GetServant(anObject);
+    if (!aServant.in()) return;
+
+    VISU::Prs3d_i* aPrs3d = dynamic_cast<VISU::Prs3d_i*>(aServant.in());
+    if (aPrs3d) {
+      if (VISU_Actor* anActor = GetActor(aPrs3d, vw)) {
+       if ( VISU_ScalarMapAct* aScalarMapActor = dynamic_cast<VISU_ScalarMapAct*>(anActor) )
+         aScalarMapActor->SetShading( theOn );
+      }
+      vw->Repaint();
+    }
+  }
 
   //************************************************************
   // SObject type
index 3d6fd0e56892d317e97109da5c4988d6f513d459..f5fee0973b4c0921703119b20419f7cd383d8339 100644 (file)
@@ -110,6 +110,8 @@ namespace VISU {
   void ChangeRepresentation (const SalomeApp_Module* theModule,
                             VISU::PresentationType  theType);
 
+  void SetShading ( const SalomeApp_Module* theModule, bool theOn = true );
+
   // SObject type
   bool                                 CheckTimeStamp(const SalomeApp_Module* theModule,
                                                      _PTR(SObject)&          theSObject,