Integration of OCCT 6.5.0 from SVN
[occt.git] / src / Graphic3d / Graphic3d.cdl
1 --
2 -- Package  :   Graphic3d
3 -- Author   :   NW,JPB,CAL
4 -- Created  :   Jeudi 22 Aout 1991
5 -- Updated  :   Vendredi 2 Octobre 1992
6 --          Mercredi 31 Mars 1993
7 --          Mercredi 19 Janvier 1994
8 --      1/08/97 ; PCT : Ajout texture mapping
9 --      11/97 ; CAL : retrait de la dependance avec math
10 --      11/97 ; CAL : retrait des DataStructure
11 --      11/97 ; CAL : ajout pointer StructPtr
12 --              04/98 ; FGU : ajout champs 'TOR_EMISSION'
13 --      16-09-98; BGN: (S3819) Ajout TypeOfTriedronEcho,
14 --                             TypeOfTriedronPosition.
15 --              22-09-98; BGN: S3989 (anciennement S3819): report
16 --                             dans Aspect des TypeOfTriedron*
17 --              26-03-99 : FMN ; Compatibilite ascendante:
18 --              Ajout des anciens noms de materiaux.
19 --              09-04-99 : GG ; Compatibilite ascendante:
20 --                         NameOfPhysicalMaterial disparait
21 --              23-11-99 : GG ; Add material name DEFAULT
22 --          16-06-2000 : ATS : Study G005: class ArrayOfPrimitives
23 --              and derivated used for model presentation.
24 --                       Required: enumeration TypeOfPrimitive;
25 --                  imported PrimitiveArray; class PrimitiveList.
26 --
27 --      17-12-01 : GG ; IMP171201 : Add material name UserDefined
28 --              Thanks to Stephane ROUTELOUS
29 --              20-01-2009 : ABD Integration support of system fonts (using FTGL and FreeType)
30 --
31 -- Copyright    :   MatraDatavision 1991,1992,1993,1994
32 --
33 -- Objective    :   Specifications definitives
34 --
35 --
36 -- Date     :   Mercredi 31 mars 1993
37 --
38 --
39 -- File:    Graphic3d.cdl
40 -- Created: Jeudi 22 Aout 1991
41 -- Author:  NW,JPB,CAL
42 --
43 ---Copyright:   MatraDatavision 1991,1992,1993
44 --
45
46 package Graphic3d
47
48     ---Version:
49
50     ---Purpose: This package permits the creation of 3d graphic objects
51     --      in a visualiser.
52     --      These objects, called structures, are composed of groups of
53     --      primitives and attributes.
54     --      The group is the smallest editable element of a structure.
55     --      A structure can be displayed, erased, high-lighted.
56     --      A transformation can be applied to it.
57     --      Structures can be connected to form a tree of structures,
58     --      composed by transformations.
59     --      The visualiser permits global manipulation of structures.
60
61     ---Keywords: Structure, Group, Primitives, Line, Marker, Text,
62     --  FillAreas, Vertex, Vector, Material, Font, Shading
63     ---Warning:
64     ---References:
65
66 uses
67
68     TCollection,
69     TColStd,
70     OSD,
71     Quantity,
72     Aspect,
73     MMgt,
74     Xw,
75     WNT,
76     Image,
77     AlienImage,
78     gp
79 is
80
81     -----------------------
82     -- Category: Exceptions
83     -----------------------
84
85     exception AspectTextDefinitionError inherits OutOfRange;
86     ---Category: Exceptions
87
88     exception CycleError inherits DomainError;
89     ---Category: Exceptions
90
91     exception GroupDefinitionError inherits OutOfRange;
92     ---Category: Exceptions
93
94     exception InitialisationError inherits OutOfRange;
95     ---Category: Exceptions
96
97     exception MaterialDefinitionError inherits OutOfRange;
98     ---Category: Exceptions
99
100     exception PickIdDefinitionError inherits OutOfRange;
101     ---Category: Exceptions
102
103     exception PlotterDefinitionError inherits OutOfRange;
104     ---Category: The exceptions
105
106     exception PriorityDefinitionError inherits OutOfRange;
107     ---Category: Exceptions
108
109     exception StructureDefinitionError inherits OutOfRange;
110     ---Category: Exceptions
111
112     exception TransformError inherits OutOfRange;
113     ---Category: Exceptions
114
115     exception VectorError inherits OutOfRange;
116     ---Category: Exceptions
117
118     -------------------------
119     -- Category: Enumerations
120     -------------------------
121
122         enumeration NameOfMaterial is
123                     NOM_BRASS,      -- laiton       (PHYSIC)
124                                         NOM_BRONZE,     -- bronze       (PHYSIC)
125                                         NOM_COPPER,     -- cuivre       (PHYSIC)
126                                         NOM_GOLD,       -- or           (PHYSIC)
127
128                                         NOM_PEWTER,     -- etain        (PHYSIC)
129
130                                         NOM_PLASTER,    -- platre       (GENERIC)
131                                         NOM_PLASTIC,    -- plastic      (GENERIC)
132
133                                         NOM_SILVER,     -- argent       (PHYSIC)
134
135                                         NOM_STEEL,      -- acier        (PHYSIC)
136
137                                         NOM_STONE,      -- pierre       (PHYSIC)
138
139                                         NOM_SHINY_PLASTIC,      -- plastique brillant   (GENERIC)
140                                         NOM_SATIN,      --  satin       (GENERIC)
141                                         NOM_METALIZED,  -- metallise New (GENERIC)
142                                         NOM_NEON_GNC,   -- neon      New (GENERIC)
143                                         NOM_CHROME,     -- chrome    New (PHYSIC)
144                                         NOM_ALUMINIUM,  -- aluminium New (PHYSIC)
145                                         NOM_OBSIDIAN,   -- obsidian  New (PHYSIC)
146                                         NOM_NEON_PHC,   -- neon      New (PHYSIC)
147                                         NOM_JADE,       -- jade      New (PHYSIC)
148                         NOM_DEFAULT,
149                         NOM_UserDefined -- owner material
150     end NameOfMaterial;
151     ---Purpose: Types of aspect materials.
152     ---Category: Enumerations
153
154     enumeration TypeOfMaterial is MATERIAL_ASPECT,          -- Materiel generique
155                                   MATERIAL_PHYSIC           -- Materiel physique
156     end TypeOfMaterial;
157         ---Purpose: Types of materials specifies if a material can change color.
158     ---Category: Enumerations
159
160         enumeration  NameOfTexture1D  is  NOT_1D_ELEVATION,
161                       NOT_1D_UNKNOWN
162     end  NameOfTexture1D;
163     ---Purpose: Types of standard textures.
164     ---Category: Enumerations
165
166
167     enumeration  NameOfTexture2D  is  NOT_2D_MATRA,
168                                       NOT_2D_ALIENSKIN,
169                                       NOT_2D_BLUE_ROCK,
170                                       NOT_2D_BLUEWHITE_PAPER,
171                                       NOT_2D_BRUSHED,
172                                       NOT_2D_BUBBLES,
173                                       NOT_2D_BUMP,
174                                       NOT_2D_CAST,
175                                       NOT_2D_CHIPBD,
176                                       NOT_2D_CLOUDS,
177                                       NOT_2D_FLESH,
178                                       NOT_2D_FLOOR,
179                                       NOT_2D_GALVNISD,
180                                       NOT_2D_GRASS,
181                                       NOT_2D_ALUMINUM,
182                                       NOT_2D_ROCK,
183                                       NOT_2D_KNURL,
184                                       NOT_2D_MAPLE,
185                                       NOT_2D_MARBLE,
186                                       NOT_2D_MOTTLED,
187                                       NOT_2D_RAIN,
188                                       NOT_2D_UNKNOWN
189     end  NameOfTexture2D;
190     ---Purpose: Types of standard textures.
191     ---Category: Enumerations
192
193
194         enumeration  NameOfTextureEnv is  NOT_ENV_CLOUDS,
195                                           NOT_ENV_CV,
196                                           NOT_ENV_MEDIT,
197                                           NOT_ENV_PEARL,
198                                           NOT_ENV_SKY1,
199                                           NOT_ENV_SKY2,
200                                           NOT_ENV_LINES,
201                                           NOT_ENV_ROAD,
202                                           NOT_ENV_UNKNOWN
203     end  NameOfTextureEnv;
204     ---Purpose: Types of standard textures.
205     ---Category: Enumerations
206
207         enumeration  TypeOfTexture  is  TOT_1D,
208                                         TOT_2D,
209                                         TOT_2D_MIPMAP;
210     ---Purpose: Type of the texture file format.
211     ---Category: Enumerations
212
213     enumeration  TypeOfTextureMode  is  TOTM_OBJECT,
214                                         TOTM_SPHERE,
215                                         TOTM_EYE,
216                                         TOTM_MANUAL;
217     ---Purpose: Type of the texture projection.
218     ---Category: Enumerations
219
220     enumeration  NameOfTexturePlane  is  NOTP_XY,
221                                          NOTP_YZ,
222                                          NOTP_ZX,
223                                          NOTP_UNKNOWN;
224     ---Purpose: Type of the texture projection plane for both S and T texture coordinate.
225     ---Category: Enumerations
226
227     enumeration TypeOfComposition is    TOC_REPLACE,
228                         TOC_POSTCONCATENATE
229     end TypeOfComposition;
230     ---Purpose: To manage the transformation matrices of structures.
231     ---Category: Enumerations
232
233     enumeration TypeOfConnection is TOC_ANCESTOR,
234                     TOC_DESCENDANT
235     end TypeOfConnection;
236     ---Purpose: To manage the connections between the structures.
237     ---Category: Enumerations
238
239     enumeration TypeOfPolygon is    TOP_UNKNOWN,
240                                     TOP_COMPLEX,
241                                     TOP_CONCAVE,
242                                     TOP_CONVEX
243     end TypeOfPolygon;
244     ---Purpose: The type of polygon in a group in a structure.
245     ---Category: Enumerations
246
247     enumeration TypeOfPrimitive is  TOP_UNDEFINED,
248                                     TOP_POLYLINE,
249                                     TOP_POLYGON,
250                                     TOP_TRIANGLEMESH,
251                                     TOP_QUADRANGLEMESH,
252                                     TOP_TEXT,
253                                     TOP_MARKER,
254                                     TOP_PARRAY
255     end TypeOfPrimitive;
256     ---Purpose: The type of primitive in a group in a structure.
257     ---Category: Enumerations
258
259         enumeration TypeOfPrimitiveArray is TOPA_UNDEFINED,
260                                             TOPA_POINTS,
261                                             TOPA_POLYLINES,
262                                             TOPA_SEGMENTS,
263                                             TOPA_POLYGONS,
264                                             TOPA_TRIANGLES,
265                                             TOPA_QUADRANGLES,
266                                             TOPA_TRIANGLESTRIPS,
267                                             TOPA_QUADRANGLESTRIPS,
268                                             TOPA_TRIANGLEFANS
269         end TypeOfPrimitiveArray;
270         ---Purpose: The type of primitive array in a group in a structure.
271         ---Category: Enumerations
272
273     enumeration TypeOfReflection is TOR_AMBIENT,
274                                     TOR_DIFFUSE,
275                                     TOR_SPECULAR,
276                                     TOR_EMISSION
277     end TypeOfReflection;
278     ---Purpose: Nature of the reflection of a material.
279     ---Category: Enumerations
280
281     enumeration TypeOfStructure is  TOS_WIREFRAME,
282                                     TOS_SHADING,
283                                     TOS_COMPUTED,
284                                     TOS_ALL
285     end TypeOfStructure;
286     ---Purpose: Structural attribute indicating if it can be displayed
287     --      in wireframe, shadow mode, or both.
288     ---Category: Enumerations
289
290     enumeration TextPath is TP_UP,
291                             TP_DOWN,
292                             TP_LEFT,
293                             TP_RIGHT
294     end TextPath;
295     ---Purpose: Direction in which text is displayed.
296     ---Category: Enumerations
297
298     enumeration HorizontalTextAlignment is  HTA_LEFT,
299                                             HTA_CENTER,
300                                             HTA_RIGHT
301     end HorizontalTextAlignment;
302     ---Purpose: Defines the horizontal position of the text
303     --      relative to its anchor.
304     ---Category: Enumerations
305
306     enumeration VerticalTextAlignment is    VTA_BOTTOM,
307                                             VTA_CENTER,
308                                             VTA_TOP
309     end VerticalTextAlignment;
310     ---Purpose: Defines the vertical position of the text
311     --      relative to its anchor.
312     ---Category: Enumerations
313
314     enumeration GroupAspect is ASPECT_LINE,
315         ASPECT_TEXT,
316         ASPECT_MARKER,
317         ASPECT_FILL_AREA
318     end GroupAspect;
319     ---Purpose: Identifies primitives aspects defined per group.
320     -- - ASPECT_LINE: aspect for line primitives;
321     -- - ASPECT_TEXT: aspect for text primitives;
322     -- - ASPECT_MARKER: aspect for marker primitives;
323     -- - ASPECT_FILL_AREA: aspect for face primitives.
324
325     ---------------------------
326     -- Category: Imported types
327     ---------------------------
328
329     imported PrimitiveArray;
330
331     imported CBitFields20;
332     ---Purpose: Defines the C structure
333     ---Category: Imported types
334
335     imported CBitFields16;
336     ---Purpose: Defines the C structure
337     ---Category: Imported types
338
339     imported CBitFields8;
340     ---Purpose: Defines the C structure
341     ---Category: Imported types
342
343     imported CBitFields4;
344     ---Purpose: Defines the C structure
345     ---Category: Imported types
346
347     imported CGroup;
348     ---Purpose: Defines the C structure <agroup>
349     ---Category: Imported types
350
351     imported CStructure;
352     ---Purpose: Defines the C structure <astructure>
353     ---Category: Imported types
354
355     imported CLight;
356     ---Purpose: Defines the C structure <alight>
357     ---Category: Imported types
358
359     imported CPick;
360     ---Purpose: Defines the C structure <apick>
361     ---Category: Imported types
362
363     imported CPlane;
364     ---Purpose: Defines the C structure <aplane>
365     ---Category: Imported types
366
367     imported CBounds;
368     ---Purpose: Defines the C structure <abounds>
369     ---Category: Imported types
370
371     imported CUserDraw;
372     ---Purpose: Defines the C structure <auserdraw>
373     ---Category: Imported types
374
375     imported CView;
376     ---Purpose: Defines the C structure <aview>
377     ---Category: Imported types
378
379     imported CGraduatedTrihedron;
380     ---Purpose: Defines the C structure of a graduated trihedron.
381     ---Category: Imported types
382
383     imported CInitTexture;
384     imported CTexture;
385
386 --   ABD 29/10/04  Transform Persistence of Presentation( pan, zoom, rotate )
387         imported CTransPersStruct;
388         imported TransModeFlags;
389 --   ABD 29/10/04  Transform Persistence of Presentation( pan, zoom, rotate )
390
391     primitive PtrFrameBuffer;
392
393     --------------------
394     -- Category: Classes
395     --------------------
396
397     class Strips;
398     ---Purpose: Contains some static functions to strips treatment
399
400     deferred class ArrayOfPrimitives;
401     ---Purpose: Contains basic methods for array allocation and filling
402
403     class ArrayOfPoints;
404     ---Purpose: Contains points array definition
405
406     class ArrayOfPolylines;
407     ---Purpose: Contains polylines array definition
408
409     class ArrayOfSegments;
410     ---Purpose: Contains segments array definition
411
412     class ArrayOfPolygons;
413     ---Purpose: Contains polygons array definition
414
415     class ArrayOfTriangles;
416     ---Purpose: Contains triangles array definition
417
418     class ArrayOfTriangleStrips;
419     ---Purpose: Contains triangles strip array definition
420
421     class ArrayOfTriangleFans;
422     ---Purpose: Contains triangles fan array definition
423
424     class ArrayOfQuadrangles;
425     ---Purpose: Contains quatrangles array definition
426
427     class ArrayOfQuadrangleStrips;
428     ---Purpose: Contains quadrangles strip array definition
429
430     class AspectLine3d;
431     ---Purpose: Grouping line attributes
432     ---Category: Classes
433
434     class AspectFillArea3d;
435     ---Purpose: Grouping face attributes
436     ---Category: Classes
437
438     class AspectMarker3d;
439     ---Purpose: Grouping marker attributes
440     ---Category: Classes
441
442     class AspectText3d;
443     ---Purpose: Grouping text attributes.
444     ---Category: Classes
445
446     class Group;
447     ---Purpose: For grouping together primitives in a structure
448     ---Category: Classes
449
450     class GraphicDevice;
451     ---Purpose: Defines a physical graphic device allowing to
452     --          shares graphical ressources.
453     ---Category: Classes
454
455     class WNTGraphicDevice;
456     ---Purpose:  Defines a physical graphic device for Windows NT
457     ---Category: Classes
458
459     class MaterialAspect;
460     ---Purpose: Aspect attributes of a 3d face.
461     ---Category: Classes
462
463     class Structure;
464     ---Purpose: Graphic object.
465     ---Category: Classes
466
467     deferred class GraphicDriver;
468     ---Purpose: Defines a graphic driver for 3d interface
469
470     deferred class StructureManager;
471     ---Purpose: Visualiser with which the graphic objects are associated.
472     ---Category: Classes
473
474     deferred class DataStructureManager;
475     ---Purpose: Visualiser with which the graphic objects are associated.
476     ---Category: Classes
477
478     deferred class Plotter;
479     ---Purpose: Defines the minimal plotter.
480     ---Category: The classes
481
482     class Vector;
483     ---Purpose: 3d vector
484     ---Category: Classes
485
486     class Vertex;
487     ---Purpose: 3d vertex
488     ---Category: Classes
489
490     class VertexN;
491     ---Purpose: 3d vertex with a normal vector
492     ---Category: Classes
493
494     class VertexNT;
495     ---Purpose: 3d vertex with a normal vector and texture coordinate
496     ---Category: Classes
497
498     class VertexC;
499     ---Purpose: 3d vertex with a colour
500     ---Category: Classes
501
502     class VertexNC;
503     ---Purpose: 3d vertex with a normal and a colour
504     ---Category: Classes
505
506     ---------------------
507     -- Category: Pointers
508     ---------------------
509
510     pointer StructPtr to Structure from Graphic3d;
511     ---Category: Pointers
512
513     ---------------------------------
514     -- Category: Instantiated classes
515     ---------------------------------
516
517     class ListOfPArray instantiates
518         List from TCollection (ArrayOfPrimitives from Graphic3d);
519         ---Category: Instantiated classes
520
521     class SequenceOfAddress instantiates
522             Sequence from TCollection
523             (Address from Standard);
524     ---Category: Instantiated classes
525
526     class SetOfGroup instantiates
527             Set from TCollection (Group from Graphic3d);
528     ---Category: Instantiated classes
529
530     class HSetOfGroup instantiates
531             HSet from TCollection
532             (Group from Graphic3d, SetOfGroup);
533     ---Category: Instantiated classes
534
535     class SequenceOfGroup instantiates
536                 Sequence from TCollection (Group from Graphic3d);
537
538     ---Category: Instantiated classes
539
540     class HSequenceOfGroup instantiates
541             HSequence from TCollection
542         (Group from Graphic3d, SequenceOfGroup from Graphic3d);
543     ---Category: Instantiated classes
544
545     class MapOfStructure instantiates
546             Map from TCollection (Structure from Graphic3d,MapTransientHasher from TColStd);
547
548
549     ---Category: Instantiated classes
550
551     class SequenceOfStructure instantiates
552             Sequence from TCollection
553             (Structure from Graphic3d);
554     ---Category: Instantiated classes
555
556     class HSequenceOfStructure instantiates
557             HSequence from TCollection
558         (Structure from Graphic3d, SequenceOfStructure from Graphic3d);
559     ---Category: Instantiated classes
560
561     class Array1OfVector instantiates
562             Array1 from TCollection (Vector from Graphic3d);
563     ---Category: Instantiated classes
564
565     class Array1OfVertex instantiates
566             Array1 from TCollection (Vertex from Graphic3d);
567     ---Category: Instantiated classes
568
569     class Array2OfVertex instantiates
570             Array2 from TCollection (Vertex from Graphic3d);
571     ---Category: Instantiated classes
572
573     class Array1OfVertexC instantiates
574             Array1 from TCollection (VertexC from Graphic3d);
575     ---Category: Instantiated classes
576
577     class Array2OfVertexC instantiates
578             Array2 from TCollection (VertexC from Graphic3d);
579     ---Category: Instantiated classes
580
581     class Array1OfVertexN instantiates
582             Array1 from TCollection (VertexN from Graphic3d);
583     ---Category: Instantiated classes
584
585     class Array2OfVertexN instantiates
586             Array2 from TCollection (VertexN from Graphic3d);
587     ---Category: Instantiated classes
588
589     class Array1OfVertexNT instantiates
590             Array1 from TCollection (VertexNT from Graphic3d);
591     ---Category: Instantiated classes
592
593     class Array2OfVertexNT instantiates
594             Array2 from TCollection (VertexNT from Graphic3d);
595     ---Category: Instantiated classes
596
597     class Array1OfVertexNC instantiates
598             Array1 from TCollection (VertexNC from Graphic3d);
599     ---Category: Instantiated classes
600
601     class Array2OfVertexNC instantiates
602             Array2 from TCollection (VertexNC from Graphic3d);
603     ---Category: Instantiated classes
604
605     class ListOfShortReal instantiates
606             List from TCollection (ShortReal from Standard);
607     ---Category: Instantiated classes
608
609     --ABD Integration support of system fonts (using FTGL and FreeType)
610     imported NListOfHAsciiString;
611     ---Category: Instantiated classes
612
613
614         deferred  class  TextureRoot  from  Graphic3d;
615     deferred  class  TextureMap   from  Graphic3d;
616     deferred  class  Texture1D    from  Graphic3d;
617     deferred  class  Texture2D    from  Graphic3d;
618
619     class  TextureEnv       from  Graphic3d;
620     class  Texture1Dmanual  from  Graphic3d;
621     class  Texture1Dsegment from  Graphic3d;
622     class  Texture2Dmanual  from  Graphic3d;
623     class  Texture2Dplane   from  Graphic3d;
624
625
626     enumeration ExportFormat is
627
628         EF_PostScript,
629         EF_EnhPostScript,
630         EF_TEX,
631         EF_PDF,
632         EF_SVG,
633         EF_PGF
634
635     end ExportFormat;
636
637
638     enumeration SortType is
639
640         ST_Simple,    -- sorting by depth of center point of primitive(fast)
641         ST_BSP_Tree   -- sorting by BSPTree (slow, but fine result )
642
643         end SortType;
644
645 end Graphic3d;