This file is indexed.

/usr/include/oce/Graphic3d_Structure.hxx is in liboce-visualization-dev 0.17.2-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
// 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 _Graphic3d_Structure_HeaderFile
#define _Graphic3d_Structure_HeaderFile

#include <Standard.hxx>
#include <Standard_DefineHandle.hxx>
#include <Handle_Graphic3d_Structure.hxx>

#include <Graphic3d_CStructure_Handle.hxx>
#include <TColStd_SequenceOfAddress.hxx>
#include <Quantity_Color.hxx>
#include <Aspect_TypeOfHighlightMethod.hxx>
#include <Graphic3d_StructureManagerPtr.hxx>
#include <Standard_Address.hxx>
#include <Graphic3d_TypeOfStructure.hxx>
#include <MMgt_TShared.hxx>
#include <Handle_Graphic3d_StructureManager.hxx>
#include <Standard_Boolean.hxx>
#include <Standard_Integer.hxx>
#include <Graphic3d_SequenceOfHClipPlane.hxx>
#include <Handle_Graphic3d_AspectLine3d.hxx>
#include <Handle_Graphic3d_AspectFillArea3d.hxx>
#include <Handle_Graphic3d_AspectText3d.hxx>
#include <Handle_Graphic3d_AspectMarker3d.hxx>
#include <Standard_Real.hxx>
#include <Handle_Graphic3d_DataStructureManager.hxx>
#include <Graphic3d_SequenceOfGroup.hxx>
#include <Handle_Graphic3d_Group.hxx>
#include <Graphic3d_TypeOfConnection.hxx>
#include <Graphic3d_TypeOfComposition.hxx>
#include <Graphic3d_TransModeFlags.hxx>
#include <Graphic3d_BndBox4f.hxx>
#include <Graphic3d_BndBox4d.hxx>
#include <Graphic3d_Vertex.hxx>
class Graphic3d_PriorityDefinitionError;
class Graphic3d_StructureDefinitionError;
class Graphic3d_TransformError;
class Graphic3d_Group;
class Graphic3d_StructureManager;
class Quantity_Color;
class Graphic3d_AspectLine3d;
class Graphic3d_AspectFillArea3d;
class Graphic3d_AspectText3d;
class Graphic3d_AspectMarker3d;
class Graphic3d_DataStructureManager;
class TColStd_Array2OfReal;
class Bnd_Box;
class Graphic3d_MapOfStructure;
class gp_Pnt;
class Graphic3d_Vector;


//! This class allows the definition a graphic object.
//! This graphic structure can be displayed,
//! erased, or highlighted.
//! This graphic structure can be connected with
//! another graphic structure.
//! Keywords: Structure, StructureManager, Display, Erase, Highlight,
//! UnHighlight, Visible, Priority, Selectable, Visible,
//! Visual, Connection, Ancestors, Descendants, Transformation
class Graphic3d_Structure : public MMgt_TShared
{

public:

  
  //! Creates a graphic object in the manager theManager.
  //! It will appear in all the views of the visualiser.
  //! Warning: The default values AspectLine, AspectFillArea, AspectText and AspectMarker are NOT applied to the structure.
  //! The structure is not displayed when it is created.
  Standard_EXPORT Graphic3d_Structure(const Handle(Graphic3d_StructureManager)& theManager);
  
  //! Creates a shadow link to existing graphic object.
  Standard_EXPORT Graphic3d_Structure(const Handle(Graphic3d_StructureManager)& theManager, const Handle(Graphic3d_Structure)& thePrs);
  
  //! if WithDestruction == Standard_True then
  //! suppress all the groups of primitives in the structure.
  //! and it is mandatory to create a new group in <me>.
  //! if WithDestruction == Standard_False then
  //! clears all the groups of primitives in the structure.
  //! and all the groups are conserved and empty.
  //! They will be erased at the next screen update.
  //! The structure itself is conserved.
  //! The transformation and the attributes of <me> are conserved.
  //! The childs of <me> are conserved.
  Standard_EXPORT virtual   void Clear (const Standard_Boolean WithDestruction = Standard_True) ;
  
  //! Suppresses the structure <me>.
  //! It will be erased at the next screen update.
  Standard_EXPORT virtual   void Destroy() ;
~Graphic3d_Structure()
{
  Destroy();
}
  
  //! Displays the structure <me> in all the views of
  //! the visualiser.
  Standard_EXPORT virtual   void Display() ;
  
  //! Displays the structure <me> in all the views of
  //! the visualiser, while modifying its current priority.
  //! Note: Display Priorities
  //! Structure display priorities control the order in which
  //! structures are redrawn.   When you display a
  //! structure, you specify its priority. The lower the value,
  //! the lower the display priority. When the display is
  //! regenerated, the structures with the lowest priority
  //! are drawn first. For structures with the same display
  //! priority, the order in which they were displayed
  //! determines the drawing order. Open CASCADE
  //! supports 11 structure display priorities, 0 to 10.
  //! Warning: Raises PriorityDefinitionError if <Priority> is
  //! greater than 10 or a negative value.
  Standard_EXPORT   void Display (const Standard_Integer Priority) ;
  
  //! Returns the current display priority for the
  //! structure <me>.
  Standard_EXPORT   Standard_Integer DisplayPriority()  const;
  
  //! Erases the structure <me> in all the views
  //! of the visualiser.
  Standard_EXPORT virtual   void Erase() ;
  
  //! Highlights the structure <me> in all the
  //! views of the visualiser, using the following methods:
  //!
  //! TOHM_COLOR		= drawn in the highlight color
  //! (default white)
  //! TOHM_BLINK		= blinking
  //! TOHM_BOUNDBOX	= enclosed by the boundary box
  //! (default white)
  Standard_EXPORT   void Highlight (const Aspect_TypeOfHighlightMethod Method) ;
  
  //! Suppress the structure <me>.
  //! It will be erased at the next screen update.
  //! Warning: No more graphic operations in <me> after this call.
  //! Category: Methods to modify the class definition
  Standard_EXPORT   void Remove() ;
  
  //! Computes axis-aligned bounding box of a structure.
  //! Category: Methods to modify the class definition
  Standard_EXPORT   void CalculateBoundBox() ;
  
  //! Modifies the highlight color for the Highlight method
  //! with the highlight method TOHM_COLOR or TOHM_BOUNDBOX.
  Standard_EXPORT   void SetHighlightColor (const Quantity_Color& AColor) ;
  
  //! If <theToSet> is Standard_True then <me> is infinite and
  //! the MinMaxValues method method return :
  //! theXMin = theYMin = theZMin = RealFirst().
  //! theXMax = theYMax = theZMax = RealLast().
  //! By default, <me> is not infinite but empty.
  Standard_EXPORT   void SetInfiniteState (const Standard_Boolean theToSet) ;
  
  //! Modifies the order of displaying the structure.
  //! Values are between 0 and 10.
  //! Structures are drawn according to their display priorities
  //! in ascending order.
  //! A structure of priority 10 is displayed the last and appears over the others.
  //! The default value is 5.
  //! Category: Methods to modify the class definition
  //! Warning: If <me> is displayed then the SetDisplayPriority
  //! method erase <me> and display <me> with the
  //! new priority.
  //! Raises PriorityDefinitionError if <Priority> is
  //! greater than 10 or a negative value.
  Standard_EXPORT   void SetDisplayPriority (const Standard_Integer Priority) ;
  
  //! Reset the current priority of the structure to the
  //! previous priority.
  //! Category: Methods to modify the class definition
  //! Warning: If <me> is displayed then the SetDisplayPriority
  //! method erase <me> and display <me> with the
  //! previous priority.
  Standard_EXPORT   void ResetDisplayPriority() ;
  
  //! Set Z layer ID for the structure. The Z layer mechanism
  //! allows to display structures presented in higher layers in overlay
  //! of structures in lower layers by switching off z buffer depth
  //! test between layers
  Standard_EXPORT   void SetZLayer (const Standard_Integer theLayerId) ;
  
  //! Get Z layer ID of displayed structure. The method
  //! returns -1 if the structure has no ID (deleted from graphic driver).
  Standard_EXPORT   Standard_Integer GetZLayer()  const;
  
  //! Changes a sequence of clip planes slicing the structure on rendering.
  //! @param thePlanes [in] the set of clip planes.
  Standard_EXPORT   void SetClipPlanes (const Graphic3d_SequenceOfHClipPlane& thePlanes) ;
  
  //! Get clip planes slicing the structure on rendering.
  //! @return set of clip planes.
  Standard_EXPORT  const  Graphic3d_SequenceOfHClipPlane& GetClipPlanes()  const;
  
  //! Modifies the detectability indicator to Standard_True
  //! or Standard_False for the structure <me>.
  //! The default value at the definition of <me> is
  //! Standard_True.
  Standard_EXPORT   void SetPick (const Standard_Boolean AValue) ;
  
  //! Modifies the default attributes for lines
  //! in the structure <me>.
  Standard_EXPORT   void SetPrimitivesAspect (const Handle(Graphic3d_AspectLine3d)& CTX) ;
  
  //! Modifies the default attributes for faces
  //! in the structure <me>.
  Standard_EXPORT   void SetPrimitivesAspect (const Handle(Graphic3d_AspectFillArea3d)& CTX) ;
  
  //! Modifies the default attributes for text
  //! in the structure <me>.
  Standard_EXPORT   void SetPrimitivesAspect (const Handle(Graphic3d_AspectText3d)& CTX) ;
  
  //! Modifies the default attributes for markers
  //! in the structure <me>.
  Standard_EXPORT   void SetPrimitivesAspect (const Handle(Graphic3d_AspectMarker3d)& CTX) ;
  
  //! Modifies the visibility indicator to Standard_True or
  //! Standard_False for the structure <me>.
  //! The default value at the definition of <me> is
  //! Standard_True.
  Standard_EXPORT   void SetVisible (const Standard_Boolean AValue) ;
  
  //! Modifies the visualisation mode for the structure <me>.
  Standard_EXPORT virtual   void SetVisual (const Graphic3d_TypeOfStructure AVisual) ;
  
  //! Modifies the minimum and maximum zoom coefficients
  //! for the structure <me>.
  //! The default value at the definition of <me> is unlimited.
  //! Category: Methods to modify the class definition
  //! Warning: Raises StructureDefinitionError if <LimitInf> is
  //! greater than <LimitSup> or if <LimitInf> or
  //! <LimitSup> is a negative value.
  Standard_EXPORT   void SetZoomLimit (const Standard_Real LimitInf, const Standard_Real LimitSup) ;
  
  //! marks the structure <me> representing wired structure needed for
  //! highlight only so it won't be added to BVH tree.
  //! Category: Methods to modify the class definition
  Standard_EXPORT   void SetIsForHighlight (const Standard_Boolean isForHighlight) ;
  
  //! Suppresses the highlight for the structure <me>
  //! in all the views of the visualiser.
  Standard_EXPORT   void UnHighlight() ;
  
  Standard_EXPORT virtual   void Compute() ;
  
  //! Returns the new Structure defined for the new visualization
  Standard_EXPORT virtual   Handle(Graphic3d_Structure) Compute (const Handle(Graphic3d_DataStructureManager)& aProjector) ;
  
  //! Returns the new Structure defined for the new visualization
  Standard_EXPORT virtual   Handle(Graphic3d_Structure) Compute (const Handle(Graphic3d_DataStructureManager)& aProjector, const TColStd_Array2OfReal& AMatrix) ;
  
  //! Returns the new Structure defined for the new visualization
  Standard_EXPORT virtual   void Compute (const Handle(Graphic3d_DataStructureManager)& aProjector, Handle(Graphic3d_Structure)& aStructure) ;
  
  //! Returns the new Structure defined for the new visualization
  Standard_EXPORT virtual   void Compute (const Handle(Graphic3d_DataStructureManager)& aProjector, const TColStd_Array2OfReal& AMatrix, Handle(Graphic3d_Structure)& aStructure) ;
  
  //! Forces a new construction of the structure <me>
  //! if <me> is displayed and TOS_COMPUTED.
  Standard_EXPORT   void ReCompute() ;
  
  //! Forces a new construction of the structure <me>
  //! if <me> is displayed in <aProjetor> and TOS_COMPUTED.
  Standard_EXPORT   void ReCompute (const Handle(Graphic3d_DataStructureManager)& aProjector) ;
  
  //! Returns Standard_True if the structure <me> contains
  //! Polygons, Triangles or Quadrangles.
  Standard_EXPORT   Standard_Boolean ContainsFacet()  const;
  
  //! Returns the values of the current default attributes.
  Standard_EXPORT   Handle(Graphic3d_AspectFillArea3d) FillArea3dAspect()  const;
  
  //! Returns the groups sequence included in the structure <me> (internal storage).
  Standard_EXPORT  const  Graphic3d_SequenceOfGroup& Groups()  const;
  
  //! Returns the current number of groups in the
  //! structure <me>.
  Standard_EXPORT   Standard_Integer NumberOfGroups()  const;
  
  //! Append new group to this structure.
  Standard_EXPORT   Handle(Graphic3d_Group) NewGroup() ;
  
  //! Returns the highlight color for the Highlight method
  //! with the highlight method TOHM_COLOR or TOHM_BOUNDBOX.
  Standard_EXPORT  const  Quantity_Color& HighlightColor()  const;
  
  //! Returns Standard_True if the structure <me> is deleted.
  //! <me> is deleted after the call Remove (me).
  Standard_EXPORT   Standard_Boolean IsDeleted()  const;
  
  //! Returns the display indicator for the structure <me>.
  Standard_EXPORT virtual   Standard_Boolean IsDisplayed()  const;
  
  //! Returns Standard_True if the structure <me> is empty.
  //! Warning: A structure is empty if :
  //! it do not have group or all the groups are empties
  //! and it do not have descendant or all the descendants
  //! are empties.
  Standard_EXPORT   Standard_Boolean IsEmpty()  const;
  
  //! Returns Standard_True if the structure <me> is infinite.
  Standard_EXPORT   Standard_Boolean IsInfinite()  const;
  
  //! Returns the highlight indicator for the structure <me>.
  Standard_EXPORT virtual   Standard_Boolean IsHighlighted()  const;
  
  //! Returns the detectability indicator for the structure <me>.
  Standard_EXPORT   Standard_Boolean IsSelectable()  const;
  
  //! Returns Standard_True if the structure <me> is rotated.
  //! <=> The transformation != Identity, != Scale, != Translation.
  Standard_EXPORT   Standard_Boolean IsRotated()  const;
  
  //! Returns Standard_True if the structure <me> is transformed.
  //! <=> The transformation != Identity.
  Standard_EXPORT   Standard_Boolean IsTransformed()  const;
  
  //! Returns the visibility indicator for the structure <me>.
  Standard_EXPORT   Standard_Boolean IsVisible()  const;
  
  //! Returns the values of the current default attributes.
  Standard_EXPORT   Handle(Graphic3d_AspectLine3d) Line3dAspect()  const;
  
  //! Returns the current group of graphic attributes used
  //! for 3d marker primitives.
  Standard_EXPORT   Handle(Graphic3d_AspectMarker3d) Marker3dAspect()  const;
  
  //! Returns the coordinates of the boundary box of the structure <me>.
  //! If <theToIgnoreInfiniteFlag> is TRUE, the method returns actual graphical
  //! boundaries of the Graphic3d_Group components. Otherwise, the
  //! method returns boundaries taking into account infinite state
  //! of the structure. This approach generally used for application
  //! specific fit operation (e.g. fitting the model into screen,
  //! not taking into accout infinite helper elements).
  //! Warning: If the structure <me> is empty then the empty box is returned,
  //! If the structure <me> is infinite then the whole box is returned.
  Standard_EXPORT   Bnd_Box MinMaxValues (const Standard_Boolean theToIgnoreInfiniteFlag = Standard_False)  const;
  
  //! Returns the current values of the default attributes.
  Standard_EXPORT   void PrimitivesAspect (Handle(Graphic3d_AspectLine3d)& CTXL, Handle(Graphic3d_AspectText3d)& CTXT, Handle(Graphic3d_AspectMarker3d)& CTXM, Handle(Graphic3d_AspectFillArea3d)& CTXF)  const;
  
  //! Returns the values of the current default attributes.
  Standard_EXPORT   Handle(Graphic3d_AspectText3d) Text3dAspect()  const;
  
  //! Returns the visualisation mode for the structure <me>.
  Standard_EXPORT   Graphic3d_TypeOfStructure Visual()  const;
  
  //! Returns Standard_True if the connection is possible between
  //! <AStructure1> and <AStructure2> without a creation
  //! of a cycle.
  //!
  //! It's not possible to call the method
  //! AStructure1->Connect (AStructure2, TypeOfConnection)
  //! if
  //! - the set of all ancestors of <AStructure1> contains
  //! <AStructure1> and if the
  //! TypeOfConnection == TOC_DESCENDANT
  //! - the set of all descendants of <AStructure1> contains
  //! <AStructure2> and if the
  //! TypeOfConnection == TOC_ANCESTOR
  Standard_EXPORT static   Standard_Boolean AcceptConnection (const Handle(Graphic3d_Structure)& AStructure1, const Handle(Graphic3d_Structure)& AStructure2, const Graphic3d_TypeOfConnection AType) ;
  
  //! Returns the group of structures to which <me> is connected.
  Standard_EXPORT   void Ancestors (Graphic3d_MapOfStructure& SG)  const;
  
  //! If Atype is TOC_DESCENDANT then add <AStructure>
  //! as a child structure of  <me>.
  //! If Atype is TOC_ANCESTOR then add <AStructure>
  //! as a parent structure of <me>.
  //! The connection propagates Display, Highlight, Erase,
  //! Remove, and stacks the transformations.
  //! No connection if the graph of the structures
  //! contains a cycle and <WithCheck> is Standard_True;
  Standard_EXPORT   void Connect (const Handle(Graphic3d_Structure)& AStructure, const Graphic3d_TypeOfConnection AType, const Standard_Boolean WithCheck = Standard_False) ;
  
  //! Returns the group of structures connected to <me>.
  Standard_EXPORT   void Descendants (Graphic3d_MapOfStructure& SG)  const;
  
  //! Suppress the connection between <AStructure> and <me>.
  Standard_EXPORT   void Disconnect (const Handle(Graphic3d_Structure)& AStructure) ;
  
  //! If Atype is TOC_DESCENDANT then suppress all
  //! the connections with the child structures of <me>.
  //! If Atype is TOC_ANCESTOR then suppress all
  //! the connections with the parent structures of <me>.
  Standard_EXPORT   void DisconnectAll (const Graphic3d_TypeOfConnection AType) ;
  
  //! Returns <ASet> the group of structures :
  //! - directly or indirectly connected to <AStructure> if the
  //! TypeOfConnection == TOC_DESCENDANT
  //! - to which <AStructure> is directly or indirectly connected
  //! if the TypeOfConnection == TOC_ANCESTOR
  Standard_EXPORT static   void Network (const Handle(Graphic3d_Structure)& AStructure, const Graphic3d_TypeOfConnection AType, Graphic3d_MapOfStructure& ASet) ;
  
  Standard_EXPORT   void SetOwner (const Standard_Address Owner) ;
  
  Standard_EXPORT   Standard_Address Owner()  const;
  
  Standard_EXPORT   void SetHLRValidation (const Standard_Boolean AFlag) ;
  
  Standard_EXPORT   Standard_Boolean HLRValidation()  const;
  
  //! Returns the type of composition applied to matrices
  //! of transformation of <me>.
  Standard_EXPORT   Graphic3d_TypeOfComposition Composition()  const;
  
  //! Modifies the current local modelling transformation
  //! in the structure <me>.
  //!
  //! It is defined as a 4*4 real matrix.
  //!
  //! -------------------
  //! | a11 a12 a13  t1 |
  //! | a21 a22 a23  t2 |
  //! | a31 a32 a33  t3 |
  //! |  0   0   0   1  |
  //! -------------------
  //!
  //! TypeOfComposition : TOC_REPLACE
  //! TOC_POSTCONCATENATE
  //!
  //! Then the modified Local Modelling Transformation is composed
  //! with the current Global Modelling Transformation to create a
  //! new Composite Modelling Transformation.
  //!
  //! The compose type specifies the role of the current local
  //! modelling transformation (L) in composing the new value for
  //! the current local modelling transformation (L'), which is
  //! then combined with the current global modelling transforma-
  //! tion (G) to calculate the new composite modelling transfor-
  //! mation (C).
  //!
  //! TOC_REPLACE
  //! The transformation matrix (T) replaces the value of
  //! current local modelling transformation (L).
  //!
  //! L' <- T
  //! C <- G x L'
  //!
  //! TOC_POSTCONCATENATE
  //! The current local modelling transformation (L) is multiplied
  //! by the transformation matrix (T):
  //!
  //! L' <- T x L
  //! C <- G x L'
  //!
  //! Category: Methods to manage the structure transformation
  //! Warning: Raises TransformError if the matrix is not a 4x4 matrix.
  Standard_EXPORT   void SetTransform (const TColStd_Array2OfReal& AMatrix, const Graphic3d_TypeOfComposition AType) ;
  
  //! Returns the transformation associated with
  //! the structure <me>.
  Standard_EXPORT   void Transform (TColStd_Array2OfReal& AMatrix)  const;
  
  //! Modifies the current modelling transform persistence (pan, zoom or rotate)
  Standard_EXPORT   void SetTransformPersistence (const Graphic3d_TransModeFlags& AFlag, const gp_Pnt& APoint) ;
  
  Standard_EXPORT   void SetTransformPersistence (const Graphic3d_TransModeFlags& AFlag) ;
  
  //! Get the current modelling transform persistence (pan, zoom or rotate)
  Standard_EXPORT   Graphic3d_TransModeFlags TransformPersistenceMode()  const;
  
  //! Get the current point of relative modelling transform persistence
  Standard_EXPORT   gp_Pnt TransformPersistencePoint()  const;
  
  //! Sets if the structure location has mutable nature (content or location will be changed regularly).
  Standard_EXPORT   void SetMutable (const Standard_Boolean theIsMutable) ;
  
  //! Returns true if structure has mutable nature (content or location are be changed regularly).
  //! Mutable structure will be managed in different way than static onces.
  Standard_EXPORT   Standard_Boolean IsMutable()  const;
  
  Standard_EXPORT   Graphic3d_TypeOfStructure ComputeVisual()  const;
  
  //! Clears the structure <me>.
  Standard_EXPORT   void GraphicClear (const Standard_Boolean WithDestruction) ;
  
  Standard_EXPORT   void GraphicConnect (const Handle(Graphic3d_Structure)& ADaughter) ;
  
  Standard_EXPORT   void GraphicDisconnect (const Handle(Graphic3d_Structure)& ADaughter) ;
  
  //! Highlights the structure <me>.
  Standard_EXPORT   void GraphicHighlight (const Aspect_TypeOfHighlightMethod Method) ;
  
  Standard_EXPORT   void GraphicTransform (const TColStd_Array2OfReal& AMatrix) ;
  
  //! Suppress the highlight for the structure <me>.
  Standard_EXPORT   void GraphicUnHighlight() ;
  
  //! Returns the identification number of the structure <me>.
  Standard_EXPORT   Standard_Integer Identification()  const;
  
  //! Prints informations about the network associated
  //! with the structure <AStructure>.
  Standard_EXPORT static   void PrintNetwork (const Handle(Graphic3d_Structure)& AStructure, const Graphic3d_TypeOfConnection AType) ;
  
  //! Suppress the adress <APtr> in the list
  //! of descendants or in the list of ancestors.
  Standard_EXPORT   void Remove (const Standard_Address APtr, const Graphic3d_TypeOfConnection AType) ;
  
  Standard_EXPORT   void SetComputeVisual (const Graphic3d_TypeOfStructure AVisual) ;
  
  //! Transforms <X>, <Y>, <Z> with the transformation <ATrsf>.
  Standard_EXPORT static   void Transforms (const TColStd_Array2OfReal& ATrsf, const Standard_Real X, const Standard_Real Y, const Standard_Real Z, Standard_Real& NewX, Standard_Real& NewY, Standard_Real& NewZ) ;
  
  //! Transforms <Coord> with the transformation <ATrsf>.
  Standard_EXPORT static   Graphic3d_Vector Transforms (const TColStd_Array2OfReal& ATrsf, const Graphic3d_Vector& Coord) ;
  
  //! Transforms <Coord> with the transformation <ATrsf>.
  Standard_EXPORT static   Graphic3d_Vertex Transforms (const TColStd_Array2OfReal& ATrsf, const Graphic3d_Vertex& Coord) ;
  
  //! Returns the low-level structure
     const  Graphic3d_CStructure_Handle& CStructure()  const;

friend class Graphic3d_Group;


  DEFINE_STANDARD_RTTI(Graphic3d_Structure)

protected:

  
  //! Transforms boundaries with <theTrsf> transformation.
  Standard_EXPORT static   void TransformBoundaries (const TColStd_Array2OfReal& theTrsf, Standard_Real& theXMin, Standard_Real& theYMin, Standard_Real& theZMin, Standard_Real& theXMax, Standard_Real& theYMax, Standard_Real& theZMax) ;

  Graphic3d_StructureManagerPtr myStructureManager;
  Graphic3d_StructureManagerPtr myFirstStructureManager;
  Graphic3d_TypeOfStructure myComputeVisual;


private: 

  
  //! Suppress in the structure <me>, the group theGroup.
  //! It will be erased at the next screen update.
  Standard_EXPORT   void Remove (const Handle(Graphic3d_Group)& theGroup) ;
  
  //! Manages the number of groups in the structure <me>
  //! which contains facet.
  //! Polygons, Triangles or Quadrangles.
  //! <ADelta> = +1 or -1
  Standard_EXPORT   void GroupsWithFacet (const Standard_Integer ADelta) ;
  
  //! Returns the extreme coordinates found in the structure <me> without transformation applied.
  Standard_EXPORT   Graphic3d_BndBox4f minMaxCoord (const Standard_Boolean theToIgnoreInfiniteFlag = Standard_False)  const;
  
  //! Gets untransformed bounding box from structure.
  Standard_EXPORT   void getBox (Graphic3d_BndBox4d& theBox, const Standard_Boolean theToIgnoreInfiniteFlag = Standard_False)  const;
  
  //! Adds transformed (with myCStructure->Transformation) bounding box of structure to theBox.
  Standard_EXPORT   void addTransformed (Graphic3d_BndBox4d& theBox, const Standard_Boolean theToIgnoreInfiniteFlag = Standard_False)  const;
  
  //! Returns the manager to which <me> is associated.
  Standard_EXPORT   Handle(Graphic3d_StructureManager) StructureManager()  const;
  
  //! Calls the Update method of the StructureManager which
  //! contains the Structure <me>.
  Standard_EXPORT   void Update()  const;
  
  //! Updates the c structure associated to <me>.
  Standard_EXPORT   void UpdateStructure (const Handle(Graphic3d_AspectLine3d)& CTXL, const Handle(Graphic3d_AspectText3d)& CTXT, const Handle(Graphic3d_AspectMarker3d)& CTXM, const Handle(Graphic3d_AspectFillArea3d)& CTXF) ;

  Graphic3d_CStructure_Handle myCStructure;
  TColStd_SequenceOfAddress myAncestors;
  TColStd_SequenceOfAddress myDescendants;
  Quantity_Color myHighlightColor;
  Aspect_TypeOfHighlightMethod myHighlightMethod;
  Standard_Address myOwner;
  Graphic3d_TypeOfStructure myVisual;


};


#include <Graphic3d_Structure.lxx>





#endif // _Graphic3d_Structure_HeaderFile