Salome HOME
refs #416: to store the open state of object browser items in the binary array
[modules/gui.git] / src / SVTK / SVTK_DeviceActor.h
index 95949133be2793a0bfeeb780f06ed60c6bc13135..16828a81134bfdbd661cccb71919ce072274441c 100644 (file)
@@ -1,35 +1,36 @@
-//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
 //
-//  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
 //
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
 //
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
-//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 //  SVTK OBJECT : interactive object for SVTK visualization
 //  File   : SVTK_DeviceActor.h
 //  Author : 
-//  Module : 
-//  $Header$
-//
+
 #ifndef SVTK_DEVICE_ACTOR_H
 #define SVTK_DEVICE_ACTOR_H
 
 #include "SVTK.h"
 #include "VTKViewer.h"
+#include "VTKViewer_Actor.h"
+#include "VTKViewer_MarkerDef.h"
 
 #include <vector>
 
@@ -44,20 +45,9 @@ class vtkCell;
 class vtkDataSet;
 class vtkShrinkFilter;
 class vtkFeatureEdges;
-class vtkDataSetMapper;
+class VTKViewer_DataSetMapper;
 class vtkPassThroughFilter;
-
-namespace SVTK
-{
-  namespace Representation
-  {
-    typedef int Type;
-    const Type Points = VTK_POINTS;
-    const Type Wireframe = VTK_WIREFRAME;
-    const Type Surface = VTK_SURFACE;
-    const Type Insideframe = Surface + 1;
-  }
-}
+class vtkAlgorithmOutput;
 
 #ifdef WIN32
 #pragma warning ( disable:4251 )
@@ -90,7 +80,12 @@ class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor
   //! Allows to set initial #vtkDataSet
   virtual
   void
-  SetInput(vtkDataSet* theDataSet); 
+  SetInputData(vtkDataSet* theDataSet); 
+
+  //! Allows to set initial #vtkAlgorithmOutput
+  virtual
+  void
+  SetInputConnection(vtkAlgorithmOutput* theAlgorithmOutput); 
 
   /** @name For selection mapping purpose */
   //@{
@@ -99,7 +94,7 @@ class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor
   GetNodeObjId(int theVtkID);
 
   virtual
-  vtkFloatingPointType* 
+  double* 
   GetNodeCoord(int theObjID);
 
   virtual
@@ -122,12 +117,12 @@ class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor
 
   /** @name For shrink mamnagement purpose */
   //@{
-  vtkFloatingPointType
+  double
   GetShrinkFactor();
 
   virtual 
   void  
-  SetShrinkFactor(vtkFloatingPointType value);
+  SetShrinkFactor(double value);
 
   virtual
   void
@@ -167,25 +162,25 @@ class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor
   SetFeatureEdgesEnabled(bool theIsFeatureEdgesEnabled);
 
   virtual
-  vtkFloatingPointType
+  double
   GetFeatureEdgesAngle();
 
   virtual
   void
-  SetFeatureEdgesAngle(vtkFloatingPointType theAngle); 
+  SetFeatureEdgesAngle(double theAngle); 
 
   virtual
   void
   GetFeatureEdgesFlags(bool& theIsFeatureEdges,
-                      bool& theIsBoundaryEdges,
-                      bool& theIsManifoldEdges,
-                      bool& theIsNonManifoldEdges);
+                       bool& theIsBoundaryEdges,
+                       bool& theIsManifoldEdges,
+                       bool& theIsNonManifoldEdges);
   virtual
   void
   SetFeatureEdgesFlags(bool theIsFeatureEdges,
-                      bool theIsBoundaryEdges,
-                      bool theIsManifoldEdges,
-                      bool theIsNonManifoldEdges);
+                       bool theIsBoundaryEdges,
+                       bool theIsManifoldEdges,
+                       bool theIsNonManifoldEdges);
 
   virtual
   bool
@@ -199,17 +194,17 @@ class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor
   /** @name For representation mamnagement purpose */
   virtual
   void 
-  SetRepresentation(SVTK::Representation::Type theMode);
+    SetRepresentation(VTKViewer::Representation::Type theMode);
 
-  SVTK::Representation::Type 
+  VTKViewer::Representation::Type 
   GetRepresentation();
 
   virtual
-  vtkFloatingPointType
+  double
   GetDefaultPointSize();
 
   virtual
-  vtkFloatingPointType
+  double
   GetDefaultLineWidth();
 
   bool
@@ -219,14 +214,59 @@ class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor
   SetShaded(bool theShaded);
   //@}
 
+  /** @name For ball marker management purpose */
+  void 
+  SetBallEnabled( bool );
+
+  /** @name For marker management purpose */
+  void
+  SetMarkerEnabled( bool );
+
+  void
+  SetMarkerStd( VTK::MarkerType, VTK::MarkerScale );
+
+  void
+  SetMarkerTexture( int, VTK::MarkerTexture );
+
+  VTK::MarkerType
+  GetMarkerType();
+
+  VTK::MarkerScale
+  GetMarkerScale();
+
+  int
+  GetMarkerTexture();
+  //@}
+
   virtual
   void
   Render(vtkRenderer *, vtkMapper *);
 
-  vtkDataSetMapper* GetDataSetMapper();
+  VTKViewer_DataSetMapper* GetDataSetMapper();
+
+  //----------------------------------------------------------------------------
+  //! Setting for displaying quadratic elements
+  virtual void SetQuadraticArcMode(bool theFlag);
+  virtual bool GetQuadraticArcMode();
+
+  virtual void SetQuadraticArcAngle(double theMaxAngle);
+  virtual double GetQuadraticArcAngle();
+
+  virtual
+  void
+  SetCoincident3DAllowed(bool theIsFeatureEdgesAllowed);
+
+  virtual
+  bool 
+  IsCoincident3DAllowed() const;
+  
+  void
+  SetResolveCoincidentTopology(bool theIsResolve);
+    
+
 
  protected:
-  SVTK::Representation::Type myRepresentation;
+  VTKViewer::Representation::Type myRepresentation;
   vtkProperty *myProperty;
   bool myIsShaded;
 
@@ -239,7 +279,7 @@ class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor
   std::vector<vtkPassThroughFilter*> myPassFilter;
   vtkShrinkFilter* myShrinkFilter;
   vtkFeatureEdges* myFeatureEdges;
-  vtkDataSetMapper* myMapper;
+  VTKViewer_DataSetMapper* myMapper;
 
   bool myIsShrinkable;
   bool myIsShrunk;
@@ -248,13 +288,13 @@ class SVTK_EXPORT SVTK_DeviceActor: public vtkLODActor
   bool myIsFeatureEdgesEnabled;
 
   bool myIsResolveCoincidentTopology;
-  vtkFloatingPointType myPolygonOffsetFactor;
-  vtkFloatingPointType myPolygonOffsetUnits;
+  double myPolygonOffsetFactor;
+  double myPolygonOffsetUnits;
 
-  void SetPolygonOffsetParameters(vtkFloatingPointType factor, 
-                                 vtkFloatingPointType units);
-  void GetPolygonOffsetParameters(vtkFloatingPointType& factor, 
-                                 vtkFloatingPointType& units);
+  void SetPolygonOffsetParameters(double factor, 
+                                  double units);
+  void GetPolygonOffsetParameters(double& factor, 
+                                  double& units);
 
   SVTK_DeviceActor();
   ~SVTK_DeviceActor();