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