1 -- Created on: 1993-03-31
2 -- Created by: NW,JPB,CAL
3 -- Copyright (c) 1993-1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
6 -- This file is part of Open CASCADE Technology software library.
8 -- This library is free software; you can redistribute it and/or modify it under
9 -- the terms of the GNU Lesser General Public License version 2.1 as published
10 -- by the Free Software Foundation, with special exception defined in the file
11 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 -- distribution for complete text of the license and disclaimer of any warranty.
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
17 -- Package : Graphic3d
18 -- Updated : Vendredi 2 Octobre 1992
19 -- Mercredi 31 Mars 1993
20 -- Mercredi 19 Janvier 1994
21 -- 1/08/97 ; PCT : Ajout texture mapping
22 -- 11/97 ; CAL : retrait de la dependance avec math
23 -- 11/97 ; CAL : retrait des DataStructure
24 -- 04/98 ; FGU : ajout champs 'TOR_EMISSION'
25 -- 16-09-98; BGN: (S3819) Ajout TypeOfTriedronEcho,
26 -- TypeOfTriedronPosition.
27 -- 22-09-98; BGN: S3989 (anciennement S3819): report
28 -- dans Aspect des TypeOfTriedron*
29 -- 26-03-99 : FMN ; Compatibilite ascendante:
30 -- Ajout des anciens noms de materiaux.
31 -- 09-04-99 : GG ; Compatibilite ascendante:
32 -- NameOfPhysicalMaterial disparait
33 -- 23-11-99 : GG ; Add material name DEFAULT
34 -- 16-06-2000 : ATS : Study G005: class ArrayOfPrimitives
35 -- and derivated used for model presentation.
36 -- Required: enumeration TypeOfPrimitive;
37 -- imported PrimitiveArray; class PrimitiveList.
38 -- 17-12-01 : GG ; IMP171201 : Add material name UserDefined
39 -- Thanks to Stephane ROUTELOUS
40 -- 20-01-2009 : ABD Integration support of system fonts (using FTGL and FreeType)
41 -- Objective : Specifications definitives
47 ---Purpose: This package permits the creation of 3d graphic objects
49 -- These objects, called structures, are composed of groups of
50 -- primitives and attributes.
51 -- The group is the smallest editable element of a structure.
52 -- A structure can be displayed, erased, high-lighted.
53 -- A transformation can be applied to it.
54 -- Structures can be connected to form a tree of structures,
55 -- composed by transformations.
56 -- The visualiser permits global manipulation of structures.
58 ---Keywords: Structure, Group, Primitives, Line, Marker, Text,
59 -- FillAreas, Vertex, Vector, Material, Font, Shading
79 -----------------------
80 -- Category: Exceptions
81 -----------------------
83 exception AspectTextDefinitionError inherits OutOfRange;
84 ---Category: Exceptions
86 exception CycleError inherits DomainError;
87 ---Category: Exceptions
89 exception GroupDefinitionError inherits OutOfRange;
90 ---Category: Exceptions
92 exception InitialisationError inherits OutOfRange;
93 ---Category: Exceptions
95 exception MaterialDefinitionError inherits OutOfRange;
96 ---Category: Exceptions
98 exception PriorityDefinitionError inherits OutOfRange;
99 ---Category: Exceptions
101 exception StructureDefinitionError inherits OutOfRange;
102 ---Category: Exceptions
104 exception TransformError inherits OutOfRange;
105 ---Category: Exceptions
107 exception VectorError inherits OutOfRange;
108 ---Category: Exceptions
110 -------------------------
111 -- Category: Enumerations
112 -------------------------
114 enumeration NameOfMaterial is
115 NOM_BRASS, -- laiton (PHYSIC)
116 NOM_BRONZE, -- bronze (PHYSIC)
117 NOM_COPPER, -- cuivre (PHYSIC)
118 NOM_GOLD, -- or (PHYSIC)
120 NOM_PEWTER, -- etain (PHYSIC)
122 NOM_PLASTER, -- platre (GENERIC)
123 NOM_PLASTIC, -- plastic (GENERIC)
125 NOM_SILVER, -- argent (PHYSIC)
127 NOM_STEEL, -- acier (PHYSIC)
129 NOM_STONE, -- pierre (PHYSIC)
131 NOM_SHINY_PLASTIC, -- plastique brillant (GENERIC)
132 NOM_SATIN, -- satin (GENERIC)
133 NOM_METALIZED, -- metallise New (GENERIC)
134 NOM_NEON_GNC, -- neon New (GENERIC)
135 NOM_CHROME, -- chrome New (PHYSIC)
136 NOM_ALUMINIUM, -- aluminium New (PHYSIC)
137 NOM_OBSIDIAN, -- obsidian New (PHYSIC)
138 NOM_NEON_PHC, -- neon New (PHYSIC)
139 NOM_JADE, -- jade New (PHYSIC)
148 NOM_UserDefined -- owner material
150 ---Purpose: Types of aspect materials.
151 ---Category: Enumerations
153 enumeration TypeOfMaterial is MATERIAL_ASPECT, -- Materiel generique
154 MATERIAL_PHYSIC -- Materiel physique
156 ---Purpose: Types of materials specifies if a material can change color.
157 ---Category: Enumerations
159 enumeration NameOfTexture1D is NOT_1D_ELEVATION,
162 ---Purpose: Types of standard textures.
163 ---Category: Enumerations
166 enumeration NameOfTexture2D is NOT_2D_MATRA,
169 NOT_2D_BLUEWHITE_PAPER,
189 ---Purpose: Types of standard textures.
190 ---Category: Enumerations
193 enumeration NameOfTextureEnv is NOT_ENV_CLOUDS,
202 end NameOfTextureEnv;
203 ---Purpose: Types of standard textures.
204 ---Category: Enumerations
206 enumeration TypeOfTexture is TOT_1D,
209 ---Purpose: Type of the texture file format.
210 ---Category: Enumerations
212 enumeration TypeOfTextureMode is TOTM_OBJECT,
217 ---Purpose: Type of the texture projection.
218 ---Category: Enumerations
220 enumeration TypeOfTextureFilter is TOTF_NEAREST,
223 ---Purpose: Type of the texture filter.
224 -- Notice that for textures without mipmaps linear interpolation will be used instead of TOTF_BILINEAR and TOTF_TRILINEAR.
225 ---Category: Enumerations
227 enumeration LevelOfTextureAnisotropy is LOTA_OFF,
231 ---Purpose: Level of anisotropy filter.
232 -- Notice that actual quality depends on hardware capabilities!
233 ---Category: Enumerations
235 enumeration NameOfTexturePlane is NOTP_XY,
239 ---Purpose: Type of the texture projection plane for both S and T texture coordinate.
240 ---Category: Enumerations
242 enumeration TypeOfComposition is TOC_REPLACE,
244 end TypeOfComposition;
245 ---Purpose: To manage the transformation matrices of structures.
246 ---Category: Enumerations
248 enumeration TypeOfConnection is TOC_ANCESTOR,
250 end TypeOfConnection;
251 ---Purpose: To manage the connections between the structures.
252 ---Category: Enumerations
254 enumeration TypeOfPolygon is TOP_UNKNOWN,
259 ---Purpose: The type of polygon in a group in a structure.
260 ---Category: Enumerations
262 enumeration TypeOfPrimitive is TOP_UNDEFINED,
271 ---Purpose: The type of primitive in a group in a structure.
272 ---Category: Enumerations
274 enumeration TypeOfPrimitiveArray is TOPA_UNDEFINED,
282 TOPA_QUADRANGLESTRIPS,
284 end TypeOfPrimitiveArray;
285 ---Purpose: The type of primitive array in a group in a structure.
286 ---Category: Enumerations
288 enumeration TypeOfReflection is TOR_AMBIENT,
292 end TypeOfReflection;
293 ---Purpose: Nature of the reflection of a material.
294 ---Category: Enumerations
296 enumeration TypeOfStructure is TOS_WIREFRAME,
301 ---Purpose: Structural attribute indicating if it can be displayed
302 -- in wireframe, shadow mode, or both.
303 ---Category: Enumerations
305 enumeration TextPath is TP_UP,
310 ---Purpose: Direction in which text is displayed.
311 ---Category: Enumerations
313 enumeration HorizontalTextAlignment is HTA_LEFT,
316 end HorizontalTextAlignment;
317 ---Purpose: Defines the horizontal position of the text
318 -- relative to its anchor.
319 ---Category: Enumerations
321 enumeration VerticalTextAlignment is VTA_BOTTOM,
324 end VerticalTextAlignment;
325 ---Purpose: Defines the vertical position of the text
326 -- relative to its anchor.
327 ---Category: Enumerations
329 enumeration GroupAspect is ASPECT_LINE,
334 ---Purpose: Identifies primitives aspects defined per group.
335 -- - ASPECT_LINE: aspect for line primitives;
336 -- - ASPECT_TEXT: aspect for text primitives;
337 -- - ASPECT_MARKER: aspect for marker primitives;
338 -- - ASPECT_FILL_AREA: aspect for face primitives.
340 enumeration RenderingMode is
341 RM_RASTERIZATION, RM_RAYTRACING
343 ---Purpose: Describes rendering modes.
344 -- - RM_RASTERIZATION: enables OpenGL rasterization mode;
345 -- - RM_RAYTRACING: enables GPU ray-tracing mode.
347 ---------------------------
348 -- Category: Imported types
349 ---------------------------
352 ---Purpose: Redefines BVH_Box<Standard_ShortReal, 4> for AABB representation
353 ---Category: Imported types
355 imported Buffer_Handle;
356 imported BoundBuffer;
357 imported BoundBuffer_Handle;
358 imported IndexBuffer;
359 imported IndexBuffer_Handle;
364 imported CBitFields20;
365 ---Category: Imported types
367 imported CBitFields16;
368 ---Category: Imported types
370 imported CBitFields8;
371 ---Category: Imported types
373 imported CBitFields4;
374 ---Category: Imported types
376 imported CAspectFillArea;
377 imported CAspectMarker;
378 imported CAspectLine;
379 imported CAspectText;
382 ---Category: Imported types
384 pointer CStructurePtr to CStructure from Graphic3d;
386 imported CStructure_Handle;
389 ---Category: Imported types
392 ---Category: Imported types
395 ---Category: Imported types
398 ---Category: Imported types
400 imported RenderingParams;
401 ---Purpose: Describes rendering parameters and effects.
402 ---Category: Imported types
404 imported CGraduatedTrihedron;
405 ---Category: Imported types
408 ---Category: Imported types
410 imported ClipPlane_Handle;
414 imported CTransPersStruct;
415 imported TransModeFlags;
417 imported MarkerImage;
418 imported MarkerImage_Handle;
419 imported Camera_Handle;
421 primitive PtrFrameBuffer;
428 imported ZLayerSettings;
435 deferred class ArrayOfPrimitives;
439 class ArrayOfPolylines;
441 class ArrayOfSegments;
443 class ArrayOfPolygons;
445 class ArrayOfTriangles;
447 class ArrayOfTriangleStrips;
449 class ArrayOfTriangleFans;
451 class ArrayOfQuadrangles;
453 class ArrayOfQuadrangleStrips;
458 class AspectFillArea3d;
461 class AspectMarker3d;
467 deferred class Group;
470 class MaterialAspect;
476 pointer StructurePtr to Structure from Graphic3d;
478 deferred class GraphicDriver;
480 deferred class StructureManager;
483 pointer StructureManagerPtr to StructureManager from Graphic3d;
485 deferred class DataStructureManager;
494 imported MapOfStructure;
495 imported SequenceOfDisplayedStructures;
497 ---------------------------------
498 -- Category: Instantiated classes
499 ---------------------------------
501 imported SequenceOfGroup;
503 class SequenceOfStructure instantiates
504 Sequence from TCollection
505 (Structure from Graphic3d);
506 ---Category: Instantiated classes
508 class HSequenceOfStructure instantiates
509 HSequence from TCollection
510 (Structure from Graphic3d, SequenceOfStructure from Graphic3d);
511 ---Category: Instantiated classes
513 class Array1OfVector instantiates
514 Array1 from TCollection (Vector from Graphic3d);
515 ---Category: Instantiated classes
517 class Array1OfVertex instantiates
518 Array1 from TCollection (Vertex from Graphic3d);
519 ---Category: Instantiated classes
521 class Array2OfVertex instantiates
522 Array2 from TCollection (Vertex from Graphic3d);
523 ---Category: Instantiated classes
525 class ListOfShortReal instantiates
526 List from TCollection (ShortReal from Standard);
527 ---Category: Instantiated classes
529 --ABD Integration support of system fonts (using FTGL and FreeType)
530 imported NListOfHAsciiString;
531 ---Category: Instantiated classes
533 imported ShaderProgram_Handle;
534 ---Category: Instantiated classes
536 imported SequenceOfHClipPlane;
537 ---Category: Instantiated classes
538 -- Sequence of handles on clip planes
540 deferred class TextureRoot from Graphic3d;
541 deferred class TextureMap from Graphic3d;
542 deferred class Texture1D from Graphic3d;
543 deferred class Texture2D from Graphic3d;
545 class TextureParams from Graphic3d;
546 class TextureEnv from Graphic3d;
547 class Texture1Dmanual from Graphic3d;
548 class Texture1Dsegment from Graphic3d;
549 class Texture2Dmanual from Graphic3d;
550 class Texture2Dplane from Graphic3d;
553 enumeration ExportFormat is
566 enumeration SortType is
568 ST_Simple, -- sorting by depth of center point of primitive(fast)
569 ST_BSP_Tree -- sorting by BSPTree (slow, but fine result )