1 // Copyright (C) 2007-2016 CEA/DEN, EDF R&D, 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 SetHighlightColor(double r,double g,double b) = 0;
87 virtual void GetHighlightColor(double& r,double& g,double& b) = 0;
89 virtual void SetPreHighlightColor(double r,double g,double b) = 0;
90 virtual void GetPreHighlightColor(double& r,double& g,double& b) = 0;
92 virtual double GetLineWidth() = 0;
93 virtual void SetLineWidth(double theVal) = 0;
95 virtual double GetOutlineWidth() = 0;
96 virtual void SetOutlineWidth(double theVal) = 0;
98 virtual void Set0DSize(double size) = 0;
99 virtual double Get0DSize() = 0;
101 virtual void SetBallSize(double size) = 0;
102 virtual double GetBallSize() = 0;
104 virtual void SetBallScale(double size) = 0;
105 virtual double GetBallScale() = 0;
107 enum EReperesent { ePoint, eEdge, eSurface};
109 enum EEntityMode { e0DElements = 0x01, eEdges = 0x02, eFaces = 0x04, eVolumes = 0x08, eBallElem = 0x10, eAllEntity = 0x1f};
111 enum EQuadratic2DRepresentation { eLines = 0x01, eArcs = 0x02 };
113 virtual void SetEntityMode(unsigned int theMode) = 0;
114 virtual unsigned int GetEntityMode() const = 0;
116 virtual void SetQuadratic2DRepresentation(EQuadratic2DRepresentation) = 0;
117 virtual EQuadratic2DRepresentation GetQuadratic2DRepresentation() = 0;
119 virtual void SetPointRepresentation(bool theIsPointsVisible) = 0;
120 virtual bool GetPointRepresentation() = 0;
122 virtual vtkUnstructuredGrid* GetUnstructuredGrid() = 0;
124 virtual void SetShrinkFactor(double theValue) = 0;
126 virtual void SetPointsLabeled(bool theIsPointsLabeled) = 0;
127 virtual bool GetPointsLabeled() = 0;
129 virtual void SetCellsLabeled(bool theIsCellsLabeled) = 0;
130 virtual bool GetCellsLabeled() = 0;
132 virtual void SetFacesOriented(bool theIsFacesOriented) = 0;
133 virtual bool GetFacesOriented() = 0;
135 virtual void SetFacesOrientationColor(double r,double g,double b) = 0;
136 virtual void GetFacesOrientationColor(double& r,double& g,double& b) = 0;
138 virtual void SetFacesOrientationScale(double theScale) = 0;
139 virtual double GetFacesOrientationScale() = 0;
141 virtual void SetFacesOrientation3DVectors(bool theState) = 0;
142 virtual bool GetFacesOrientation3DVectors() = 0;
144 enum eControl{eNone, eLength, eLength2D, eDeflection2D, 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,
151 virtual void SetControlMode(eControl theMode) = 0;
152 virtual void SetControl(SMESH::Controls::FunctorPtr) = 0;
153 virtual eControl GetControlMode() = 0;
154 virtual SMESH::Controls::FunctorPtr GetFunctor() = 0;
155 virtual int GetNumberControlEntities() = 0;
157 virtual SMESH_ScalarBarActor* GetScalarBarActor() = 0;
159 virtual void RemoveAllClippingPlanes() = 0;
160 virtual vtkIdType GetNumberOfClippingPlanes() = 0;
161 virtual vtkPlane* GetClippingPlane(vtkIdType theID) = 0;
162 virtual vtkIdType AddClippingPlane(vtkPlane* thePlane) = 0;
163 virtual void AddOpenGLClippingPlane(vtkPlane* thePlane) = 0;
164 virtual void SetOpenGLClippingPlane() = 0;
166 virtual TVisualObjPtr GetObject() = 0;
168 virtual void SetControlsPrecision( const long ) = 0;
169 virtual long GetControlsPrecision() const = 0;
171 virtual void UpdateScalarBar() = 0;
172 virtual void UpdateDistribution() = 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 #ifndef DISABLE_PLOT2DVIEWER
182 virtual SPlot2d_Histogram* GetPlot2Histogram() = 0;
183 virtual SPlot2d_Histogram* UpdatePlot2Histogram() = 0;
188 #endif //SMESH_ACTOR_H