-// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers
+// Copyright (C) 2007-2019 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 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 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
-//
-// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+// 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.
//
+// 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
+//
+
+// SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers
// File : SALOME_Actor.h
// Author : Nicolas REJNERI
-// Module : SALOME
-// $Header$
#ifndef VTKVIEVER_ACTOR_H
#define VTKVIEVER_ACTOR_H
#include <vector>
#include <vtkLODActor.h>
+#include <vtkProperty.h>
class vtkCell;
class vtkPointPicker;
class vtkCamera;
class vtkProperty;
class vtkRenderer;
+class vtkPassThroughFilter;
class VTKViewer_Transform;
class VTKViewer_GeometryFilter;
class VTKViewer_TransformFilter;
-class VTKViewer_PassThroughFilter;
extern int VTKViewer_POINT_SIZE;
extern int VTKViewer_LINE_WIDTH;
+namespace VTKViewer
+{
+ 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;
+ const Type SurfaceWithEdges = Insideframe + 1;
+ }
+}
+
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
/*! \class vtkLODActor
* \brief For more information see <a href="http://www.vtk.org/">VTK documentation</a>
*/
//! Change opacity
virtual
void
- SetOpacity(float theOpacity);
+ SetOpacity(double theOpacity);
//! Get current opacity
virtual
- float
+ double
GetOpacity();
//! Change color
virtual
void
- SetColor(float r,float g,float b);
+ SetColor(double r,
+ double g,
+ double b);
//! Get current color
virtual
void
- GetColor(float& r,float& g,float& b);
+ GetColor(double& r,
+ double& g,
+ double& b);
//! Change color
virtual
void
- SetColor(const float theRGB[3]);
+ SetColor(const double theRGB[3]);
+
+ //! Change material
+ virtual
+ void
+ SetMaterial(std::vector<vtkProperty*> theProps);
+
+ //! Get current front material
+ virtual
+ vtkProperty*
+ GetFrontMaterial();
+
+ //! Get current back material
+ virtual
+ vtkProperty*
+ GetBackMaterial();
//----------------------------------------------------------------------------
// For selection mapping purpose
//! Get coordinates of a node for given object index
virtual
- float*
+ double*
GetNodeCoord(int theObjID);
+ //! Maps object index of a node to corresponding VTK index
+ virtual
+ int
+ GetNodeVtkId(int theObjID);
+
//! Maps VTK index of a cell to corresponding object index
virtual
int
//! To calculatate last modified time
virtual
- unsigned long int
+ vtkMTimeType
GetMTime();
//----------------------------------------------------------------------------
//! To calcualte current bounding box
virtual
- float*
+ double*
GetBounds();
//! To calcualte current bounding box
void
- GetBounds(float bounds[6]);
+ GetBounds(double bounds[6]);
//----------------------------------------------------------------------------
virtual
virtual
void
- SetSize( const float );
+ SetSize( const double );
virtual
void
//! Set ResolveCoincidentTopology parameters
void
- SetPolygonOffsetParameters(float factor, float units);
+ SetPolygonOffsetParameters(double factor,
+ double units);
//! Get current ResolveCoincidentTopology parameters
void
- GetPolygonOffsetParameters(float& factor, float& units);
+ GetPolygonOffsetParameters(double& factor,
+ double& units);
+
+ //! Get default ResolveCoincidentTopology parameters
+ static
+ void
+ GetDefaultPolygonOffsetParameters(double& factor,
+ double& units);
virtual
void
//----------------------------------------------------------------------------
//! Get current shrink factor
virtual
- float
+ double
GetShrinkFactor();
//! Is the actor is shrunkable
GetChildActors(vtkActorCollection*);
//----------------------------------------------------------------------------
+ //! Is notified on enabling/disabling selection
+ virtual
+ void
+ EnableSelection( bool enable ) {}
+
//! Ask, if the descendant of the VTKViewer_Actor will implement its own highlight or not
virtual
bool
bool
isHighlighted();
+ //! Ask, if the VTKViewer_Actor is already preselected
+ virtual
+ bool
+ isPreselected();
+
//! Set preselection mode
virtual
void
void
SetPreviewProperty(vtkProperty* theProperty);
+ //----------------------------------------------------------------------------
+ //! Setting for displaying quadratic elements
+ virtual void SetQuadraticArcMode(bool theFlag);
+ virtual bool GetQuadraticArcMode() const;
+
+ virtual void SetQuadraticArcAngle(double theMaxAngle);
+ virtual double GetQuadraticArcAngle() const;
+
+ //----------------------------------------------------------------------------
+ //! Return pointer to the dataset, which used to calculation of the bounding box of the actor
+ virtual vtkDataSet* GetHighlightedDataSet();
+
protected:
//----------------------------------------------------------------------------
bool myIsResolveCoincidentTopology;
- float myPolygonOffsetFactor;
- float myPolygonOffsetUnits;
+ double myPolygonOffsetFactor;
+ double myPolygonOffsetUnits;
std::string myName;
- float myOpacity;
+ double myOpacity;
int myDisplayMode;
bool myIsInfinite;
bool myStoreMapping;
VTKViewer_GeometryFilter *myGeomFilter;
VTKViewer_TransformFilter *myTransformFilter;
- std::vector<VTKViewer_PassThroughFilter*> myPassFilter;
+ std::vector<vtkPassThroughFilter*> myPassFilter;
int myRepresentation;
vtkProperty *myProperty;
bool myIsHighlighted;
};
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
#endif // VTKVIEVER_ACTOR_H