1 // Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 // SMESH OBJECT : interactive object for SMESH visualization
24 // File : SMESH_Actor.h
25 // Author : Nicolas REJNERI
31 #include <SALOMEconfig.h> // To fix some redefinition
32 #include <SALOME_Actor.h>
33 #include "SMESH_Object.h"
34 #include "SMESH_ActorUtils.h"
36 #include <vtkCommand.h>
38 class vtkUnstructuredGrid;
40 class SMESH_ScalarBarActor;
41 class SMESH_DeviceActor;
44 class vtkImplicitBoolean;
46 #ifndef DISABLE_PLOT2DVIEWER
47 class SPlot2d_Histogram;
52 const vtkIdType DeleteActorEvent = vtkCommand::UserEvent + 100;
55 class SMESHOBJECT_EXPORT SMESH_Actor: public SALOME_Actor
57 static SMESH_Actor* New() { return NULL;}
60 vtkTypeMacro(SMESH_Actor,SALOME_Actor)
61 static SMESH_Actor* New(TVisualObjPtr theVisualObj,
66 virtual void SetSufaceColor(double r,double g,double b, int delta ) = 0;
67 virtual void GetSufaceColor(double& r,double& g,double& b, int& delta ) = 0;
69 virtual void SetVolumeColor(double r,double g,double b, int delta ) = 0;
70 virtual void GetVolumeColor(double& r,double& g,double& b, int& delta) = 0;
72 virtual void SetEdgeColor(double r,double g,double b) = 0;
73 virtual void GetEdgeColor(double& r,double& g,double& b) = 0;
75 virtual void SetNodeColor(double r,double g,double b) = 0;
76 virtual void GetNodeColor(double& r,double& g,double& b) = 0;
78 virtual void SetOutlineColor(double r,double g,double b) = 0;
79 virtual void GetOutlineColor(double& r,double& g,double& b) = 0;
81 virtual void Set0DColor(double r,double g,double b) = 0;
82 virtual void Get0DColor(double& r,double& g,double& b) = 0;
84 virtual void SetBallColor(double r,double g,double b) = 0;
85 virtual void GetBallColor(double& r,double& g,double& b) = 0;
87 virtual void UpdateSelectionProps() = 0;
89 virtual double GetLineWidth() = 0;
90 virtual void SetLineWidth(double theVal) = 0;
92 virtual double GetOutlineWidth() = 0;
93 virtual void SetOutlineWidth(double theVal) = 0;
95 virtual void Set0DSize(double size) = 0;
96 virtual double Get0DSize() = 0;
98 virtual void SetBallSize(double size) = 0;
99 virtual double GetBallSize() = 0;
101 virtual void SetBallScale(double size) = 0;
102 virtual double GetBallScale() = 0;
104 enum EReperesent { ePoint, eEdge, eSurface};
106 enum EEntityMode { e0DElements = 0x01, eEdges = 0x02, eFaces = 0x04, eVolumes = 0x08, eBallElem = 0x10, eAllEntity = 0x1f};
108 enum EQuadratic2DRepresentation { eLines = 0x01, eArcs = 0x02 };
110 virtual void SetEntityMode(unsigned int theMode) = 0;
111 virtual unsigned int GetEntityMode() const = 0;
113 virtual void SetQuadratic2DRepresentation(EQuadratic2DRepresentation) = 0;
114 virtual EQuadratic2DRepresentation GetQuadratic2DRepresentation() = 0;
116 virtual void SetPointRepresentation(bool theIsPointsVisible) = 0;
117 virtual bool GetPointRepresentation() = 0;
119 virtual vtkUnstructuredGrid* GetUnstructuredGrid() = 0;
121 virtual void SetShrinkFactor(double theValue) = 0;
123 virtual void SetPointsLabeled(bool theIsPointsLabeled) = 0;
124 virtual bool GetPointsLabeled() = 0;
126 virtual void SetCellsLabeled(bool theIsCellsLabeled) = 0;
127 virtual bool GetCellsLabeled() = 0;
129 virtual void SetFacesOriented(bool theIsFacesOriented) = 0;
130 virtual bool GetFacesOriented() = 0;
132 virtual void SetFacesOrientationColor(double r,double g,double b) = 0;
133 virtual void GetFacesOrientationColor(double& r,double& g,double& b) = 0;
135 virtual void SetFacesOrientationScale(double theScale) = 0;
136 virtual double GetFacesOrientationScale() = 0;
138 virtual void SetFacesOrientation3DVectors(bool theState) = 0;
139 virtual bool GetFacesOrientation3DVectors() = 0;
141 enum eControl{eNone, eLength, eLength2D, eDeflection2D, eFreeBorders, eFreeEdges, eFreeNodes,
142 eFreeFaces, eMultiConnection, eArea, eTaper, eAspectRatio,
143 eMinimumAngle, eWarping, eSkew, eAspectRatio3D, eWarping3D, eMultiConnection2D, eVolume3D, eScaledJacobian,
144 eMaxElementLength2D, eMaxElementLength3D, eBareBorderFace, eBareBorderVolume,
145 eOverConstrainedFace, eOverConstrainedVolume, eCoincidentNodes,
146 eCoincidentElems1D, eCoincidentElems2D, eCoincidentElems3D, eNodeConnectivityNb,
148 virtual void SetControlMode(eControl theMode) = 0;
149 virtual void SetControl(SMESH::Controls::FunctorPtr) = 0;
150 virtual eControl GetControlMode() = 0;
151 virtual SMESH::Controls::FunctorPtr GetFunctor() = 0;
152 virtual smIdType GetNumberControlEntities() = 0;
154 virtual SMESH_ScalarBarActor* GetScalarBarActor() = 0;
156 virtual void RemoveAllClippingPlanes() = 0;
157 virtual vtkIdType GetNumberOfClippingPlanes() = 0;
158 virtual vtkPlane* GetClippingPlane(vtkIdType theID) = 0;
159 virtual vtkIdType AddClippingPlane(vtkPlane* thePlane) = 0;
160 virtual void AddOpenGLClippingPlane(vtkPlane* thePlane) = 0;
161 virtual void SetOpenGLClippingPlane() = 0;
163 virtual TVisualObjPtr GetObject() = 0;
165 virtual void SetControlsPrecision( const long ) = 0;
166 virtual long GetControlsPrecision() const = 0;
168 virtual void UpdateScalarBar() = 0;
169 virtual void UpdateDistribution() = 0;
170 virtual void ClipThreshold(bool isThresholdOn, double min = 0.0, double max = 0.0) = 0;
171 virtual SMESH_DeviceActor* GetActorForThreshold() = 0;
172 virtual bool IsClipThresholdOn() const = 0;
173 virtual void SetWireframeOff(bool isWireframeOff) = 0;
174 virtual bool IsWireframeOff() const = 0;
176 virtual void SetPointsFontProperties( SMESH::LabelFont family, int size,
177 bool bold, bool italic, bool shadow,
178 double r, double g, double b ) = 0;
179 virtual void SetCellsFontProperties( SMESH::LabelFont family, int size,
180 bool bold, bool italic, bool shadow,
181 double r, double g, double b ) = 0;
183 virtual void UpdateFilter() = 0;
185 #ifndef DISABLE_PLOT2DVIEWER
186 virtual SPlot2d_Histogram* GetPlot2Histogram() = 0;
187 virtual SPlot2d_Histogram* UpdatePlot2Histogram() = 0;
192 #endif //SMESH_ACTOR_H