Version: 8.3.0
SMESH_Actor.h
Go to the documentation of this file.
1 // Copyright (C) 2007-2016 CEA/DEN, EDF R&D, 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 
39 
41 
42 class vtkPlane;
43 class vtkImplicitBoolean;
44 
45 #ifndef DISABLE_PLOT2DVIEWER
46 class SPlot2d_Histogram;
47 #endif
48 
49 namespace SMESH
50 {
51  const vtkIdType DeleteActorEvent = vtkCommand::UserEvent + 100;
52 }
53 
55 {
56  static SMESH_Actor* New() { return NULL;}
57 
58  public:
59  vtkTypeMacro(SMESH_Actor,SALOME_Actor);
60  static SMESH_Actor* New(TVisualObjPtr theVisualObj,
61  const char* theEntry,
62  const char* theName,
63  int theIsClear);
64 
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;
67 
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;
70 
71  virtual void SetEdgeColor(double r,double g,double b) = 0;
72  virtual void GetEdgeColor(double& r,double& g,double& b) = 0;
73 
74  virtual void SetNodeColor(double r,double g,double b) = 0;
75  virtual void GetNodeColor(double& r,double& g,double& b) = 0;
76 
77  virtual void SetOutlineColor(double r,double g,double b) = 0;
78  virtual void GetOutlineColor(double& r,double& g,double& b) = 0;
79 
80  virtual void Set0DColor(double r,double g,double b) = 0;
81  virtual void Get0DColor(double& r,double& g,double& b) = 0;
82 
83  virtual void SetBallColor(double r,double g,double b) = 0;
84  virtual void GetBallColor(double& r,double& g,double& b) = 0;
85 
86  virtual void SetHighlightColor(double r,double g,double b) = 0;
87  virtual void GetHighlightColor(double& r,double& g,double& b) = 0;
88 
89  virtual void SetPreHighlightColor(double r,double g,double b) = 0;
90  virtual void GetPreHighlightColor(double& r,double& g,double& b) = 0;
91 
92  virtual double GetLineWidth() = 0;
93  virtual void SetLineWidth(double theVal) = 0;
94 
95  virtual double GetOutlineWidth() = 0;
96  virtual void SetOutlineWidth(double theVal) = 0;
97 
98  virtual void Set0DSize(double size) = 0;
99  virtual double Get0DSize() = 0;
100 
101  virtual void SetBallSize(double size) = 0;
102  virtual double GetBallSize() = 0;
103 
104  virtual void SetBallScale(double size) = 0;
105  virtual double GetBallScale() = 0;
106 
107  enum EReperesent { ePoint, eEdge, eSurface};
108 
109  enum EEntityMode { e0DElements = 0x01, eEdges = 0x02, eFaces = 0x04, eVolumes = 0x08, eBallElem = 0x10, eAllEntity = 0x1f};
110 
111  enum EQuadratic2DRepresentation { eLines = 0x01, eArcs = 0x02 };
112 
113  virtual void SetEntityMode(unsigned int theMode) = 0;
114  virtual unsigned int GetEntityMode() const = 0;
115 
116  virtual void SetQuadratic2DRepresentation(EQuadratic2DRepresentation) = 0;
117  virtual EQuadratic2DRepresentation GetQuadratic2DRepresentation() = 0;
118 
119  virtual void SetPointRepresentation(bool theIsPointsVisible) = 0;
120  virtual bool GetPointRepresentation() = 0;
121 
122  virtual vtkUnstructuredGrid* GetUnstructuredGrid() = 0;
123 
124  virtual void SetShrinkFactor(double theValue) = 0;
125 
126  virtual void SetPointsLabeled(bool theIsPointsLabeled) = 0;
127  virtual bool GetPointsLabeled() = 0;
128 
129  virtual void SetCellsLabeled(bool theIsCellsLabeled) = 0;
130  virtual bool GetCellsLabeled() = 0;
131 
132  virtual void SetFacesOriented(bool theIsFacesOriented) = 0;
133  virtual bool GetFacesOriented() = 0;
134 
135  virtual void SetFacesOrientationColor(double r,double g,double b) = 0;
136  virtual void GetFacesOrientationColor(double& r,double& g,double& b) = 0;
137 
138  virtual void SetFacesOrientationScale(double theScale) = 0;
139  virtual double GetFacesOrientationScale() = 0;
140 
141  virtual void SetFacesOrientation3DVectors(bool theState) = 0;
142  virtual bool GetFacesOrientation3DVectors() = 0;
143 
144  enum eControl{eNone, eLength, eLength2D, eFreeBorders, eFreeEdges, eFreeNodes,
145  eFreeFaces, eMultiConnection, eArea, eTaper, eAspectRatio,
146  eMinimumAngle, eWarping, eSkew, eAspectRatio3D, eMultiConnection2D, eVolume3D,
147  eMaxElementLength2D, eMaxElementLength3D, eBareBorderFace, eBareBorderVolume,
148  eOverConstrainedFace, eOverConstrainedVolume, eCoincidentNodes,
149  eCoincidentElems1D, eCoincidentElems2D, eCoincidentElems3D, eNodeConnectivityNb };
150  virtual void SetControlMode(eControl theMode) = 0;
151  virtual eControl GetControlMode() = 0;
152  virtual SMESH::Controls::FunctorPtr GetFunctor() = 0;
153  virtual int GetNumberControlEntities() = 0;
154 
155  virtual SMESH_ScalarBarActor* GetScalarBarActor() = 0;
156 
157  virtual void RemoveAllClippingPlanes() = 0;
158  virtual vtkIdType GetNumberOfClippingPlanes() = 0;
159  virtual vtkPlane* GetClippingPlane(vtkIdType theID) = 0;
160  virtual vtkIdType AddClippingPlane(vtkPlane* thePlane) = 0;
161  virtual void AddOpenGLClippingPlane(vtkPlane* thePlane) = 0;
162  virtual void SetOpenGLClippingPlane() = 0;
163 
164  virtual TVisualObjPtr GetObject() = 0;
165 
166  virtual void SetControlsPrecision( const long ) = 0;
167  virtual long GetControlsPrecision() const = 0;
168 
169  virtual void UpdateScalarBar() = 0;
170  virtual void UpdateDistribution() = 0;
171 
172  virtual void SetPointsFontProperties( SMESH::LabelFont family, int size,
173  bool bold, bool italic, bool shadow,
174  double r, double g, double b ) = 0;
175  virtual void SetCellsFontProperties( SMESH::LabelFont family, int size,
176  bool bold, bool italic, bool shadow,
177  double r, double g, double b ) = 0;
178 
179 #ifndef DISABLE_PLOT2DVIEWER
180  virtual SPlot2d_Histogram* GetPlot2Histogram() = 0;
181  virtual SPlot2d_Histogram* UpdatePlot2Histogram() = 0;
182 #endif
183 };
184 
185 
186 #endif //SMESH_ACTOR_H