]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
To fix a regression - segmentation does not work
authorapo <apo@opencascade.com>
Tue, 29 Nov 2005 13:00:28 +0000 (13:00 +0000)
committerapo <apo@opencascade.com>
Tue, 29 Nov 2005 13:00:28 +0000 (13:00 +0000)
src/PIPELINE/VISU_GaussPointsPL.cxx
src/PIPELINE/VISU_WidgetCtrl.cxx
src/PIPELINE/VISU_WidgetCtrl.hxx

index 28ab063ab9a7dd5b0f090320ce6febdb404c0f92..4df910a070ed142efd8a2a9de17c1565a6976cb5 100644 (file)
@@ -131,6 +131,7 @@ VISU_GaussPointsPL
   myExtractor->SetInput( GetInput2() );
   myFieldTransform->SetInput( myExtractor->GetOutput() );
 
+  myFieldTransform->Update();
   myCellDataToPointData->SetInput( myFieldTransform->GetUnstructuredGridOutput() );
 
   if( myIsDeformed )
index f8bed9bcec7be4c9b44844f71b1b804fead2baa9..3e94497b8c68d4844a493ad523d781f10df051b0 100644 (file)
@@ -32,6 +32,8 @@
 #include "VISU_PlanesWidget.hxx"
 #include "VISU_SphereWidget.hxx"
 //
+#include <algorithm>
+//
 #include <vtkObject.h>
 #include <vtkImplicitFunction.h>
 #include <vtkImplicitSum.h>
@@ -48,8 +50,6 @@ vtkStandardNewMacro(VISU_WidgetCtrl);
 // purpose :
 //==================================================================
 VISU_WidgetCtrl::VISU_WidgetCtrl() 
-: 
-  vtkObject()
 {
   myDummyWidget=NULL;
   myDisableAll=0;
@@ -148,6 +148,8 @@ void VISU_WidgetCtrl::SetEnabled(int theFlag)
       myWidgets[i]->SetEnabled(0);
     }
   }
+
+  Modified();
 }
 //==================================================================
 // function: ProcessEvents
@@ -195,6 +197,8 @@ void VISU_WidgetCtrl::SetActiveIndex(const int theIndex)
   if (theIndex>=0 && theIndex<myNbWidgets){
     myActiveIndex=theIndex;
   }
+
+  Modified();
 }
 //==================================================================
 // function: GetActiveIndex
@@ -285,6 +289,8 @@ void VISU_WidgetCtrl::SetInteractor(vtkRenderWindowInteractor* theRWI)
   for (int i=0; i<myNbWidgets; ++i) {
     myWidgets[i]->SetInteractor(theRWI);
   }
+
+  Modified();
 }
 //==================================================================
 // function: GetInteractor
@@ -303,6 +309,8 @@ void VISU_WidgetCtrl::SetPlaceFactor(float theFactor)
   for (int i=0; i<myNbWidgets; ++i) {
     myWidgets[i]->SetPlaceFactor(theFactor);
   }
+
+  Modified();
 }
 //==================================================================
 // function: GetPlaceFactor
@@ -330,5 +338,46 @@ vtkImplicitFunction* VISU_WidgetCtrl::ImplicitFunction()
     }
     myImplicitSum->SetFunctionWeight(pIF, aWeight);
   }
-  return myImplicitSum;
+  //return myImplicitSum;
+  return this;
+}
+
+//==================================================================
+float  
+VISU_WidgetCtrl
+::EvaluateFunction(float theX[3])
+{
+  if(VISU_ImplicitFunctionWidget* aWidget = GetActiveWidget()){
+    if(vtkImplicitFunction* aFunction = aWidget->ImplicitFunction())
+      return aFunction->EvaluateFunction(theX[0],theX[1],theX[2]);
+  }
+  return 1.0;
+}
+
+//==================================================================
+void   
+VISU_WidgetCtrl
+::EvaluateGradient(float theX[3], float theG[3])
+{
+  theG[0] = theG[1] = theG[2] = 0.0;
+  if(VISU_ImplicitFunctionWidget* aWidget = GetActiveWidget()){
+    if(vtkImplicitFunction* aFunction = aWidget->ImplicitFunction())
+      aFunction->EvaluateGradient(theX,theG);
+  }
+}
+
+//==================================================================
+unsigned long
+VISU_WidgetCtrl
+::GetMTime()
+{
+  unsigned long aTime = Superclass::GetMTime();
+
+  if(vtkImplicitFunction* aFunction = myPlanesWidget->ImplicitFunction())
+    aTime = std::max(aTime,aFunction->GetMTime());
+
+  if(vtkImplicitFunction* aFunction = mySphereWidget->ImplicitFunction())
+    aTime = std::max(aTime,aFunction->GetMTime());
+  
+  return aTime;
 }
index d682532482b4b7ac5c4672b5fdecf45f8f46ef7e..98a6a667e053643020a9c2ca17595766ca009b30 100644 (file)
@@ -30,7 +30,7 @@
 #define __VISU_WidgetCtrl_hxx
 
 
-#include <vtkObject.h>
+#include <vtkImplicitFunction.h>
 
 class vtkImplicitFunction;
 class vtkObject;
@@ -43,14 +43,26 @@ class VISU_PlanesWidget;
 class VISU_SphereWidget;
 class VISU_ImplicitFunctionWidget;
 
-class VISU_WidgetCtrl : public vtkObject
+class VISU_WidgetCtrl : public vtkImplicitFunction
 {
 public:
   static VISU_WidgetCtrl *New();
   vtkTypeRevisionMacro(VISU_WidgetCtrl,vtkObject);
 
   vtkImplicitFunction* ImplicitFunction();
-  //
+
+  virtual
+  float        
+  EvaluateFunction(float theX[3]);
+
+  virtual
+  void         
+  EvaluateGradient(float theX[3], float theG[3]);
+
+  virtual
+  unsigned long
+  GetMTime();
+
   void PlaceWidget(float theBounds[6]);
   void SetEnabled(int theFlag);
   int  GetEnabled();