0022971: TKOpenGl clean up obsolete functionality
[occt.git] / src / Graphic3d / Graphic3d_Group.cdl
1 -- Created on: 1991-09-06
2 -- Created by: NW,JPB,CAL
3 -- Copyright (c) 1991-1999 Matra Datavision
4 -- Copyright (c) 1999-2012 OPEN CASCADE SAS
5 --
6 -- The content of this file is subject to the Open CASCADE Technology Public
7 -- License Version 6.5 (the "License"). You may not use the content of this file
8 -- except in compliance with the License. Please obtain a copy of the License
9 -- at http://www.opencascade.org and read it completely before using this file.
10 --
11 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 --
14 -- The Original Code and all software distributed under the License is
15 -- distributed on an "AS IS" basis, without warranty of any kind, and the
16 -- Initial Developer hereby disclaims all such warranties, including without
17 -- limitation, any warranties of merchantability, fitness for a particular
18 -- purpose or non-infringement. Please see the License for the specific terms
19 -- and conditions governing the rights and limitations under the License.
20
21 --      27/09/97 ; PCT : add manual control of  textures
22 --              11/97 ; CAL : ajout polyline par 2 points
23 --      16/06/2000 : ATS: Study G005 - Group store presentations of it's objects in field
24 --                        MyListOfPArray to avoid deletion of handle-manipulating 
25 --                        primitives.
26 class Group from Graphic3d inherits TShared
27     
28         ---Version:
29
30         ---Purpose: This class allows the definition of groups
31         --     of primitives inside of graphic objects (presentations).
32         --     A group contains the primitives and attributes
33         --     for which the range is limited to this group.
34         --     The primitives of a group can be globally suppressed.
35         --
36         --      There are two main group usage models:
37         --
38         --        1) Non-modifiable, or unbounded, group ('black box'). 
39         --           Developers can repeat a sequence of 
40         --           SetPrimitivesAspect() with AddPrimitiveArray() methods arbitrary number of times
41         --           to define arbitrary number of primitive "blocks" each having individual apect values.
42         --           Any modification of such a group is forbidden, as aspects and primitives are mixed 
43         --           in memory without any high-level logical structure, and any modification is very likely to result
44         --           in corruption of the group internal data.
45         --           It is necessary to recreate such a group as a whole when some attribute should be changed.
46         --           (for example, in terms of AIS it is necessary to re-Compute() the whole presentation each time).
47         --        2) Bounded group. Developers should specify the necessary group aspects with help of
48         --           SetGroupPrimitivesAspect() and then add primitives to the group.
49         --           Such a group have simplified organization in memory (a single block of attributes
50         --           followed by a block of primitives) and therefore it can be modified, if it is necessary to
51         --           change parameters of some aspect that has already been set, using methods:
52         --           IsGroupPrimitivesAspectSet() to detect which aspect was set for primitives;
53         --           GroupPrimitivesAspect() to read current aspect values
54         --           and SetGroupPrimitivesAspect() to set new values.
55         -- 
56         --        Developers are strongly recommended to take all the above into account when filling Graphic3d_Group
57         --        with aspects and primitives and choose the group usage model beforehand out of application needs.
58
59         ---Warning:
60         ---References:
61     
62     uses
63     
64         Array1OfInteger             from TColStd,
65         Array1OfReal                from TColStd,
66         HArray1OfByte               from TColStd,
67     
68         ExtendedString              from TCollection,
69     
70         PlaneAngle                  from Quantity,
71     
72         Array1OfEdge                from Aspect,
73         Edge                        from Aspect,
74     
75         GroupAspect                 from Graphic3d,
76         AspectLine3d                from Graphic3d,
77         AspectMarker3d              from Graphic3d,
78         AspectText3d                from Graphic3d,
79         AspectFillArea3d            from Graphic3d,
80         HorizontalTextAlignment     from Graphic3d,
81         CBitFields4                 from Graphic3d,
82         CGroup                      from Graphic3d,
83         GraphicDriver               from Graphic3d,
84         Structure                   from Graphic3d,
85         TextPath                    from Graphic3d,
86         TypeOfPolygon               from Graphic3d,
87         Vector                      from Graphic3d,
88         Array1OfVertex              from Graphic3d,
89         Array2OfVertex              from Graphic3d,
90         Vertex                      from Graphic3d,
91         Array1OfVertexC             from Graphic3d,
92         Array2OfVertexC             from Graphic3d,
93         VertexC                     from Graphic3d,
94         Array1OfVertexN             from Graphic3d,
95         Array2OfVertexN             from Graphic3d,
96         VertexN                     from Graphic3d,
97         Array1OfVertexNC            from Graphic3d,
98         Array2OfVertexNC            from Graphic3d,
99         VertexNC                    from Graphic3d,
100         VerticalTextAlignment       from Graphic3d, 
101         VertexNT                    from Graphic3d, 
102         Array1OfVertexNT            from Graphic3d,
103         Array2OfVertexNT            from Graphic3d,
104         ArrayOfPrimitives           from Graphic3d,
105         ListOfPArray                from Graphic3d,
106         ListIteratorOfListOfPArray  from Graphic3d,
107         TransModeFlags              from Graphic3d,
108         CBounds                     from Graphic3d
109     
110     raises
111     
112         GroupDefinitionError        from Graphic3d,
113         PickIdDefinitionError       from Graphic3d,
114     OutOfRange          from Standard
115     
116     is
117         Create ( AStructure : Structure from Graphic3d )
118             returns mutable Group from Graphic3d;
119         ---Level: Public
120         ---Purpose: Creates a group in the structure <AStructure>.
121     
122         ---------------------------------------------------
123         -- Category: Methods to modify the class definition
124         ---------------------------------------------------
125     
126         Clear ( me  : mutable;
127                 theUpdateStructureMgr : Boolean from Standard = Standard_True )
128             is static;
129         ---Level: Public
130         ---Purpose: Supress all primitives and attributes of <me>.
131         --          To clear group without update in Graphic3d_StructureManager
132         --          pass Standard_False as <theUpdateStructureMgr>. This
133         --          used on context and viewer destruction, when the pointer
134         --          to structure manager in Graphic3d_Structure could be 
135         --          already released (pointers are used here to avoid handle 
136         --          cross-reference);
137         ---Category: Methods to modify the class definition
138     
139         Destroy ( me    : mutable )
140             is static;
141         ---Level: Public
142         ---Purpose: Supress the group <me> in the structure.
143         ---Category: Methods to modify the class definition
144         ---C++: alias ~
145     
146         Remove ( me : mutable )
147             is static;
148         ---Level: Public
149         ---Purpose: Supress the group <me> in the structure.
150         --  Warning: No more graphic operations in <me> after this call.
151         ---Category: Methods to modify the class definition
152
153         --SetTransformPersistence( me     : mutable;
154         --                         AFlag  : TransModeFlags from Graphic3d )
155         ---Level: Public
156     ---Purpose: Modifies the current modelling transform persistence (pan, zoom or rotate)
157         --is static;
158
159     --TransformPersistence( me )
160     --      returns TransModeFlags from Graphic3d
161         ---Level: Public
162     ---Purpose: Get the current modelling transform persistence (pan, zoom or rotate)
163         --is static;
164     
165         SetGroupPrimitivesAspect ( me   : mutable )
166             is static;
167         ---Level: Public
168         ---Purpose: Removes the context for all the line primitives
169         --      of the group.
170         ---Category: Methods to modify the class definition
171     
172         SetGroupPrimitivesAspect ( me   : mutable;
173                                    CTX  : AspectLine3d from Graphic3d )
174             is static;
175         ---Level: Public
176         ---Purpose: Modifies the context for all the line primitives
177         --      of the group.
178         ---Category: Methods to modify the class definition
179     
180         SetGroupPrimitivesAspect ( me   : mutable;
181                                    CTX  : AspectFillArea3d from Graphic3d )
182             is static;
183         ---Level: Public
184         ---Purpose: Modifies the context for all the face primitives
185         --      of the group.
186         ---Category: Methods to modify the class definition
187     
188         SetGroupPrimitivesAspect ( me   : mutable;
189                                    CTX  : AspectText3d from Graphic3d )
190             is static;
191         ---Level: Public
192         ---Purpose: Modifies the context for all the text primitives
193         --      of the group.
194         ---Category: Methods to modify the class definition
195     
196         SetGroupPrimitivesAspect ( me   : mutable;
197                                    CTX  : AspectMarker3d from Graphic3d )
198             is static;
199         ---Level: Public
200         ---Purpose: Modifies the context for all the marker primitives
201         --      of the group.
202         ---Category: Methods to modify the class definition
203     
204         SetPrimitivesAspect ( me    : mutable;
205                               CTX   : AspectLine3d from Graphic3d )
206             is static;
207         ---Level: Public
208         ---Purpose: Modifies the current context of the group to give
209         --      another aspect for all the line primitives created
210         --      after this call in the group.
211         ---Category: Methods to modify the class definition
212     
213         SetPrimitivesAspect ( me    : mutable;
214                               CTX   : AspectFillArea3d from Graphic3d )
215             is static;
216         ---Level: Public
217         ---Purpose: Modifies the current context of the group to give
218         --      another aspect for all the face primitives created
219         --      after this call in the group.
220         ---Category: Methods to modify the class definition
221     
222         SetPrimitivesAspect ( me    : mutable;
223                               CTX   : AspectText3d from Graphic3d )
224             is static;
225         ---Level: Public
226         ---Purpose: Modifies the current context of the group to give
227         --      another aspect for all the text primitives created
228         --      after this call in the group.
229         ---Category: Methods to modify the class definition
230     
231         SetPrimitivesAspect ( me    : mutable;
232                               CTX   : AspectMarker3d from Graphic3d )
233             is static;
234         ---Level: Public
235         ---Purpose: Modifies the current context of the group to give
236         --      another aspect for all the marker primitives created
237         --      after this call in the group.
238         ---Category: Methods to modify the class definition
239     
240         SetMinMaxValues ( me                : mutable;
241                           XMin, YMin, ZMin  : Real from Standard;
242                           XMax, YMax, ZMax  : Real from Standard )
243             is static;
244         ---Level: Public
245         ---Purpose: Sets the coordinates of the boundary box of the
246         --      group <me>.
247         ---Category: Methods to modify the class definition
248     
249         -------------------------------------
250         -- Category: Methods to create Marker
251         -------------------------------------
252     
253         ---------------------------------------------
254         -- Summary of Markers                      --
255         --                                         --
256         -- They should have one or more vertices.  --
257         --                                         --
258         -- They have the following attributes.     --
259         --                                         --
260         --  Marker Type.                       --
261         --  Marker Scale Factor.               --
262         --  Marker Color.                      --
263         --                                         --
264         -- The  size, shape  and orientation  of a --
265         -- marker is not subject to transformation --
266         ---------------------------------------------
267     
268         Marker ( me         : mutable;
269                  APoint     : Vertex from Graphic3d;
270                  EvalMinMax : Boolean from Standard = Standard_True )
271             is static;
272         ---Level: Public
273         ---Purpose: Creates a marker in position <APoint> which will be drawn
274         --      with the current attribute (AspectMarker).
275         ---Category: Methods to create Marker
276     
277         MarkerSet ( me          : mutable;
278                     ListVertex  : Array1OfVertex from Graphic3d;
279                     EvalMinMax  : Boolean from Standard = Standard_True )
280             is static;
281         ---Purpose: Creates a group of markers defined by a table of
282         --     vertices.
283         ---Category: Methods to create Marker
284     
285         --------------------------------------
286         -- Category: Methods to create Polygon
287         --------------------------------------
288     
289         --------------------------------------------------
290         -- Summary of Polygons                          --
291         --                                              --
292         -- They are limited to one boundary.            --
293         --                                              --
294         -- The boundary should be closed.               --
295         --                                              --
296         -- They should have at least three vertices.    --
297         --                                              --
298         -- They should be planar.                       --
299         --                                              --
300         -- They should have a normal.                   --
301         --                                              --
302         -- The boundary is drawn only when the interior --
303         -- style is hollow.                             --
304         --                                              --
305         -- The boundary have the following attributes : --
306         --                                              --
307         --  Line Type.                              --
308         --  Line Width Scale Factor.                --
309         --  Line Color.                             --
310         --                                              --
311         -- They have only interior attributes :         --
312         --                                              --
313         --  Interior Style.                         --
314         --  Interior Color.                         --
315         --  Front Material.                         --
316         --  Back Material.                          --
317         --------------------------------------------------
318     
319         Polygon ( me            : mutable;
320                   ListVertex    : Array1OfVertex from Graphic3d;
321                   AType         : TypeOfPolygon from Graphic3d = Graphic3d_TOP_CONVEX;
322                   EvalMinMax    : Boolean from Standard = Standard_True )
323             is static;
324         ---Level: Public
325         ---Purpose: Links up points to create a face drawn
326         --      using the current fill attributes (AspectFillArea3d))
327         --      The first and last points are not duplicates.
328         ---Category: Methods to create Polygon
329
330         PolygonSet ( me           : mutable;
331                      Bounds       : Array1OfInteger from TColStd;
332                      ListVertex   : Array1OfVertex from Graphic3d;
333                      AType        : TypeOfPolygon from Graphic3d = Graphic3d_TOP_CONVEX;
334                      EvalMinMax   : Boolean from Standard = Standard_True )
335             is static;
336         ---Level: Public
337         ---Purpose: Links up points to create a set of face drawn
338         --      using the current fill attributes (AspectFillArea3d))
339         --      The first and last points are not duplicates.
340         ---Category: Methods to create Polygon
341     
342         ---------------------------------------
343         -- Category: Methods to create Polyline
344         ---------------------------------------
345     
346         --------------------------------------------
347         -- Summary of Polylines                   --
348         --                                        --
349         -- They should have two or more vertices. --
350         --                                        --
351         -- They have the following attributes.    --
352         --                                        --
353         --  Line Type.                        --
354         --  Line Width Scale Factor.          --
355         --  Line Color.                       --
356         --------------------------------------------
357     
358         Polyline ( me           : mutable;
359                    APT1         : Vertex from Graphic3d;
360                    APT2         : Vertex from Graphic3d;
361                    EvalMinMax   : Boolean from Standard = Standard_True )
362             is static;
363         ---Level: Public
364         ---Purpose: Links up points to create a line drawn
365         --      using the current line attributes (AspectLine)
366         ---Category: Methods to create Polyline
367     
368         Polyline ( me         : mutable;
369                    ListVertex : Array1OfVertex from Graphic3d;
370                    EvalMinMax : Boolean from Standard = Standard_True )
371             is static;
372         ---Level: Public
373         ---Purpose: Links up points to create a line drawn
374         --      using the current line attributes (AspectLine)
375         ---Category: Methods to create Polyline
376     
377         Polyline ( me         : mutable;
378                    ListVertex : Array1OfVertexC from Graphic3d;
379                    EvalMinMax : Boolean from Standard = Standard_True )
380             is static;
381         ---Level: Public
382         ---Purpose: Links up points to create a line drawn
383         --      using the current line attributes (AspectLine)
384         --      except for the colour which is defined
385         --      for each vertex.
386         ---Category: Methods to create Polyline
387     
388         -----------------------------------
389         -- Category: Methods to create Text
390         -----------------------------------
391     
392         --------------------------------------------
393         -- Summary of Texts                       --
394         --                                        --
395         -- Text  has  geometric  and nongeometric --
396         -- attributes.                            --
397         --                                        --
398         -- The geometric text attributes are :    --
399         --                                        --
400         --  Character Height.                 --
401         --  Character Up Vector.              --
402         --  Text Path.                        --
403         --  Text Alignment Horizontal.        --
404         --  Text Alignment Vertical.          --
405         --                                        --
406         -- The nongeometric text attributes are : --
407         --                                        --
408         --  Text Font.                        --
409         --  Character Spacing.                --
410         --  Character Expansion Factor.       --
411         --  Text Color.                       --
412         --------------------------------------------
413     
414         Text (  me  : mutable;
415             AText   : CString from Standard;
416             APoint  : Vertex from Graphic3d;
417             AHeight : Real from Standard;
418             AAngle  : PlaneAngle from Quantity;
419             ATp : TextPath from Graphic3d;
420             AHta    : HorizontalTextAlignment from Graphic3d;
421             AVta    : VerticalTextAlignment from Graphic3d;
422             EvalMinMax  : Boolean from Standard = Standard_True )
423             is static;
424         ---Level: Public
425         ---Purpose: Creates the string <AText> at position <APoint>.
426         --      The 3D point of attachment is projected. The text is
427         --      written in the plane of projection.
428         --      The attributes are given with respect to the plane of
429         --      projection.
430         --      AHeight : Height of text.
431         --            (Relative to the Normalized Projection
432         --              Coordinates (NPC) Space).
433         --      AAngle  : Orientation of the text
434         --            (with respect to the horizontal).
435         ---Category: Methods to create Text
436     
437         Text ( me   : mutable;
438                AText    : CString from Standard;
439                APoint   : Vertex from Graphic3d;
440                AHeight  : Real from Standard;
441                EvalMinMax   : Boolean from Standard = Standard_True )
442             is static;
443         ---Level: Public
444         ---Purpose: Creates the string <AText> at position <APoint>.
445         --      The 3D point of attachment is projected. The text is
446         --      written in the plane of projection.
447         --      The attributes are given with respect to the plane of
448         --      projection.
449         --      AHeight : Height of text.
450         --            (Relative to the Normalized Projection
451         --              Coordinates (NPC) Space).
452         --      The other attributes have the following default values:
453         --      AAngle  : PI / 2.
454         --      ATp     : TP_RIGHT
455         --      AHta    : HTA_LEFT
456         --      AVta    : VTA_BOTTOM
457         ---Category: Methods to create Text
458     
459         Text (  me          : mutable;
460                 AText       : ExtendedString from TCollection;
461                 APoint      : Vertex from Graphic3d;
462                 AHeight     : Real from Standard;
463                 AAngle      : PlaneAngle from Quantity;
464                 ATp         : TextPath from Graphic3d;
465                 AHta        : HorizontalTextAlignment from Graphic3d;
466                 AVta        : VerticalTextAlignment from Graphic3d;
467                 EvalMinMax  : Boolean from Standard = Standard_True )
468             is static;
469         ---Level: Internal
470         ---Purpose: Creates the string <AText> at position <APoint>.
471         --      The 3D point of attachment is projected. The text is
472         --      written in the plane of projection.
473         --      The attributes are given with respect to the plane of
474         --      projection.
475         --      AHeight : Height of text.
476         --            (Relative to the Normalized Projection
477         --              Coordinates (NPC) Space).
478         --      AAngle  : Orientation of the text
479         --            (with respect to the horizontal).
480         ---Category: Methods to create Text
481     
482         Text ( me           : mutable;
483                AText        : ExtendedString from TCollection;
484                APoint       : Vertex from Graphic3d;
485                AHeight      : Real from Standard;
486                EvalMinMax   : Boolean from Standard = Standard_True )
487             is static;
488         ---Level: Internal
489         ---Purpose: Creates the string <AText> at position <APoint>.
490         --      The 3D point of attachment is projected. The text is
491         --      written in the plane of projection.
492         --      The attributes are given with respect to the plane of
493         --      projection.
494         --      AHeight : Height of text.
495         --            (Relative to the Normalized Projection
496         --              Coordinates (NPC) Space).
497         --      The other attributes have the following default values:
498         --      AAngle  : PI / 2.
499         --      ATp     : TP_RIGHT
500         --      AHta    : HTA_LEFT
501         --      AVta    : VTA_BOTTOM
502         ---Category: Methods to create Text
503     
504         ---------------------------------------
505         ---Category: Methods to create Triangle
506         ---------------------------------------
507
508     AddPrimitiveArray( me      : mutable;
509                        elem    : ArrayOfPrimitives from Graphic3d;
510           EvalMinMax: Boolean from Standard = Standard_True );
511         ---Level: Public
512     ---Purpose: Adds an array of primitives for display
513
514     RemovePrimitiveArray( me       : mutable;
515                           aRank    : Integer from Standard) 
516         ---Level: Public
517     ---Purpose: Remove the array of primitives of rank <aRank> 
518         raises OutOfRange from Standard is static;
519     -- if <aRank> is < 1 or > ArrayNumber()
520
521     RemovePrimitiveArrays( me       : mutable);
522         ---Level: Public
523     ---Purpose: Remove all array of primitives 
524     
525     UserDraw ( me           : mutable;
526                AnObject     : Address from Standard; 
527                EvalMinMax   : Boolean from Standard = Standard_True; 
528                ContainsFacet: Boolean from Standard = Standard_False
529     )
530     ---Level: Public
531     ---Purpose: Creates an UserDraw primitive
532     --  Category: Methods to create UserDraw
533     --  Warning: Raises GroupDefinitionError if ...
534     raises GroupDefinitionError from Graphic3d is static;
535
536         ----------------------------
537         -- Category: Inquire methods
538         ----------------------------
539
540     ArrayNumber( me )
541     returns Integer from Standard;
542         ---Level: Public
543     ---Purpose: Returns the number of primitive array added in this group 
544
545     InitDefinedArray( me:mutable );
546         ---Level: Public
547     ---Purpose: Initialize the array list iterator. 
548
549     NextDefinedArray( me:mutable );
550         ---Level: Public
551     ---Purpose: Increments the array list iterator. 
552
553     MoreDefinedArray( me:mutable )
554     returns Boolean from Standard;
555         ---Level: Public
556     ---Purpose: Returns TRUE if more array exists in the list.
557
558     DefinedArray( me )
559     returns mutable ArrayOfPrimitives from Graphic3d;
560         ---Level: Public
561     ---Purpose: Returns the current array of primitives according
562     -- to the array list iterator value. 
563
564         IsGroupPrimitivesAspectSet ( me;
565                     theAspect : GroupAspect from Graphic3d )
566             returns Boolean from Standard
567             is static;
568         ---Level: Public
569         ---Purpose: Returns TRUE if aspect is set for the group.
570         ---Category: Inquire methods
571
572         GroupPrimitivesAspect ( me;
573                                 CTXL    : AspectLine3d from Graphic3d;
574                                 CTXT    : AspectText3d from Graphic3d;
575                                 CTXM    : AspectMarker3d from Graphic3d;
576                                 CTXF    : AspectFillArea3d from Graphic3d )
577                 is static;
578         ---Level: Public
579         ---Purpose: Returns the context of all the primitives of the group.
580         ---Category: Inquire methods
581     
582         PrimitivesAspect ( me;
583                            CTXL : AspectLine3d from Graphic3d;
584                            CTXT : AspectText3d from Graphic3d;
585                            CTXM : AspectMarker3d from Graphic3d;
586                            CTXF : AspectFillArea3d from Graphic3d )
587                 is static;
588         ---Level: Public
589         ---Purpose: Returns the last inserted context in the group <me>
590         --          foreach kind of primitives.
591         ---Category: Inquire methods
592
593         ContainsFacet ( me )
594             returns Boolean from Standard
595             is static;
596         ---Level: Internal
597         ---Purpose: Returns Standard_True if the group <me> contains
598         --      Polygons, Triangles or Quadrangles.
599         ---Category: Inquire methods
600     
601         IsDeleted ( me )
602             returns Boolean from Standard
603             is static;
604         ---Level: Public
605         ---Purpose: Returns Standard_True if the group <me> is deleted.
606         --      <me> is deleted after the call Remove (me) or the
607         --      associated structure is deleted.
608         ---Category: Inquire methods
609     
610         IsEmpty ( me )
611             returns Boolean from Standard
612             is static;
613         ---Level: Public
614         ---Purpose: Returns Standard_True if the group <me> is empty.
615         ---Warning: A group is empty if the MinMaxValues method returns :
616         --      XMin = YMin = ZMin = RealFirst ().
617         --      XMax = YMax = ZMax = RealLast ().
618         ---Category: Inquire methods
619     
620         MinMaxValues ( me;
621                        XMin, YMin, ZMin : out Real from Standard;
622                        XMax, YMax, ZMax : out Real from Standard )
623             is static;
624         ---Level: Public
625         ---Purpose: Returns the coordinates of the boundary box of the
626         --      group <me>.
627         ---Warning: If the group <me> is empty then :
628         --      XMin = YMin = ZMin = RealFirst ().
629         --      XMax = YMax = ZMax = RealLast ().
630         ---Category: Inquire methods
631     
632         Structure ( me )
633             returns mutable Structure from Graphic3d
634             is static;
635         ---Level: Public
636         ---Purpose: Returns the structure containing the group <me>.
637         ---Category: Inquire methods
638     
639         ----------------------------
640         -- Category: Private methods
641         ----------------------------
642         
643         Labels ( me;
644              LB, LE : in out Integer from Standard )
645             is static private;
646         ---Level: Internal
647         ---Purpose: Returns the position of the group in the structure.
648         ---Category: Private methods
649     
650         MinMaxCoord ( me;
651                       XMin, YMin, ZMin : out Real from Standard;
652                       XMax, YMax, ZMax : out Real from Standard )
653             is static private;
654         ---Level: Internal
655         ---Purpose: Returns the extreme coordinates found in the group.
656         ---Warning: If the group <me> is empty then :
657         --      XMin = YMin = ZMin = RealFirst ().
658         --      XMax = YMax = ZMax = RealLast ().
659         ---Category: Private methods
660     
661         Update ( me )
662             is static private;
663         ---Level: Internal
664         ---Purpose: Calls the Update method of the StructureManager which
665         --      contains the associated Structure of the Group <me>.
666         ---Category: Private methods
667     
668         -----------------------------
669         -- Category: Internal methods
670         -----------------------------
671     
672         BeginPrimitives ( me : mutable )
673             is static;
674         ---Level: Internal
675         ---Category: Internal methods
676     
677         EndPrimitives ( me : mutable )
678             is static;
679         ---Level: Internal
680         ---Category: Internal methods
681
682     --
683     
684     fields
685     
686     --
687     -- Class    :   Graphic3d_Group
688     --
689     -- Purpose  :   Declaration of variables specific to groups
690     --          of primitives.
691     --
692     -- Reminder :   A group is defined in a structure
693     --          It acts as the smallest editable entity.
694     
695         -- the associated C structure 
696         MyCGroup        :   CGroup from Graphic3d;
697     
698         -- the graphic driver used
699         MyGraphicDriver     :   GraphicDriver from Graphic3d;
700     
701         -- the state of the different contexts for primitives
702         MyCBitFields        :   CBitFields4 from Graphic3d;
703     
704         -- the structure contains the group
705         MyPtrStructure      :   Address from Standard;
706     
707         -- the min-max
708     MyBounds                :       CBounds from Graphic3d;
709
710     MyListOfPArray          :   ListOfPArray from Graphic3d;
711     MyListOfPArrayIterator  :   ListIteratorOfListOfPArray from Graphic3d;
712
713     MyMarkArray             :       HArray1OfByte from TColStd;
714     MyMarkWidth             :       Integer from Standard;
715     MyMarkHeight            :       Integer from Standard;
716
717     friends
718     
719         Remove from class Structure from Graphic3d
720             ( me : mutable; AGroup : Group from Graphic3d )
721     
722     end Group;