Salome HOME
Fix for Bug IPAL8945
[modules/visu.git] / src / PIPELINE / VISU_StreamLinesPL.hxx
index ab56a0411544bb7cf293cfaf3280495e101ae5c2..b360f97444bfc3de9ab9de57caa2f3ba1e8962b1 100644 (file)
 #include "VISU_DeformedShapePL.hxx"
 #include <vtkStreamLine.h>
 
+using namespace std;
+
 class vtkPointSet;
-class SALOME_GeometryFilter;
+class vtkCellCenters;
+class VTKViewer_GeometryFilter;
+class VISU_UsedPointsFilter;
 
 class VISU_StreamLinesPL : public VISU_DeformedShapePL{
 protected:
@@ -43,27 +47,32 @@ public:
   virtual ~VISU_StreamLinesPL();
   virtual void ShallowCopy(VISU_PipeLine *thePipeLine);
 
-  virtual int GetDirection();
-  virtual void SetDirection(int theDirection);
-
+  virtual int SetParams(float theIntStep, 
+                       float thePropogationTime,
+                       float theStepLength,
+                       vtkPointSet* theSource = NULL, 
+                       float thePercents = 0.3,
+                       int theDirection = VTK_INTEGRATE_BOTH_DIRECTIONS,
+                       int isOnlyTry = false);
+  virtual vtkPointSet* GetSource();
+  virtual float GetUsedPoints();
+  virtual float GetIntegrationStep();
+  virtual float GetPropagationTime();
   virtual float GetStepLength();
-  virtual float SetStepLength(float theStep);
+  virtual int GetDirection();
 
-  virtual float GetPropagationTime();
-  virtual void SetPropagationTime(float theTime);
+  virtual vtkDataSet* GetStreamerSource();
+  virtual float GetVelocityCoeff();
 
-  virtual float GetIntegrationStep();
-  virtual float SetIntegrationStep(float theStep);
+  virtual float GetMaxIntegrationStep();
+  virtual float GetMinIntegrationStep();
 
-  virtual void SetSource(vtkPointSet* theSource);
-  virtual vtkPointSet* GetSource() {return mySource;}
+  virtual float GetMinStepLength();
+  virtual float GetMaxStepLength();
 
-  virtual void SetUsedPoints(float thePercents) { myPercents = thePercents;}
-  virtual float GetUsedPoints() { return myPercents;}
-
-  virtual float GetMaxIntegrationStep(){ return GetMaxIntegrationStep(GetSource());}
-  virtual float GetMinIntegrationStep(){ return GetMinIntegrationStep(GetSource());}
-  virtual float GetBasePropagationTime(){ return GetBasePropagationTime(GetSource());};
+  virtual float GetMinPropagationTime();
+  virtual float GetMaxPropagationTime();
+  virtual float GetBasePropagationTime();
 
 public:
   virtual THook* DoHook();
@@ -72,22 +81,40 @@ public:
   virtual void SetMapScale(float theMapScale = 1.0);
 
 public:
-  static int myMaxIncrementMemorySize;
-
-  static float GetMinStepLength(float theIntegrationStep);
-  static float GetMaxStepLength(float thePropagationTime);
-  static float CorrectStepLength(float theStep, float theIntegrationStep, float thePropagationTime);
-
   static float GetMaxIntegrationStep(vtkPointSet* theDataSet);
-  static float GetMinIntegrationStep(vtkPointSet* theDataSet);
+  static float GetMinIntegrationStep(vtkPointSet* theDataSet, float thePercents = 0.3);
+  static float GetBaseIntegrationStep(vtkPointSet* theDataSet, float thePercents = 0.3);
+  
+  static float GetMinPropagationTime(vtkPointSet* theDataSet);
+  static float GetMaxPropagationTime(vtkPointSet* theDataSet);
   static float GetBasePropagationTime(vtkPointSet* theDataSet);
 
+  static float GetMinStepLength(vtkPointSet* theDataSet);
+  static float GetMaxStepLength(vtkPointSet* theDataSet);
+  static float GetBaseStepLength(vtkPointSet* theDataSet);
+
+  static float GetVelocityCoeff(vtkPointSet* theDataSet);
+
+  static int IsPossible(vtkPointSet* theDataSet, float thePercents = 0.3);
+
 protected:
+  static float GetNecasseryMemorySize(vtkIdType theNbOfPoints, float theStepLength, 
+                                     float thePropogationTime, float thePercents = 0.3);
+  static int FindPossibleParams(vtkPointSet* theDataSet, float& theStepLength, 
+                               float& thePropogationTime, float& thePercents);
+  
+  static float CorrectIntegrationStep(float theStep, vtkPointSet* theDataSet, float thePercents = 0.3);
+  static float CorrectPropagationTime(float thePropagationTime, vtkPointSet* theDataSet);
+  static float CorrectStepLength(float theStep, vtkPointSet* theDataSet);
+
   vtkStreamLine* myStream;
   vtkPointSet* mySource;
-  SALOME_GeometryFilter *myGeomFilter;
+  vtkCellCenters* myCenters;
+  VTKViewer_GeometryFilter *myGeomFilter;
+  VISU_UsedPointsFilter *myPointsFilter;
   float myPercents;
 };
 
 
 #endif