0025026: Visualization, Graphic3d_Plotter - remove unused class
[occt.git] / src / Graphic3d / Graphic3d_Structure.cdl
1 -- Created on: 1991-06-12
2 -- Created by: NW,JPB,CAL
3 -- Copyright (c) 1991-1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
5 --
6 -- This file is part of Open CASCADE Technology software library.
7 --
8 -- This library is free software; you can redistribute it and/or modify it under
9 -- the terms of the GNU Lesser General Public License version 2.1 as published
10 -- by the Free Software Foundation, with special exception defined in the file
11 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 -- distribution for complete text of the license and disclaimer of any warranty.
13 --
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
16
17 --              11/97 ; CAL : gestion du GraphicClear
18 --              11/97 ; CAL : ajout pointer StructPtr
19 --              11/97 ; CAL : amelioration de l'effacement SetManager
20 --              01/98 ; CAL : gestion du HLRValidation
21 --              05/98 ; CAL : gestion du GraphicConnect et Disconnect
22 --              02/00 ; GG  : Made Transform() methode not mutable.
23 --              31/05/01 ; GG : Add ResetDisplayPriority() method
24
25 class Structure from Graphic3d inherits TShared
26
27         ---Version:
28
29         ---Purpose: This class allows the definition a graphic object.
30         --          This graphic structure can be displayed,
31         --          erased, or highlighted.
32         --          This graphic structure can be connected with
33         --          another graphic structure.
34         --  Keywords: Structure, StructureManager, Display, Erase, Highlight,
35         --           UnHighlight, Visible, Priority, Selectable, Visible,
36         --           Visual, Connection, Ancestors, Descendants, Transformation
37
38         ---Warning:
39         ---References:
40
41 uses
42
43         Array2OfReal            from TColStd,
44         SequenceOfAddress       from TColStd,
45
46         Color                   from Quantity,
47
48         GenId                   from Aspect,
49         TypeOfHighlightMethod   from Aspect,
50
51         DataStructureManager    from Graphic3d,
52         AspectFillArea3d        from Graphic3d,
53         AspectLine3d            from Graphic3d,
54         AspectMarker3d          from Graphic3d,
55         AspectText3d            from Graphic3d,
56         CStructure          from Graphic3d,
57         CStructure_Handle   from Graphic3d,
58         GraphicDriver           from Graphic3d,
59         Group                   from Graphic3d,
60         SequenceOfGroup         from Graphic3d,
61         SequenceOfStructure     from Graphic3d,
62         HSequenceOfStructure    from Graphic3d,
63         MapOfStructure          from Graphic3d,
64         StructureManager        from Graphic3d,
65         StructureManagerPtr from Graphic3d,
66         TypeOfComposition       from Graphic3d,
67         TypeOfConnection        from Graphic3d,
68         TypeOfPrimitive         from Graphic3d,
69         TypeOfStructure         from Graphic3d,
70         Vector                  from Graphic3d,
71         Vertex                  from Graphic3d,
72         TransModeFlags          from Graphic3d,
73         Pnt                     from gp,
74     SequenceOfHClipPlane from Graphic3d
75
76 raises
77
78         PriorityDefinitionError         from Graphic3d,
79         StructureDefinitionError        from Graphic3d,
80         TransformError                  from Graphic3d
81
82 is
83
84         ------------------------
85         -- Category: Constructor
86         ------------------------
87
88   Create (theManager : StructureManager from Graphic3d)
89   returns Structure from Graphic3d;
90   ---Level: Public
91   ---Purpose: Creates a graphic object in the manager theManager.
92   -- It will appear in all the views of the visualiser.
93   -- Warning: The default values AspectLine, AspectFillArea, AspectText and AspectMarker are NOT applied to the structure.
94   -- The structure is not displayed when it is created.
95
96   Create (theManager : StructureManager from Graphic3d;
97           thePrs     : Structure        from Graphic3d)
98   returns Structure from Graphic3d;
99   ---Level: Public
100   ---Purpose: Creates a shadow link to existing graphic object.
101
102         ---------------------------------------------------
103         -- Category: Methods to modify the class definition
104         ---------------------------------------------------
105
106         --------------------------------------------------------
107         -- Summary of Display Priorities                      --
108         --                                                    --
109         -- Structure display priorities  control the order in --
110         -- which structures are redrawn.                      --
111         --                                                    --
112         -- When  you  display  a structure, you  specify  its --
113         -- priority.  The  lower  the  value, the  lower  the --
114         -- display priority. When the display is regenerated, --
115         -- the structures  with the lowest priority are drawn --
116         -- first.                                             --
117         -- For  structures  with the  same display  priority, --
118         -- the  order in which they were displayed determines --
119         -- determines the drawing order.                      --
120         --                                                    --
121         -- CAS.CADE supports 11 structure display priorities, --
122         -- 0 to 10.                                           --
123         --------------------------------------------------------
124
125         Clear ( me              : mutable;
126                 WithDestruction : Boolean from Standard = Standard_True )
127                 is virtual;
128         ---Level: Public
129         ---Purpose: if WithDestruction == Standard_True then
130         --              suppress all the groups of primitives in the structure.
131         --              and it is mandatory to create a new group in <me>.
132         --          if WithDestruction == Standard_False then
133         --              clears all the groups of primitives in the structure.
134         --              and all the groups are conserved and empty.
135         --          They will be erased at the next screen update.
136         --          The structure itself is conserved.
137         --          The transformation and the attributes of <me> are conserved.
138         --          The childs of <me> are conserved.
139         ---Category: Methods to modify the class definition
140
141         Destroy ( me    : mutable )
142                 is virtual;
143         ---Level: Public
144         ---Purpose: Suppresses the structure <me>.
145         --          It will be erased at the next screen update.
146         ---Category: Methods to modify the class definition
147         ---C++: alias ~
148
149         Display ( me    : mutable )
150                 is virtual;
151         ---Level: Public
152         ---Purpose: Displays the structure <me> in all the views of
153         --          the visualiser.
154         ---Category: Methods to modify the class definition
155
156         Display ( me            : mutable;
157                   Priority      : Integer from Standard )
158         ---Level: Public
159         ---Purpose: Displays the structure <me> in all the views of
160         --          the visualiser, while modifying its current priority.
161         --          Note: Display Priorities
162         --          Structure display priorities control the order in which
163         --          structures are redrawn.   When you display a
164         --          structure, you specify its priority. The lower the value,
165         --          the lower the display priority. When the display is
166         --          regenerated, the structures with the lowest priority
167         --          are drawn first. For structures with the same display
168         --          priority, the order in which they were displayed
169         --          determines the drawing order. Open CASCADE
170         --          supports 11 structure display priorities, 0 to 10.
171         --          Warning: Raises PriorityDefinitionError if <Priority> is
172         --          greater than 10 or a negative value.
173         raises PriorityDefinitionError from Graphic3d is static;
174
175         DisplayPriority ( me )
176                 returns Integer from Standard
177                 is static;
178         ---Level: Public
179         ---Purpose: Returns the current display priority for the
180         --          structure <me>.
181         ---Category: Methods to modify the class definition
182
183         Erase ( me      : mutable )
184                 is virtual;
185         ---Level: Public
186         ---Purpose: Erases the structure <me> in all the views
187         --          of the visualiser.
188         ---Category: Methods to modify the class definition
189
190         Highlight ( me          : mutable;
191                     Method      : TypeOfHighlightMethod from Aspect )
192                 is static;
193         ---Level: Public
194         ---Purpose: Highlights the structure <me> in all the
195         --          views of the visualiser, using the following methods:
196         --
197         --   TOHM_COLOR         = drawn in the highlight color
198         --                                (default white)
199         --          TOHM_BLINK          = blinking
200         --   TOHM_BOUNDBOX      = enclosed by the boundary box
201         --                                (default white)
202         --
203         ---Category: Methods to modify the class definition
204
205         Remove ( me     : mutable )
206                 is static;
207         ---Level: Public
208         ---Purpose: Suppress the structure <me>.
209         --          It will be erased at the next screen update.
210         --  Warning: No more graphic operations in <me> after this call.
211         --  Category: Methods to modify the class definition
212
213         SetHighlightColor ( me          : mutable;
214                             AColor      : Color from Quantity )
215                 is static;
216         ---Level: Public
217         ---Purpose: Modifies the highlight color for the Highlight method
218         --          with the highlight method TOHM_COLOR or TOHM_BOUNDBOX.
219         ---Category: Methods to modify the class definition
220
221     SetInfiniteState (me : mutable; theToSet : Boolean from Standard) is static;
222     ---Level: Internal
223     ---Purpose: If <theToSet> is Standard_True then <me> is infinite and
224     --          the MinMaxValues method method return :
225     --          theXMin = theYMin = theZMin = RealFirst().
226     --          theXMax = theYMax = theZMax = RealLast().
227     --          By default, <me> is not infinite but empty.
228     ---Category: Methods to modify the class definition
229
230         SetDisplayPriority ( me         : mutable;
231                              Priority   : Integer from Standard )
232         ---Level: Public
233         ---Purpose: Modifies the order of displaying the structure.
234         --          Values are between 0 and 10.
235         --          Structures are drawn according to their display priorities
236         --          in ascending order.
237         --          A structure of priority 10 is displayed the last and appears over the others.
238         --          The default value is 5.
239         --  Category: Methods to modify the class definition
240         --  Warning: If <me> is displayed then the SetDisplayPriority
241         --          method erase <me> and display <me> with the
242         --          new priority.
243         --          Raises PriorityDefinitionError if <Priority> is
244         --          greater than 10 or a negative value.
245         raises PriorityDefinitionError from Graphic3d is static;
246
247         ResetDisplayPriority ( me               : mutable)
248                 is static;
249         ---Level: Public
250         ---Purpose: Reset the current priority of the structure to the
251         --          previous priority.
252         --  Category: Methods to modify the class definition
253         --  Warning: If <me> is displayed then the SetDisplayPriority
254         --          method erase <me> and display <me> with the
255         --          previous priority.
256         
257         SetZLayer ( me         : mutable;
258                     theLayerId : Integer from Standard )
259            is static;
260         ---Purpose: Set Z layer ID for the structure. The Z layer mechanism
261         -- allows to display structures presented in higher layers in overlay
262         -- of structures in lower layers by switching off z buffer depth
263         -- test between layers
264
265         GetZLayer ( me )
266           returns Integer from Standard is static;
267         ---Purpose: Get Z layer ID of displayed structure. The method
268         -- returns -1 if the structure has no ID (deleted from graphic driver).
269
270     SetClipPlanes (me : mutable; thePlanes : SequenceOfHClipPlane from Graphic3d) is static;
271     ---Purpose: Changes a sequence of clip planes slicing the structure on rendering.
272     -- @param thePlanes [in] the set of clip planes.
273
274     GetClipPlanes (me) returns SequenceOfHClipPlane from Graphic3d;
275     ---C++: return const&
276     ---Purpose: Get clip planes slicing the structure on rendering.
277     -- @return set of clip planes.
278
279         SetPick ( me            : mutable;
280                   AValue        : Boolean from Standard )
281                 is static;
282         ---Level: Public
283         ---Purpose: Modifies the detectability indicator to Standard_True
284         --          or Standard_False for the structure <me>.
285         --          The default value at the definition of <me> is
286         --          Standard_True.
287         ---Category: Methods to modify the class definition
288
289         SetPrimitivesAspect ( me        : mutable;
290                               CTX       : AspectLine3d from Graphic3d )
291                 is static;
292         ---Level: Public
293         ---Purpose: Modifies the default attributes for lines
294         --          in the structure <me>.
295         ---Category: Methods to modify the class definition
296
297         SetPrimitivesAspect ( me        : mutable;
298                               CTX       : AspectFillArea3d from Graphic3d )
299                 is static;
300         ---Level: Public
301         ---Purpose: Modifies the default attributes for faces
302         --          in the structure <me>.
303         ---Category: Methods to modify the class definition
304
305         SetPrimitivesAspect ( me        : mutable;
306                               CTX       : AspectText3d from Graphic3d )
307                 is static;
308         ---Level: Public
309         ---Purpose: Modifies the default attributes for text
310         --          in the structure <me>.
311         ---Category: Methods to modify the class definition
312
313         SetPrimitivesAspect ( me        : mutable;
314                               CTX       : AspectMarker3d from Graphic3d )
315                 is static;
316         ---Level: Public
317         ---Purpose: Modifies the default attributes for markers
318         --          in the structure <me>.
319         ---Category: Methods to modify the class definition
320
321         SetVisible ( me         : mutable;
322                      AValue     : Boolean from Standard )
323                 is static;
324         ---Level: Public
325         ---Purpose: Modifies the visibility indicator to Standard_True or
326         --          Standard_False for the structure <me>.
327         --          The default value at the definition of <me> is
328         --          Standard_True.
329         ---Category: Methods to modify the class definition
330
331         SetVisual ( me          : mutable;
332                     AVisual     : TypeOfStructure from Graphic3d )
333                 is virtual;
334         ---Level: Public
335         ---Purpose: Modifies the visualisation mode for the structure <me>.
336         ---Warning: It is not possible to display a structure with
337         --          an incompatible display mode.
338         --          If the display mode is different from the current one,
339         --          the structure is erased.
340         --
341         --          TOS_WIREFRAME for a wireframe visualisation
342         --          TOS_SHADING for a shaded visualisation
343         --          TOS_ALL for all visualisations
344         --          TOS_COMPUTED for a computed visualisation
345         --          The default value is TOS_ALL
346         --
347         ---Category: Methods to modify the class definition
348
349         SetZoomLimit ( me                       : mutable;
350                        LimitInf, LimitSup       : Real from Standard )
351         ---Level: Internal
352         ---Purpose: Modifies the minimum and maximum zoom coefficients
353         --          for the structure <me>.
354         --          The default value at the definition of <me> is unlimited.
355         --  Category: Methods to modify the class definition
356         --  Warning: Raises StructureDefinitionError if <LimitInf> is
357         --          greater than <LimitSup> or if <LimitInf> or
358         --          <LimitSup> is a negative value.
359         raises StructureDefinitionError from Graphic3d is static;
360
361         UnHighlight ( me        : mutable )
362                 is static;
363         ---Level: Public
364         ---Purpose: Suppresses the highlight for the structure <me>
365         --           in all the views of the visualiser.
366         ---Category: Methods to modify the class definition
367
368         ----------------------------
369         -- Category: Compute methods
370         ----------------------------
371
372   Compute (me: mutable)
373   is virtual;
374   ---Level: Advanced
375   ---Category: Methods to modify the class definition
376
377         Compute ( me    : mutable;
378                   aProjector    : DataStructureManager from Graphic3d )
379                 returns Structure from Graphic3d is virtual;
380         ---Level: Advanced
381         ---Purpose: Returns the new Structure defined for the new visualization
382         ---Category: Methods to modify the class definition
383
384         Compute ( me    : mutable;
385                   aProjector    : DataStructureManager from Graphic3d;
386                   AMatrix       : Array2OfReal from TColStd )
387                 returns Structure from Graphic3d is virtual;
388         ---Level: Advanced
389         ---Purpose: Returns the new Structure defined for the new visualization
390         ---Category: Methods to modify the class definition
391
392         Compute ( me    : mutable;
393                   aProjector    : DataStructureManager from Graphic3d;
394                   aStructure    : in out Structure from Graphic3d )
395                 is virtual;
396         ---Level: Advanced
397         ---Purpose: Returns the new Structure defined for the new visualization
398         ---Category: Methods to modify the class definition
399
400         Compute ( me    : mutable;
401                   aProjector    : DataStructureManager from Graphic3d;
402                   AMatrix       : Array2OfReal from TColStd;
403                   aStructure    : in out Structure from Graphic3d )
404                 is virtual;
405         ---Level: Advanced
406         ---Purpose: Returns the new Structure defined for the new visualization
407         ---Category: Methods to modify the class definition
408
409         ReCompute ( me  : mutable );
410         ---Level: Advanced
411         ---Purpose: Forces a new construction of the structure <me>
412         --          if <me> is displayed and TOS_COMPUTED.
413         ---Category: Methods to modify the class definition
414
415         ReCompute ( me          : mutable;
416                     aProjector  : DataStructureManager from Graphic3d );
417         ---Level: Advanced
418         ---Purpose: Forces a new construction of the structure <me>
419         --          if <me> is displayed in <aProjetor> and TOS_COMPUTED.
420         ---Category: Methods to modify the class definition
421
422         ----------------------------
423         -- Category: Inquire methods
424         ----------------------------
425
426         ContainsFacet ( me )
427                 returns Boolean from Standard
428                 is static;
429         ---Level: Public
430         ---Purpose: Returns Standard_True if the structure <me> contains
431         --          Polygons, Triangles or Quadrangles.
432         ---Category: Inquire methods
433
434         
435         FillArea3dAspect ( me )
436                 returns AspectFillArea3d from Graphic3d
437                 is static;
438         ---Level: Public
439         ---Purpose: Returns the values of the current default attributes.
440         ---Category: Inquire methods
441
442         Groups ( me )
443                 returns SequenceOfGroup from Graphic3d
444                 is static;
445         ---C++: return const &
446         ---Level: Internal
447         ---Purpose: Returns the groups sequence included in the structure <me> (internal storage).
448         ---Category: Inquire methods
449
450         NumberOfGroups ( me )
451                 returns Integer from Standard
452                 is static;
453         ---Level: Public
454         ---Purpose: Returns the current number of groups in the
455         --          structure <me>.
456         ---Category: Inquire methods
457
458   NewGroup ( me : mutable ) returns Group from Graphic3d
459   is static;
460   ---Level: Public
461   ---Purpose: Append new group to this structure.
462
463   Remove ( me : mutable;
464            theGroup : Group from Graphic3d )
465   is static private;
466   ---Purpose: Suppress in the structure <me>, the group theGroup.
467   -- It will be erased at the next screen update.
468
469         HighlightColor ( me )
470                 returns Color from Quantity
471                 is static;
472         ---C++: return const&
473         ---Level: Public
474         ---Purpose: Returns the highlight color for the Highlight method
475         --          with the highlight method TOHM_COLOR or TOHM_BOUNDBOX.
476         ---Category: Inquire methods
477
478         IsDeleted ( me )
479                 returns Boolean from Standard
480                 is static;
481         ---Level: Public
482         ---Purpose: Returns Standard_True if the structure <me> is deleted.
483         --          <me> is deleted after the call Remove (me).
484         ---Category: Inquire methods
485
486         IsDisplayed ( me )
487                 returns Boolean from Standard
488                 is virtual;
489         ---Level: Public
490         ---Purpose: Returns the display indicator for the structure <me>.
491         ---Category: Inquire methods
492
493         IsEmpty ( me )
494                 returns Boolean from Standard
495                 is static;
496         ---Level: Public
497         ---Purpose: Returns Standard_True if the structure <me> is empty.
498         --  Warning: A structure is empty if :
499         --              it do not have group or all the groups are empties
500         --              and it do not have descendant or all the descendants
501         --              are empties.
502         ---Category: Inquire methods
503
504         IsInfinite ( me )
505                 returns Boolean from Standard
506                 is static;
507         ---Level: Internal
508         ---Purpose: Returns Standard_True if the structure <me> is infinite.
509         ---Category: Inquire methods
510
511         IsHighlighted ( me )
512                 returns Boolean from Standard
513                 is virtual;
514         ---Level: Public
515         ---Purpose: Returns the highlight indicator for the structure <me>.
516         ---Category: Inquire methods
517
518         IsSelectable ( me )
519                 returns Boolean from Standard
520                 is static;
521         ---Level: Public
522         ---Purpose: Returns the detectability indicator for the structure <me>.
523         ---Category: Inquire methods
524
525         IsRotated ( me )
526                 returns Boolean from Standard
527                 is static;
528         ---Level: Public
529         ---Purpose: Returns Standard_True if the structure <me> is rotated.
530         --          <=> The transformation != Identity, != Scale, != Translation.
531         ---Category: Inquire methods
532
533         IsTransformed ( me )
534                 returns Boolean from Standard
535                 is static;
536         ---Level: Public
537         ---Purpose: Returns Standard_True if the structure <me> is transformed.
538         --          <=> The transformation != Identity.
539         ---Category: Inquire methods
540
541         IsVisible ( me )
542                 returns Boolean from Standard
543                 is static;
544         ---Level: Public
545         ---Purpose: Returns the visibility indicator for the structure <me>.
546         ---Category: Inquire methods
547
548         Line3dAspect ( me )
549                 returns AspectLine3d from Graphic3d
550                 is static;
551         ---Level: Public
552         ---Purpose: Returns the values of the current default attributes.
553         ---Category: Inquire methods
554
555         Marker3dAspect ( me )
556                 returns AspectMarker3d from Graphic3d
557                 is static;
558         ---Purpose: Returns the current group of graphic attributes used
559         -- for 3d marker primitives.
560
561     MinMaxValues (me;
562                   theXMin, theYMin, theZMin : out Real from Standard;
563                   theXMax, theYMax, theZMax : out Real from Standard;
564                   theToIgnoreInfiniteFlag   : Boolean from Standard = Standard_False)
565     is static;
566     ---Level: Public
567     ---Purpose: Returns the coordinates of the boundary box of the structure <me>.
568     --          If <theToIgnoreInfiniteFlag> is TRUE, the method returns actual graphical
569     --          boundaries of the Graphic3d_Group components. Otherwise, the
570     --          method returns boundaries taking into account infinite state
571     --          of the structure. This approach generally used for application
572     --          specific fit operation (e.g. fitting the model into screen,
573     --          not taking into accout infinite helper elements).
574     --          Warning: If the structure <me> is empty or infinite then :
575     --            theXMin = theYMin = theZMin = RealFirst ().
576     --            theXMax = theYMax = theZMax = RealLast ().
577     ---Category: Inquire methods
578
579         PrimitivesAspect ( me;
580                            CTXL : out AspectLine3d from Graphic3d;
581                            CTXT : out AspectText3d from Graphic3d;
582                            CTXM : out AspectMarker3d from Graphic3d;
583                            CTXF : out AspectFillArea3d from Graphic3d )
584                 is static;
585         ---Level: Public
586         ---Purpose: Returns the current values of the default attributes.
587         ---Category: Inquire methods
588
589         Text3dAspect ( me )
590                 returns AspectText3d from Graphic3d
591                 is static;
592         ---Level: Public
593         ---Purpose: Returns the values of the current default attributes.
594         ---Category: Inquire methods
595
596         Visual ( me )
597                 returns TypeOfStructure from Graphic3d
598                 is static;
599         ---Level: Public
600         ---Purpose: Returns the visualisation mode for the structure <me>.
601         ---Category: Inquire methods
602
603         ----------------------------------------------------
604         -- Category: Methods to manage the structure network
605         ----------------------------------------------------
606
607         -----------------------------------------------------
608         -- Summary of Structure Hierarchies                --
609         --                                                 --
610         -- The root  is the top  of a  structure hierarchy --
611         -- or structure network.                           --
612         --                                                 --
613         -- The attributes of a parent structure are passed --
614         -- passed to its descendants.                      --
615         --                                                 --
616         -- The  attributes  of the  descendant  structures --
617         -- don't affect the parent.                        --
618         --                                                 --
619         -- Recursive structure networks are not supported. --
620         -----------------------------------------------------
621
622         AcceptConnection ( myclass;
623                            AStructure1  : Structure from Graphic3d;
624                            AStructure2  : Structure from Graphic3d;
625                            AType        : TypeOfConnection from Graphic3d )
626                 returns Boolean from Standard;
627         ---Level: Internal
628         ---Purpose: Returns Standard_True if the connection is possible between
629         --          <AStructure1> and <AStructure2> without a creation
630         --          of a cycle.
631         --
632         --          It's not possible to call the method
633         --             AStructure1->Connect (AStructure2, TypeOfConnection)
634         --          if
635         --          - the set of all ancestors of <AStructure1> contains
636         --            <AStructure1> and if the
637         --            TypeOfConnection == TOC_DESCENDANT
638         --          - the set of all descendants of <AStructure1> contains
639         --            <AStructure2> and if the
640         --            TypeOfConnection == TOC_ANCESTOR
641         ---Category: Methods to manage the structure network
642
643         Ancestors ( me; SG: in out MapOfStructure from Graphic3d )
644                 is static;
645         ---Level: Internal
646         ---Purpose: Returns the group of structures to which <me> is connected.
647         ---Category: Methods to manage the structure network
648
649         Connect ( me            : mutable;
650                   AStructure    : Structure from Graphic3d;
651                   AType         : TypeOfConnection from Graphic3d;
652                   WithCheck     : Boolean from Standard = Standard_False );
653         ---Level: Public
654         ---Purpose: If Atype is TOC_DESCENDANT then add <AStructure>
655         --          as a child structure of  <me>.
656         --          If Atype is TOC_ANCESTOR then add <AStructure>
657         --          as a parent structure of <me>.
658         --          The connection propagates Display, Highlight, Erase,
659         --          Remove, and stacks the transformations.
660         --          No connection if the graph of the structures
661         --          contains a cycle and <WithCheck> is Standard_True;
662         ---Category: Methods to manage the structure network
663
664         Descendants ( me; SG : in out MapOfStructure from Graphic3d )
665                 is static;
666         ---Level: Internal
667         ---Purpose: Returns the group of structures connected to <me>.
668         ---Category: Methods to manage the structure network
669
670         Disconnect ( me         : mutable;
671                      AStructure : Structure from Graphic3d )
672                 is static;
673         ---Level: Public
674         ---Purpose: Suppress the connection between <AStructure> and <me>.
675         ---Category: Methods to manage the structure network
676
677         DisconnectAll ( me      : mutable;
678                         AType   : TypeOfConnection from Graphic3d )
679                 is static;
680         ---Level: Public
681         ---Purpose: If Atype is TOC_DESCENDANT then suppress all
682         --          the connections with the child structures of <me>.
683         --          If Atype is TOC_ANCESTOR then suppress all
684         --          the connections with the parent structures of <me>.
685         ---Category: Methods to manage the structure network
686
687         Network ( myclass;
688                   AStructure    : Structure from Graphic3d;
689                   AType         : TypeOfConnection from Graphic3d;
690                   ASet          : in out MapOfStructure from Graphic3d );
691         ---Level: Internal
692         ---Purpose: Returns <ASet> the group of structures :
693         --          - directly or indirectly connected to <AStructure> if the
694         --            TypeOfConnection == TOC_DESCENDANT
695         --          - to which <AStructure> is directly or indirectly connected
696         --            if the TypeOfConnection == TOC_ANCESTOR
697         ---Category: Methods to manage the structure network
698
699         SetOwner ( me   : mutable;
700                    Owner        : Address from Standard )
701                 is static;
702         ---Level: Advanced
703
704         Owner ( me )
705                 returns Address from Standard
706                 is static;
707         ---Level: Advanced
708
709         SetHLRValidation ( me   : mutable;
710                            AFlag        : Boolean from Standard )
711                 is static;
712         ---Level: Advanced
713
714         HLRValidation ( me )
715                 returns Boolean from Standard
716                 is static;
717         ---Level: Advanced
718
719         -----------------------------------------------------------
720         -- Category: Methods to manage the structure transformation
721         -----------------------------------------------------------
722
723         Composition ( me )
724                 returns TypeOfComposition from Graphic3d
725                 is static;
726         ---Level: Public
727         ---Purpose: Returns the type of composition applied to matrices
728         --          of transformation of <me>.
729         ---Category: Methods to manage the structure transformation
730
731         SetTransform ( me       : mutable;
732                        AMatrix  : Array2OfReal from TColStd;
733                        AType    : TypeOfComposition from Graphic3d )
734         ---Level: Public
735         ---Purpose: Modifies the current local modelling transformation
736         --          in the structure <me>.
737         --
738         --          It is defined as a 4*4 real matrix.
739         --
740         --          -------------------
741         --          | a11 a12 a13  t1 |
742         --          | a21 a22 a23  t2 |
743         --          | a31 a32 a33  t3 |
744         --          |  0   0   0   1  |
745         --          -------------------
746         --
747         --          TypeOfComposition : TOC_REPLACE
748         --                              TOC_POSTCONCATENATE
749         --
750         -- Then the modified Local Modelling Transformation is composed
751         -- with the current Global Modelling Transformation to create a
752         -- new Composite Modelling Transformation.
753         --
754         -- The compose type specifies the role of the current local
755         -- modelling transformation (L) in composing the new value for
756         -- the current local modelling transformation (L'), which is
757         -- then combined with the current global modelling transforma-
758         -- tion (G) to calculate the new composite modelling transfor-
759         -- mation (C).
760         --
761         -- TOC_REPLACE
762         -- The transformation matrix (T) replaces the value of
763         -- current local modelling transformation (L).
764         --
765         --      L' <- T
766         --      C <- G x L'
767         --
768         -- TOC_POSTCONCATENATE
769         -- The current local modelling transformation (L) is multiplied
770         -- by the transformation matrix (T):
771         --
772         --      L' <- T x L
773         --      C <- G x L'
774         --
775         --  Category: Methods to manage the structure transformation
776         --  Warning: Raises TransformError if the matrix is not a 4x4 matrix.
777         raises TransformError from Graphic3d is static;
778
779         -- Transform ( me               : mutable;
780         Transform ( me;
781                     AMatrix     : in out Array2OfReal from TColStd )
782                 is static;
783         ---Level: Public
784         ---Purpose: Returns the transformation associated with
785         --          the structure <me>.
786         ---Category: Methods to manage the structure transformation
787
788         SetTransformPersistence( me     : mutable;
789                                  AFlag  : TransModeFlags from Graphic3d;
790                                  APoint : Pnt from gp  )
791         ---Level: Public
792         ---Purpose: Modifies the current modelling transform persistence (pan, zoom or rotate)
793         is static;
794
795         SetTransformPersistence(  me  :  mutable;
796                                   AFlag  :  TransModeFlags  from  Graphic3d  )
797         --  Calls previous   method  with  point  (0,0,0)
798         is  static;
799
800
801         TransformPersistenceMode( me )
802                         returns TransModeFlags from Graphic3d
803         ---Level: Public
804         ---Purpose: Get the current modelling transform persistence (pan, zoom or rotate)
805         is static;
806
807         TransformPersistencePoint( me )
808                         returns Pnt from gp
809         ---Level: Public
810         ---Purpose: Get the current point of relative modelling transform persistence
811         is static;
812
813         ----------------------------
814         -- Category: Private methods
815         ----------------------------
816
817         ComputeVisual ( me )
818                 returns TypeOfStructure from Graphic3d
819                 is static;
820         ---Level: Internal
821         ---Category: Private methods
822
823         GroupsWithFacet ( me    : mutable;
824                         ADelta  : Integer from Standard )
825                 is static private;
826         ---Level: Internal
827         ---Purpose: Manages the number of groups in the structure <me>
828         --          which contains facet.
829         --          Polygons, Triangles or Quadrangles.
830         --          <ADelta> = +1 or -1
831         ---Category: Private methods
832
833         GraphicClear ( me       : mutable;
834                        WithDestruction  : Boolean from Standard )
835                 is static;
836         ---Level: Internal
837         ---Purpose: Clears the structure <me>.
838         ---Category: Private methods
839
840         GraphicConnect ( me     : mutable;
841                          ADaughter      : Structure from Graphic3d )
842                 is static;
843         ---Level: Internal
844         ---Purpose:
845         ---Category: Private methods
846
847         GraphicDisconnect ( me  : mutable;
848                             ADaughter   : Structure from Graphic3d )
849                 is static;
850         ---Level: Internal
851         ---Purpose:
852         ---Category: Private methods
853
854         GraphicHighlight ( me           : mutable;
855                            Method       : TypeOfHighlightMethod from Aspect )
856                 is static;
857         ---Level: Internal
858         ---Purpose: Highlights the structure <me>.
859         ---Category: Private methods
860
861         GraphicTransform ( me           : mutable;
862                            AMatrix      : Array2OfReal from TColStd )
863                 is static;
864         ---Level: Internal
865         ---Purpose:
866         ---Category: Private methods
867
868         GraphicUnHighlight ( me : mutable )
869                 is static;
870         ---Level: Internal
871         ---Purpose: Suppress the highlight for the structure <me>.
872         ---Category: Private methods
873
874         Identification ( me )
875                 returns Integer from Standard
876                 is static;
877         ---Level: Internal
878         ---Purpose: Returns the identification number of the structure <me>.
879         ---Category: Private methods
880
881     MinMaxCoord (me;
882                  theXMin, theYMin, theZMin : out Real from Standard;
883                  theXMax, theYMax, theZMax : out Real from Standard)
884     is static private;
885     ---Level: Internal
886     ---Purpose: Returns the extreme coordinates found in the structure <me>.
887     --  Warning: If the structure <me> is empty or infinite then :
888     --    theXMin = theYMin = theZMin = RealFirst().
889     --    theXMax = theYMax = theZMax = RealLast().
890     ---Category: Private methods
891
892     MinMaxCoordWithDescendants (me;
893                                 theXMin, theYMin, theZMin : out Real from Standard;
894                                 theXMax, theYMax, theZMax : out Real from Standard)
895     is static private;
896     ---Level: Internal
897     ---Purpose: Returns the extreme coordinates found in the structure <me>
898     -- and its descendants with transformation applied.
899     --  Warning: If the structure <me> is empty or infinite then :
900     --    theXMin = theYMin = theZMin = RealFirst().
901     --    theXMax = theYMax = theZMax = RealLast().
902     ---Category: Private methods
903
904         PrintNetwork ( myclass;
905                        AStructure       : Structure from Graphic3d;
906                        AType            : TypeOfConnection from Graphic3d );
907         ---Level: Internal
908         ---Purpose: Prints informations about the network associated
909         --          with the structure <AStructure>.
910         ---Category: Private methods
911
912         Remove ( me     : mutable;
913                  APtr   : Address from Standard;
914                  AType  : TypeOfConnection from Graphic3d )
915                 is static;
916         ---Level: Internal
917         ---Purpose: Suppress the adress <APtr> in the list
918         --          of descendants or in the list of ancestors.
919         ---Category: Private methods
920
921         SetComputeVisual ( me           : mutable;
922                            AVisual      : TypeOfStructure from Graphic3d )
923                 is static;
924         ---Level: Internal
925         ---Category: Private methods
926
927         StructureManager ( me )
928                 returns StructureManager from Graphic3d
929                 is static private;
930         ---Level: Internal
931         ---Purpose: Returns the manager to which <me> is associated.
932         ---Category: Private methods
933
934         Transforms ( myclass;
935                      ATrsf              : Array2OfReal from TColStd;
936                      X, Y, Z            : Real from Standard;
937                      NewX, NewY, NewZ   : out Real from Standard );
938         ---Level: Internal
939         ---Purpose: Transforms <X>, <Y>, <Z> with the transformation <ATrsf>.
940         ---Category: Private methods
941
942         Transforms ( myclass;
943                      ATrsf      : Array2OfReal from TColStd;
944                      Coord      : Vector from Graphic3d )
945                 returns Vector from Graphic3d;
946         ---Level: Internal
947         ---Purpose: Transforms <Coord> with the transformation <ATrsf>.
948         ---Category: Private methods
949
950         Transforms ( myclass;
951                      ATrsf      : Array2OfReal from TColStd;
952                      Coord      : Vertex from Graphic3d )
953                 returns Vertex from Graphic3d;
954         ---Level: Internal
955         ---Purpose: Transforms <Coord> with the transformation <ATrsf>.
956         ---Category: Private methods
957
958     TransformBoundaries (myclass;
959                          theTrsf : Array2OfReal from TColStd;
960                          theXMin, theYMin, theZMin : in out Real from Standard;
961                          theXMax, theYMax, theZMax : in out Real from Standard)
962     is protected;
963     ---Level: Internal
964     ---Purpose: Transforms boundaries with <theTrsf> transformation.
965     ---Category: Private methods
966
967         Update ( me )
968                 is static private;
969         ---Level: Internal
970         ---Purpose: Calls the Update method of the StructureManager which
971         --          contains the Structure <me>.
972         ---Category: Private methods
973
974         UpdateStructure ( me    : mutable;
975                           CTXL  : AspectLine3d from Graphic3d;
976                           CTXT  : AspectText3d from Graphic3d;
977                           CTXM  : AspectMarker3d from Graphic3d;
978                           CTXF  : AspectFillArea3d from Graphic3d )
979                 is static private;
980         ---Level: Internal
981         ---Purpose: Updates the c structure associated to <me>.
982         ---Category: Private methods
983
984   CStructure (me)
985   returns CStructure_Handle from Graphic3d
986   is static;
987   ---Purpose: Returns the low-level structure
988   ---C++: return const &
989   ---C++: inline
990
991 fields
992
993 --
994 -- Class        :       Graphic3d_Structure
995 --
996 -- Purpose      :       Declaration of variables specific to
997 --                      graphic structures.
998 -- Reminder     :       A structure is defined in a manager.
999 --                      It is a sequence of groups of primitives.
1000 --
1001
1002         -- the associated low-level structure
1003   myCStructure : CStructure_Handle from Graphic3d;
1004
1005         -- the structures to which the structure is attached
1006         myAncestors             :       SequenceOfAddress from TColStd;
1007
1008         -- the structures attached to the structure
1009         myDescendants           :       SequenceOfAddress from TColStd;
1010
1011         -- the highlight method of the structure
1012         myHighlightColor        :       Color from Quantity;
1013         myHighlightMethod       :       TypeOfHighlightMethod from Aspect;
1014
1015         -- the manager accepting the structure
1016         myStructureManager              :       StructureManagerPtr from Graphic3d is protected;
1017         myFirstStructureManager :       StructureManagerPtr from Graphic3d is protected;
1018         myOwner                         :       Address from Standard;
1019
1020         -- the type of visualisation accepted by the structure
1021         myVisual                :       TypeOfStructure from Graphic3d;
1022         myComputeVisual         :       TypeOfStructure from Graphic3d is protected;
1023
1024 friends
1025
1026         -- a lot of methods of Group use the methods of Structure
1027         class Group     from Graphic3d
1028
1029 end Structure;