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