1 // Copyright (C) 2007-2023 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;
43 class vtkImplicitBoolean;
45 #ifndef DISABLE_PLOT2DVIEWER
46 class SPlot2d_Histogram;
51 const vtkIdType DeleteActorEvent = vtkCommand::UserEvent + 100;
54 class SMESHOBJECT_EXPORT SMESH_Actor: public SALOME_Actor
56 static SMESH_Actor* New() { return NULL;}
59 vtkTypeMacro(SMESH_Actor,SALOME_Actor)
60 static SMESH_Actor* New(TVisualObjPtr theVisualObj,
65 virtual void SetSufaceColor(double r,double g,double b, int delta ) = 0;
66 virtual void GetSufaceColor(double& r,double& g,double& b, int& delta ) = 0;
68 virtual void SetVolumeColor(double r,double g,double b, int delta ) = 0;
69 virtual void GetVolumeColor(double& r,double& g,double& b, int& delta) = 0;
71 virtual void SetEdgeColor(double r,double g,double b) = 0;
72 virtual void GetEdgeColor(double& r,double& g,double& b) = 0;
74 virtual void SetNodeColor(double r,double g,double b) = 0;
75 virtual void GetNodeColor(double& r,double& g,double& b) = 0;
77 virtual void SetOutlineColor(double r,double g,double b) = 0;
78 virtual void GetOutlineColor(double& r,double& g,double& b) = 0;
80 virtual void Set0DColor(double r,double g,double b) = 0;
81 virtual void Get0DColor(double& r,double& g,double& b) = 0;
83 virtual void SetBallColor(double r,double g,double b) = 0;
84 virtual void GetBallColor(double& r,double& g,double& b) = 0;
86 virtual void UpdateSelectionProps() = 0;
88 virtual double GetLineWidth() = 0;
89 virtual void SetLineWidth(double theVal) = 0;
91 virtual double GetOutlineWidth() = 0;
92 virtual void SetOutlineWidth(double theVal) = 0;
94 virtual void Set0DSize(double size) = 0;
95 virtual double Get0DSize() = 0;
97 virtual void SetBallSize(double size) = 0;
98 virtual double GetBallSize() = 0;
100 virtual void SetBallScale(double size) = 0;
101 virtual double GetBallScale() = 0;
103 enum EReperesent { ePoint, eEdge, eSurface};
105 enum EEntityMode { e0DElements = 0x01, eEdges = 0x02, eFaces = 0x04, eVolumes = 0x08, eBallElem = 0x10, eAllEntity = 0x1f};
107 enum EQuadratic2DRepresentation { eLines = 0x01, eArcs = 0x02 };
109 virtual void SetEntityMode(unsigned int theMode) = 0;
110 virtual unsigned int GetEntityMode() const = 0;
112 virtual void SetQuadratic2DRepresentation(EQuadratic2DRepresentation) = 0;
113 virtual EQuadratic2DRepresentation GetQuadratic2DRepresentation() = 0;
115 virtual void SetPointRepresentation(bool theIsPointsVisible) = 0;
116 virtual bool GetPointRepresentation() = 0;
118 virtual vtkUnstructuredGrid* GetUnstructuredGrid() = 0;
120 virtual void SetShrinkFactor(double theValue) = 0;
122 virtual void SetPointsLabeled(bool theIsPointsLabeled) = 0;
123 virtual bool GetPointsLabeled() = 0;
125 virtual void SetCellsLabeled(bool theIsCellsLabeled) = 0;
126 virtual bool GetCellsLabeled() = 0;
128 virtual void SetFacesOriented(bool theIsFacesOriented) = 0;
129 virtual bool GetFacesOriented() = 0;
131 virtual void SetFacesOrientationColor(double r,double g,double b) = 0;
132 virtual void GetFacesOrientationColor(double& r,double& g,double& b) = 0;
134 virtual void SetFacesOrientationScale(double theScale) = 0;
135 virtual double GetFacesOrientationScale() = 0;
137 virtual void SetFacesOrientation3DVectors(bool theState) = 0;
138 virtual bool GetFacesOrientation3DVectors() = 0;
140 enum eControl{eNone, eLength, eLength2D, eDeflection2D, eFreeBorders, eFreeEdges, eFreeNodes,
141 eFreeFaces, eMultiConnection, eArea, eTaper, eAspectRatio,
142 eMinimumAngle, eWarping, eSkew, eAspectRatio3D, eMultiConnection2D, eVolume3D,
143 eMaxElementLength2D, eMaxElementLength3D, eBareBorderFace, eBareBorderVolume,
144 eOverConstrainedFace, eOverConstrainedVolume, eCoincidentNodes,
145 eCoincidentElems1D, eCoincidentElems2D, eCoincidentElems3D, eNodeConnectivityNb,
147 virtual void SetControlMode(eControl theMode) = 0;
148 virtual void SetControl(SMESH::Controls::FunctorPtr) = 0;
149 virtual eControl GetControlMode() = 0;
150 virtual SMESH::Controls::FunctorPtr GetFunctor() = 0;
151 virtual smIdType GetNumberControlEntities() = 0;
153 virtual SMESH_ScalarBarActor* GetScalarBarActor() = 0;
155 virtual void RemoveAllClippingPlanes() = 0;
156 virtual vtkIdType GetNumberOfClippingPlanes() = 0;
157 virtual vtkPlane* GetClippingPlane(vtkIdType theID) = 0;
158 virtual vtkIdType AddClippingPlane(vtkPlane* thePlane) = 0;
159 virtual void AddOpenGLClippingPlane(vtkPlane* thePlane) = 0;
160 virtual void SetOpenGLClippingPlane() = 0;
162 virtual TVisualObjPtr GetObject() = 0;
164 virtual void SetControlsPrecision( const long ) = 0;
165 virtual long GetControlsPrecision() const = 0;
167 virtual void UpdateScalarBar() = 0;
168 virtual void UpdateDistribution() = 0;
169 virtual void ClipThreshold(bool isThresholdOn, double min = 0.0, double max = 0.0) = 0;
170 virtual bool IsClipThresholdOn() const = 0;
171 virtual void SetWireframeOff(bool isWireframeOff) = 0;
172 virtual bool IsWireframeOff() const = 0;
174 virtual void SetPointsFontProperties( SMESH::LabelFont family, int size,
175 bool bold, bool italic, bool shadow,
176 double r, double g, double b ) = 0;
177 virtual void SetCellsFontProperties( SMESH::LabelFont family, int size,
178 bool bold, bool italic, bool shadow,
179 double r, double g, double b ) = 0;
181 virtual void UpdateFilter() = 0;
183 #ifndef DISABLE_PLOT2DVIEWER
184 virtual SPlot2d_Histogram* GetPlot2Histogram() = 0;
185 virtual SPlot2d_Histogram* UpdatePlot2Histogram() = 0;
190 #endif //SMESH_ACTOR_H