summaryrefslogtreecommitdiff
path: root/inc/MeshVS_Mesh.hxx
blob: 35c931da834f9e600daa783ac8d7006aa98e4165 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to 
// this header file considered to be the "object code" form of the original source.

#ifndef _MeshVS_Mesh_HeaderFile
#define _MeshVS_Mesh_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_DefineHandle_HeaderFile
#include <Standard_DefineHandle.hxx>
#endif
#ifndef _Handle_MeshVS_Mesh_HeaderFile
#include <Handle_MeshVS_Mesh.hxx>
#endif

#ifndef _MeshVS_SequenceOfPrsBuilder_HeaderFile
#include <MeshVS_SequenceOfPrsBuilder.hxx>
#endif
#ifndef _Handle_MeshVS_PrsBuilder_HeaderFile
#include <Handle_MeshVS_PrsBuilder.hxx>
#endif
#ifndef _Handle_TColStd_HPackedMapOfInteger_HeaderFile
#include <Handle_TColStd_HPackedMapOfInteger.hxx>
#endif
#ifndef _MeshVS_DataMapOfIntegerOwner_HeaderFile
#include <MeshVS_DataMapOfIntegerOwner.hxx>
#endif
#ifndef _Handle_MeshVS_DataSource_HeaderFile
#include <Handle_MeshVS_DataSource.hxx>
#endif
#ifndef _Handle_MeshVS_Drawer_HeaderFile
#include <Handle_MeshVS_Drawer.hxx>
#endif
#ifndef _Handle_SelectMgr_EntityOwner_HeaderFile
#include <Handle_SelectMgr_EntityOwner.hxx>
#endif
#ifndef _MeshVS_MeshSelectionMethod_HeaderFile
#include <MeshVS_MeshSelectionMethod.hxx>
#endif
#ifndef _AIS_InteractiveObject_HeaderFile
#include <AIS_InteractiveObject.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Handle_PrsMgr_PresentationManager3d_HeaderFile
#include <Handle_PrsMgr_PresentationManager3d.hxx>
#endif
#ifndef _Handle_Prs3d_Presentation_HeaderFile
#include <Handle_Prs3d_Presentation.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Handle_SelectMgr_Selection_HeaderFile
#include <Handle_SelectMgr_Selection.hxx>
#endif
#ifndef _Quantity_NameOfColor_HeaderFile
#include <Quantity_NameOfColor.hxx>
#endif
#ifndef _Standard_CString_HeaderFile
#include <Standard_CString.hxx>
#endif
class MeshVS_PrsBuilder;
class TColStd_HPackedMapOfInteger;
class MeshVS_DataSource;
class MeshVS_Drawer;
class SelectMgr_EntityOwner;
class PrsMgr_PresentationManager3d;
class Prs3d_Presentation;
class SelectMgr_Selection;
class SelectMgr_SequenceOfOwner;
class MeshVS_DataMapOfIntegerOwner;


//! the main class provides interface to create mesh presentation as a whole <br>
class MeshVS_Mesh : public AIS_InteractiveObject {

public:

  //! Constructor. <br>
//! theIsAllowOverlapped is Standard_True, if it is allowed to draw edges overlapped with beams <br>
//!   Its value is stored in drawer <br>
  Standard_EXPORT   MeshVS_Mesh(const Standard_Boolean theIsAllowOverlapped = Standard_False);
  
  Standard_EXPORT   virtual  void Destroy() ;
~MeshVS_Mesh()
{
  Destroy();
}
  //! Computes presentation using builders added to sequence. Each builder computes <br>
//! own part of mesh presentation according to its type. <br>
  Standard_EXPORT   virtual  void Compute(const Handle(PrsMgr_PresentationManager3d)& PM,const Handle(Prs3d_Presentation)& Prs,const Standard_Integer DisplayMode) ;
  //! Computes selection according to SelectMode <br>
  Standard_EXPORT   virtual  void ComputeSelection(const Handle(SelectMgr_Selection)& Sel,const Standard_Integer SelectMode) ;
  //! Draw selected owners presentation <br>
  Standard_EXPORT   virtual  void HilightSelected(const Handle(PrsMgr_PresentationManager3d)& PM,const SelectMgr_SequenceOfOwner& Owners) ;
  //! Draw hilighted owner presentation <br>
  Standard_EXPORT   virtual  void HilightOwnerWithColor(const Handle(PrsMgr_PresentationManager3d)& PM,const Quantity_NameOfColor Color,const Handle(SelectMgr_EntityOwner)& Owner) ;
  //! Clears internal selection presentation <br>
  Standard_EXPORT   virtual  void ClearSelected() ;
  //! How many builders there are in sequence <br>
  Standard_EXPORT     Standard_Integer GetBuildersCount() const;
  //! Returns builder by its index in sequence <br>
  Standard_EXPORT     Handle_MeshVS_PrsBuilder GetBuilder(const Standard_Integer Index) const;
  //! Returns builder by its ID <br>
  Standard_EXPORT     Handle_MeshVS_PrsBuilder GetBuilderById(const Standard_Integer Id) const;
  //! Returns the smallest positive ID, not occupied by any builder. <br>
//! This method using when builder is created with ID = -1 <br>
  Standard_EXPORT     Standard_Integer GetFreeId() const;
  //! Adds builder to tale of sequence. <br>
//! PrsBuilder is builder to be added <br>
//! If TreatAsHilighter is true, MeshVS_Mesh will use this builder to create <br>
//! presentation of hilighted and selected owners. <br>
//!   Only one builder can be hilighter, so that if you call this method with <br>
//!   TreatAsHilighter = Standard_True some times, only last builder will be hilighter <br>
//!   WARNING: As minimum one builder must be added as hilighter, otherwise selection cannot be computed <br>
  Standard_EXPORT     void AddBuilder(const Handle(MeshVS_PrsBuilder)& Builder,const Standard_Boolean TreatAsHilighter = Standard_False) ;
  //! Changes hilighter ( see above ) <br>
  Standard_EXPORT     void SetHilighter(const Handle(MeshVS_PrsBuilder)& Builder) ;
  //! Sets builder with sequence index "Index" as hilighter <br>
  Standard_EXPORT     Standard_Boolean SetHilighter(const Standard_Integer Index) ;
  //! Sets builder with identificator "Id" as hilighter <br>
  Standard_EXPORT     Standard_Boolean SetHilighterById(const Standard_Integer Id) ;
  //! Returns hilighter <br>
  Standard_EXPORT     Handle_MeshVS_PrsBuilder GetHilighter() const;
  //! Removes builder from sequence. If it is hilighter, hilighter will be NULL <br>
//! ( Don't remember to set it to other after!!! ) <br>
  Standard_EXPORT     void RemoveBuilder(const Standard_Integer Index) ;
  //! Removes builder with identificator Id <br>
  Standard_EXPORT     void RemoveBuilderById(const Standard_Integer Id) ;
  //! Finds builder by its type the string represents <br>
  Standard_EXPORT     Handle_MeshVS_PrsBuilder FindBuilder(const Standard_CString TypeString) const;
  //! Returns map of owners. <br>
  Standard_EXPORT    const MeshVS_DataMapOfIntegerOwner& GetOwnerMaps(const Standard_Boolean IsElement) ;
  //! Returns default builders' data source <br>
  Standard_EXPORT     Handle_MeshVS_DataSource GetDataSource() const;
  //! Sets default builders' data source <br>
  Standard_EXPORT     void SetDataSource(const Handle(MeshVS_DataSource)& aDataSource) ;
  //! Returns default builders' drawer <br>
  Standard_EXPORT     Handle_MeshVS_Drawer GetDrawer() const;
  //! Sets default builders' drawer <br>
  Standard_EXPORT     void SetDrawer(const Handle(MeshVS_Drawer)& aDrawer) ;
  //! Returns True if specified element is hidden <br>
//!          By default no elements are hidden <br>
  Standard_EXPORT     Standard_Boolean IsHiddenElem(const Standard_Integer ID) const;
  //! Returns True if specified node is hidden. <br>
//!          By default all nodes are hidden <br>
  Standard_EXPORT     Standard_Boolean IsHiddenNode(const Standard_Integer ID) const;
  //! Returns True if specified element is not hidden <br>
  Standard_EXPORT     Standard_Boolean IsSelectableElem(const Standard_Integer ID) const;
  //! Returns True if specified node is specified as selectable. <br>
  Standard_EXPORT     Standard_Boolean IsSelectableNode(const Standard_Integer ID) const;
  //! Returns map of hidden nodes (may be null handle) <br>
  Standard_EXPORT    const Handle_TColStd_HPackedMapOfInteger& GetHiddenNodes() const;
  //! Sets map of hidden nodes, which shall not be displayed individually. <br>
//!          If nodes shared by some elements shall not be drawn, <br>
//!          they should be included into that map <br>
  Standard_EXPORT     void SetHiddenNodes(const Handle(TColStd_HPackedMapOfInteger)& Ids) ;
  //! Returns map of hidden elements (may be null handle) <br>
  Standard_EXPORT    const Handle_TColStd_HPackedMapOfInteger& GetHiddenElems() const;
  //! Sets map of hidden elements <br>
  Standard_EXPORT     void SetHiddenElems(const Handle(TColStd_HPackedMapOfInteger)& Ids) ;
  //! Returns map of selectable elements (may be null handle) <br>
  Standard_EXPORT    const Handle_TColStd_HPackedMapOfInteger& GetSelectableNodes() const;
  //! Sets map of selectable nodes. <br>
  Standard_EXPORT     void SetSelectableNodes(const Handle(TColStd_HPackedMapOfInteger)& Ids) ;
  //! Automatically computes selectable nodes; the node is considered <br>
//!          as being selectable if it is either not hidden, or is hidden <br>
//!          but referred by at least one non-hidden element. <br>
//!          Thus all nodes that are visible (either individually, or as ends or <br>
//!          corners of elements) are selectable by default. <br>
  Standard_EXPORT     void UpdateSelectableNodes() ;
  //! Returns set mesh selection method (see MeshVS.cdl) <br>
  Standard_EXPORT     MeshVS_MeshSelectionMethod GetMeshSelMethod() const;
  //! Sets mesh selection method (see MeshVS.cdl) <br>
  Standard_EXPORT     void SetMeshSelMethod(const MeshVS_MeshSelectionMethod M) ;
  //! Returns True if the given owner represents a whole mesh. <br>
  Standard_EXPORT   virtual  Standard_Boolean IsWholeMeshOwner(const Handle(SelectMgr_EntityOwner)& theOwner) const;

friend class MeshVS_PrsBuilder;


  DEFINE_STANDARD_RTTI(MeshVS_Mesh)

protected:


MeshVS_DataMapOfIntegerOwner myNodeOwners;
MeshVS_DataMapOfIntegerOwner myElementOwners;
MeshVS_DataMapOfIntegerOwner my0DOwners;
MeshVS_DataMapOfIntegerOwner myLinkOwners;
MeshVS_DataMapOfIntegerOwner myFaceOwners;
MeshVS_DataMapOfIntegerOwner myVolumeOwners;
MeshVS_DataMapOfIntegerOwner myGroupOwners;
MeshVS_DataMapOfIntegerOwner myMeshOwners;
Handle_MeshVS_Drawer myCurrentDrawer;
Handle_MeshVS_Drawer mySelectionDrawer;
Handle_MeshVS_Drawer myHilightDrawer;
Handle_SelectMgr_EntityOwner myWholeMeshOwner;


private: 


MeshVS_SequenceOfPrsBuilder myBuilders;
Handle_MeshVS_PrsBuilder myHilighter;
Handle_TColStd_HPackedMapOfInteger myHiddenElements;
Handle_TColStd_HPackedMapOfInteger myHiddenNodes;
Handle_TColStd_HPackedMapOfInteger mySelectableNodes;
Handle_MeshVS_DataSource myDataSource;
MeshVS_MeshSelectionMethod mySelectionMethod;


};





// other Inline functions and methods (like "C++: function call" methods)


#endif