Salome HOME
Join modifications from branch OCC_debug_for_3_2_0b1
[modules/smesh.git] / src / OBJECT / SMESH_ActorDef.h
index 943fc5ee542ae5875c90f1f6d7bb3103f2b6b275..c23f977281e6e8600971dc7136046a2dd5799c95 100644 (file)
 #include "SMESH_Actor.h"
 #include "SMESH_Object.h"
 
+#include <vtkSmartPointer.h>
+
+template <class T>
+class TVTKSmartPtr: public vtkSmartPointer<T>
+{
+public:
+  TVTKSmartPtr() {}
+  TVTKSmartPtr(T* r, bool theIsOwner = false): vtkSmartPointer<T>(r) { 
+    if(r && theIsOwner) 
+      r->Delete();
+  }
+  TVTKSmartPtr& operator()(T* r, bool theIsOwner = false){ 
+    vtkSmartPointer<T>::operator=(r); 
+    if(r && theIsOwner) 
+      r->Delete();
+    return *this;
+  }
+  TVTKSmartPtr& operator=(T* r){ vtkSmartPointer<T>::operator=(r); return *this;}
+  T* Get() const { return this->GetPointer();}
+};
+
+
 class vtkProperty;
 class vtkShrinkFilter;
 class vtkPolyDataMapper;
@@ -57,7 +79,8 @@ class vtkTimeStamp;
 class SMESH_DeviceActor;
 
 
-class SMESH_ActorDef : public SMESH_Actor{
+class SMESH_ActorDef : public SMESH_Actor
+{
   friend class SMESH_VisualObj;
   friend class SMESH_Actor;
 
@@ -78,35 +101,35 @@ class SMESH_ActorDef : public SMESH_Actor{
 
   virtual bool IsInfinitive();  
 
-  virtual void SetOpacity(float theValue);
-  virtual float GetOpacity();
+  virtual void SetOpacity(vtkFloatingPointType theValue);
+  virtual vtkFloatingPointType GetOpacity();
 
-  virtual void SetSufaceColor(float r,float g,float b);
-  virtual void GetSufaceColor(float& r,float& g,float& b);
+  virtual void SetSufaceColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b);
+  virtual void GetSufaceColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b);
 
-  virtual void SetBackSufaceColor(float r,float g,float b);
-  virtual void GetBackSufaceColor(float& r,float& g,float& b);
+  virtual void SetBackSufaceColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b);
+  virtual void GetBackSufaceColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b);
 
-  virtual void SetEdgeColor(float r,float g,float b);
-  virtual void GetEdgeColor(float& r,float& g,float& b);
+  virtual void SetEdgeColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b);
+  virtual void GetEdgeColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b);
 
-  virtual void SetNodeColor(float r,float g,float b);
-  virtual void GetNodeColor(float& r,float& g,float& b);
+  virtual void SetNodeColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b);
+  virtual void GetNodeColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b);
 
-  virtual void SetHighlightColor(float r,float g,float b);
-  virtual void GetHighlightColor(float& r,float& g,float& b);
+  virtual void SetHighlightColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b);
+  virtual void GetHighlightColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b);
 
-  virtual void SetPreHighlightColor(float r,float g,float b);
-  virtual void GetPreHighlightColor(float& r,float& g,float& b);
+  virtual void SetPreHighlightColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b);
+  virtual void GetPreHighlightColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b);
  
-  virtual float GetLineWidth();
-  virtual void SetLineWidth(float theVal);
+  virtual vtkFloatingPointType GetLineWidth();
+  virtual void SetLineWidth(vtkFloatingPointType theVal);
 
-  virtual void SetNodeSize(float size) ;
-  virtual float GetNodeSize() ;
+  virtual void SetNodeSize(vtkFloatingPointType size) ;
+  virtual vtkFloatingPointType GetNodeSize() ;
 
   virtual int GetNodeObjId(int theVtkID);
-  virtual float* GetNodeCoord(int theObjID);
+  virtual vtkFloatingPointType* GetNodeCoord(int theObjID);
 
   virtual int GetElemObjId(int theVtkID);
   virtual vtkCell* GetElemCell(int theObjID);
@@ -124,15 +147,15 @@ class SMESH_ActorDef : public SMESH_Actor{
   virtual void SetPointRepresentation(bool theIsPointsVisible);
   virtual bool GetPointRepresentation();
 
-  virtual float* GetBounds();
-  virtual void SetTransform(SALOME_Transform* theTransform); 
+  virtual vtkFloatingPointType* GetBounds();
+  virtual void SetTransform(VTKViewer_Transform* theTransform); 
 
   virtual vtkUnstructuredGrid* GetUnstructuredGrid();
   virtual vtkDataSet* GetInput();
   virtual vtkMapper* GetMapper();
 
-  virtual float GetShrinkFactor();
-  virtual void SetShrinkFactor(float theValue);
+  virtual vtkFloatingPointType GetShrinkFactor();
+  virtual void SetShrinkFactor(vtkFloatingPointType theValue);
 
   virtual bool IsShrunkable() { return myIsShrinkable;}
   virtual bool IsShrunk() { return myIsShrunk;}
@@ -150,17 +173,26 @@ class SMESH_ActorDef : public SMESH_Actor{
 
   virtual vtkScalarBarActor* GetScalarBarActor(){ return myScalarBarActor;}
 
-  virtual void SetPlaneParam(float theDir[3], float theDist, vtkPlane* thePlane);
-  virtual void GetPlaneParam(float theDir[3], float& theDist, vtkPlane* thePlane);
+  virtual void SetPlaneParam(vtkFloatingPointType theDir[3], vtkFloatingPointType theDist, vtkPlane* thePlane);
+  virtual void GetPlaneParam(vtkFloatingPointType theDir[3], vtkFloatingPointType& theDist, vtkPlane* thePlane);
 
-  virtual vtkImplicitBoolean* GetPlaneContainer(); 
+  virtual void RemoveAllClippingPlanes();
+  virtual vtkIdType GetNumberOfClippingPlanes();
+  virtual vtkPlane* GetClippingPlane(vtkIdType theID);
+  virtual vtkIdType AddClippingPlane(vtkPlane* thePlane); 
 
   virtual TVisualObjPtr GetObject() { return myVisualObj;}
 
   virtual void SetControlsPrecision( const long p ) { myControlsPrecision = p; }
   virtual long GetControlsPrecision() const { return myControlsPrecision; }
 
+  virtual void UpdateScalarBar();
+  
  protected:
+  void SetControlMode(eControl theMode, bool theCheckEntityMode);
+  void SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed);
+  bool IsImplicitFunctionUsed() const;
+
   TVisualObjPtr myVisualObj;
   vtkTimeStamp* myTimeStamp;
 
@@ -179,7 +211,6 @@ class SMESH_ActorDef : public SMESH_Actor{
   vtkProperty* myHighlightProp;
   vtkProperty* myPreselectProp;
   SMESH_DeviceActor* myHighlitableActor;
-  SMESH_DeviceActor* myNodeHighlitableActor;
 
   eControl myControlMode;
   SMESH_DeviceActor* my2DActor;
@@ -192,6 +223,7 @@ class SMESH_ActorDef : public SMESH_Actor{
   SMESH_DeviceActor* my1DExtActor;
 
   unsigned int myEntityMode;
+  unsigned int myEntityState;
   bool myIsPointsVisible;
 
   bool myIsShrinkable;
@@ -213,7 +245,9 @@ class SMESH_ActorDef : public SMESH_Actor{
   vtkSelectVisiblePoints* myClsSelectVisiblePoints;
 
   vtkImplicitBoolean* myImplicitBoolean;
-
+  typedef TVTKSmartPtr<vtkPlane> TPlanePtr;
+  typedef std::vector<TPlanePtr> TCippingPlaneCont;
+  TCippingPlaneCont myCippingPlaneCont;
   long myControlsPrecision;
 
   SMESH_ActorDef();