Salome HOME
[bos #40653][CEA] New mesh import export formats with meshio.
[modules/smesh.git] / src / OBJECT / SMESH_Actor.h
1 // Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
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.
10 //
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.
15 //
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
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22
23 //  SMESH OBJECT : interactive object for SMESH visualization
24 //  File   : SMESH_Actor.h
25 //  Author : Nicolas REJNERI
26 //  Module : SMESH
27 //
28 #ifndef SMESH_ACTOR_H
29 #define SMESH_ACTOR_H
30
31 #include <SALOMEconfig.h> // To fix some redefinition
32 #include <SALOME_Actor.h>
33 #include "SMESH_Object.h"
34 #include "SMESH_ActorUtils.h"
35
36 #include <vtkCommand.h>
37
38 class vtkUnstructuredGrid;
39
40 class SMESH_ScalarBarActor;
41 class SMESH_DeviceActor;
42
43 class vtkPlane;
44 class vtkImplicitBoolean;
45
46 #ifndef DISABLE_PLOT2DVIEWER
47 class SPlot2d_Histogram;
48 #endif
49
50 namespace SMESH
51 {
52   const vtkIdType DeleteActorEvent = vtkCommand::UserEvent + 100;
53 }
54
55 class SMESHOBJECT_EXPORT SMESH_Actor: public SALOME_Actor
56 {
57   static SMESH_Actor* New() { return NULL;}
58
59  public:
60   vtkTypeMacro(SMESH_Actor,SALOME_Actor)
61   static SMESH_Actor* New(TVisualObjPtr theVisualObj, 
62                           const char* theEntry, 
63                           const char* theName,
64                           int theIsClear);
65   
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;
68     
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;
71
72   virtual void SetEdgeColor(double r,double g,double b) = 0;
73   virtual void GetEdgeColor(double& r,double& g,double& b) = 0;
74
75   virtual void SetNodeColor(double r,double g,double b) = 0;
76   virtual void GetNodeColor(double& r,double& g,double& b) = 0;
77   
78   virtual void SetOutlineColor(double r,double g,double b) = 0;
79   virtual void GetOutlineColor(double& r,double& g,double& b) = 0;  
80
81   virtual void Set0DColor(double r,double g,double b) = 0;
82   virtual void Get0DColor(double& r,double& g,double& b) = 0;
83
84   virtual void SetBallColor(double r,double g,double b) = 0;
85   virtual void GetBallColor(double& r,double& g,double& b) = 0;
86
87   virtual void UpdateSelectionProps() = 0;
88   
89   virtual double GetLineWidth() = 0;
90   virtual void SetLineWidth(double theVal) = 0;
91
92   virtual double GetOutlineWidth() = 0;
93   virtual void SetOutlineWidth(double theVal) = 0;
94
95   virtual void Set0DSize(double size) = 0;
96   virtual double Get0DSize() = 0;
97
98   virtual void SetBallSize(double size) = 0;
99   virtual double GetBallSize() = 0;
100
101   virtual void SetBallScale(double size) = 0;
102   virtual double GetBallScale() = 0;
103
104   enum EReperesent { ePoint, eEdge, eSurface};
105   
106   enum EEntityMode { e0DElements = 0x01, eEdges = 0x02, eFaces = 0x04, eVolumes = 0x08, eBallElem = 0x10, eAllEntity = 0x1f};
107
108   enum EQuadratic2DRepresentation { eLines = 0x01, eArcs = 0x02 };
109
110   virtual void SetEntityMode(unsigned int theMode) = 0;
111   virtual unsigned int GetEntityMode() const = 0;
112
113   virtual void SetQuadratic2DRepresentation(EQuadratic2DRepresentation) = 0;
114   virtual EQuadratic2DRepresentation GetQuadratic2DRepresentation() = 0;
115
116   virtual void SetPointRepresentation(bool theIsPointsVisible) = 0;
117   virtual bool GetPointRepresentation() = 0;
118
119   virtual vtkUnstructuredGrid* GetUnstructuredGrid() = 0;
120
121   virtual void SetShrinkFactor(double theValue) = 0;
122
123   virtual void SetPointsLabeled(bool theIsPointsLabeled) = 0;
124   virtual bool GetPointsLabeled() = 0;
125
126   virtual void SetCellsLabeled(bool theIsCellsLabeled) = 0;
127   virtual bool GetCellsLabeled() = 0;
128
129   virtual void SetFacesOriented(bool theIsFacesOriented) = 0;
130   virtual bool GetFacesOriented() = 0;
131
132   virtual void SetFacesOrientationColor(double r,double g,double b) = 0;
133   virtual void GetFacesOrientationColor(double& r,double& g,double& b) = 0;
134
135   virtual void SetFacesOrientationScale(double theScale) = 0;
136   virtual double GetFacesOrientationScale() = 0;
137
138   virtual void SetFacesOrientation3DVectors(bool theState) = 0;
139   virtual bool GetFacesOrientation3DVectors() = 0;
140
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,
147                 eCustomControl };
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;
153
154   virtual SMESH_ScalarBarActor* GetScalarBarActor() = 0;
155
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;
162
163   virtual TVisualObjPtr GetObject() = 0;
164
165   virtual void SetControlsPrecision( const long ) = 0;
166   virtual long GetControlsPrecision() const = 0;
167
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;
175
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;
182
183   virtual void UpdateFilter() = 0;
184
185 #ifndef DISABLE_PLOT2DVIEWER
186   virtual SPlot2d_Histogram* GetPlot2Histogram() = 0;
187   virtual SPlot2d_Histogram* UpdatePlot2Histogram() = 0;
188 #endif
189 };
190
191
192 #endif //SMESH_ACTOR_H