Salome HOME
IPAL9150
[modules/smesh.git] / src / OBJECT / SMESH_ActorDef.h
index 943fc5ee542ae5875c90f1f6d7bb3103f2b6b275..1928f65185d363a497f36e8f32a1aa30ac85531e 100644 (file)
 #include "SMESH_Actor.h"
 #include "SMESH_Object.h"
 
 #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;
 class vtkProperty;
 class vtkShrinkFilter;
 class vtkPolyDataMapper;
@@ -125,7 +147,7 @@ class SMESH_ActorDef : public SMESH_Actor{
   virtual bool GetPointRepresentation();
 
   virtual float* GetBounds();
   virtual bool GetPointRepresentation();
 
   virtual float* GetBounds();
-  virtual void SetTransform(SALOME_Transform* theTransform); 
+  virtual void SetTransform(VTKViewer_Transform* theTransform); 
 
   virtual vtkUnstructuredGrid* GetUnstructuredGrid();
   virtual vtkDataSet* GetInput();
 
   virtual vtkUnstructuredGrid* GetUnstructuredGrid();
   virtual vtkDataSet* GetInput();
@@ -153,7 +175,10 @@ class SMESH_ActorDef : public SMESH_Actor{
   virtual void SetPlaneParam(float theDir[3], float theDist, vtkPlane* thePlane);
   virtual void GetPlaneParam(float theDir[3], float& theDist, vtkPlane* thePlane);
 
   virtual void SetPlaneParam(float theDir[3], float theDist, vtkPlane* thePlane);
   virtual void GetPlaneParam(float theDir[3], float& 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 TVisualObjPtr GetObject() { return myVisualObj;}
 
@@ -161,6 +186,10 @@ class SMESH_ActorDef : public SMESH_Actor{
   virtual long GetControlsPrecision() const { return myControlsPrecision; }
 
  protected:
   virtual long GetControlsPrecision() const { return myControlsPrecision; }
 
  protected:
+  void SetControlMode(eControl theMode, bool theCheckEntityMode);
+  void SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed);
+  bool IsImplicitFunctionUsed() const;
+
   TVisualObjPtr myVisualObj;
   vtkTimeStamp* myTimeStamp;
 
   TVisualObjPtr myVisualObj;
   vtkTimeStamp* myTimeStamp;
 
@@ -179,7 +208,6 @@ class SMESH_ActorDef : public SMESH_Actor{
   vtkProperty* myHighlightProp;
   vtkProperty* myPreselectProp;
   SMESH_DeviceActor* myHighlitableActor;
   vtkProperty* myHighlightProp;
   vtkProperty* myPreselectProp;
   SMESH_DeviceActor* myHighlitableActor;
-  SMESH_DeviceActor* myNodeHighlitableActor;
 
   eControl myControlMode;
   SMESH_DeviceActor* my2DActor;
 
   eControl myControlMode;
   SMESH_DeviceActor* my2DActor;
@@ -192,6 +220,7 @@ class SMESH_ActorDef : public SMESH_Actor{
   SMESH_DeviceActor* my1DExtActor;
 
   unsigned int myEntityMode;
   SMESH_DeviceActor* my1DExtActor;
 
   unsigned int myEntityMode;
+  unsigned int myEntityState;
   bool myIsPointsVisible;
 
   bool myIsShrinkable;
   bool myIsPointsVisible;
 
   bool myIsShrinkable;
@@ -213,7 +242,9 @@ class SMESH_ActorDef : public SMESH_Actor{
   vtkSelectVisiblePoints* myClsSelectVisiblePoints;
 
   vtkImplicitBoolean* myImplicitBoolean;
   vtkSelectVisiblePoints* myClsSelectVisiblePoints;
 
   vtkImplicitBoolean* myImplicitBoolean;
-
+  typedef TVTKSmartPtr<vtkPlane> TPlanePtr;
+  typedef std::vector<TPlanePtr> TCippingPlaneCont;
+  TCippingPlaneCont myCippingPlaneCont;
   long myControlsPrecision;
 
   SMESH_ActorDef();
   long myControlsPrecision;
 
   SMESH_ActorDef();