0024166: Unable to create file with "Save" menu of voxeldemo Qt sample
[occt.git] / src / Graphic3d / Graphic3d.cdl
CommitLineData
b311480e 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
7fd59977 5--
b311480e 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
7fd59977 21-- Package : Graphic3d
7fd59977 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.
7fd59977 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)
7fd59977 46-- Objective : Specifications definitives
7fd59977 47
48package 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
68uses
69
70 TCollection,
71 TColStd,
b8ddfc2f 72 TColgp,
7fd59977 73 OSD,
74 Quantity,
75 Aspect,
76 MMgt,
7fd59977 77 WNT,
78 Image,
eeaaaefb 79 gp,
80 Font
7fd59977 81is
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,
a577aaab 218 TOTM_MANUAL,
219 TOTM_SPRITE;
7fd59977 220 ---Purpose: Type of the texture projection.
221 ---Category: Enumerations
222
bf75be98 223 enumeration TypeOfTextureFilter is TOTF_NEAREST,
224 TOTF_BILINEAR,
225 TOTF_TRILINEAR;
226 ---Purpose: Type of the texture filter.
227 -- Notice that for textures without mipmaps linear interpolation will be used instead of TOTF_BILINEAR and TOTF_TRILINEAR.
228 ---Category: Enumerations
229
230 enumeration LevelOfTextureAnisotropy is LOTA_OFF,
231 LOTA_FAST,
232 LOTA_MIDDLE,
233 LOTA_QUALITY;
234 ---Purpose: Level of anisotropy filter.
235 -- Notice that actual quality depends on hardware capabilities!
236 ---Category: Enumerations
237
7fd59977 238 enumeration NameOfTexturePlane is NOTP_XY,
239 NOTP_YZ,
240 NOTP_ZX,
241 NOTP_UNKNOWN;
242 ---Purpose: Type of the texture projection plane for both S and T texture coordinate.
243 ---Category: Enumerations
244
245 enumeration TypeOfComposition is TOC_REPLACE,
246 TOC_POSTCONCATENATE
247 end TypeOfComposition;
248 ---Purpose: To manage the transformation matrices of structures.
249 ---Category: Enumerations
250
251 enumeration TypeOfConnection is TOC_ANCESTOR,
252 TOC_DESCENDANT
253 end TypeOfConnection;
254 ---Purpose: To manage the connections between the structures.
255 ---Category: Enumerations
256
257 enumeration TypeOfPolygon is TOP_UNKNOWN,
258 TOP_COMPLEX,
259 TOP_CONCAVE,
260 TOP_CONVEX
261 end TypeOfPolygon;
262 ---Purpose: The type of polygon in a group in a structure.
263 ---Category: Enumerations
264
265 enumeration TypeOfPrimitive is TOP_UNDEFINED,
266 TOP_POLYLINE,
267 TOP_POLYGON,
268 TOP_TRIANGLEMESH,
269 TOP_QUADRANGLEMESH,
270 TOP_TEXT,
271 TOP_MARKER,
272 TOP_PARRAY
273 end TypeOfPrimitive;
274 ---Purpose: The type of primitive in a group in a structure.
275 ---Category: Enumerations
276
277 enumeration TypeOfPrimitiveArray is TOPA_UNDEFINED,
278 TOPA_POINTS,
279 TOPA_POLYLINES,
280 TOPA_SEGMENTS,
281 TOPA_POLYGONS,
282 TOPA_TRIANGLES,
283 TOPA_QUADRANGLES,
284 TOPA_TRIANGLESTRIPS,
285 TOPA_QUADRANGLESTRIPS,
286 TOPA_TRIANGLEFANS
287 end TypeOfPrimitiveArray;
288 ---Purpose: The type of primitive array in a group in a structure.
289 ---Category: Enumerations
290
291 enumeration TypeOfReflection is TOR_AMBIENT,
292 TOR_DIFFUSE,
293 TOR_SPECULAR,
294 TOR_EMISSION
295 end TypeOfReflection;
296 ---Purpose: Nature of the reflection of a material.
297 ---Category: Enumerations
298
299 enumeration TypeOfStructure is TOS_WIREFRAME,
300 TOS_SHADING,
301 TOS_COMPUTED,
302 TOS_ALL
303 end TypeOfStructure;
304 ---Purpose: Structural attribute indicating if it can be displayed
305 -- in wireframe, shadow mode, or both.
306 ---Category: Enumerations
307
308 enumeration TextPath is TP_UP,
309 TP_DOWN,
310 TP_LEFT,
311 TP_RIGHT
312 end TextPath;
313 ---Purpose: Direction in which text is displayed.
314 ---Category: Enumerations
315
316 enumeration HorizontalTextAlignment is HTA_LEFT,
317 HTA_CENTER,
318 HTA_RIGHT
319 end HorizontalTextAlignment;
320 ---Purpose: Defines the horizontal position of the text
321 -- relative to its anchor.
322 ---Category: Enumerations
323
324 enumeration VerticalTextAlignment is VTA_BOTTOM,
325 VTA_CENTER,
326 VTA_TOP
327 end VerticalTextAlignment;
328 ---Purpose: Defines the vertical position of the text
329 -- relative to its anchor.
330 ---Category: Enumerations
331
332 enumeration GroupAspect is ASPECT_LINE,
333 ASPECT_TEXT,
334 ASPECT_MARKER,
335 ASPECT_FILL_AREA
336 end GroupAspect;
337 ---Purpose: Identifies primitives aspects defined per group.
338 -- - ASPECT_LINE: aspect for line primitives;
339 -- - ASPECT_TEXT: aspect for text primitives;
340 -- - ASPECT_MARKER: aspect for marker primitives;
341 -- - ASPECT_FILL_AREA: aspect for face primitives.
342
343 ---------------------------
344 -- Category: Imported types
345 ---------------------------
346
347 imported PrimitiveArray;
692613e5 348 imported BufferType;
7fd59977 349
350 imported CBitFields20;
351 ---Purpose: Defines the C structure
352 ---Category: Imported types
353
354 imported CBitFields16;
355 ---Purpose: Defines the C structure
356 ---Category: Imported types
357
358 imported CBitFields8;
359 ---Purpose: Defines the C structure
360 ---Category: Imported types
361
362 imported CBitFields4;
363 ---Purpose: Defines the C structure
364 ---Category: Imported types
365
366 imported CGroup;
367 ---Purpose: Defines the C structure <agroup>
368 ---Category: Imported types
369
370 imported CStructure;
371 ---Purpose: Defines the C structure <astructure>
372 ---Category: Imported types
373
374 imported CLight;
375 ---Purpose: Defines the C structure <alight>
376 ---Category: Imported types
377
378 imported CPick;
379 ---Purpose: Defines the C structure <apick>
380 ---Category: Imported types
381
382 imported CPlane;
383 ---Purpose: Defines the C structure <aplane>
384 ---Category: Imported types
385
386 imported CBounds;
387 ---Purpose: Defines the C structure <abounds>
388 ---Category: Imported types
389
390 imported CUserDraw;
391 ---Purpose: Defines the C structure <auserdraw>
392 ---Category: Imported types
393
394 imported CView;
395 ---Purpose: Defines the C structure <aview>
396 ---Category: Imported types
397
398 imported CGraduatedTrihedron;
399 ---Purpose: Defines the C structure of a graduated trihedron.
400 ---Category: Imported types
401
4269bd1b 402 imported ClipPlane;
403 ---Purpose: Describes geometrical and auxiliary properties of clipping
404 -- planes applied on rendering by graphical driver.
405 ---Category: Imported types
406
407 imported ClipPlane_Handle;
408 ---Purpose: CDL-compatibility handle type definition for
409 -- clip plane objects.
410
7fd59977 411 imported CTexture;
412
bf75be98 413 imported CTransPersStruct;
414 imported TransModeFlags;
a577aaab 415
416 imported MarkerImage;
417 imported MarkerImage_Handle;
7fd59977 418
419 primitive PtrFrameBuffer;
bf75be98 420 primitive Vec2;
421 primitive Vec3;
422 primitive Vec4;
938d4544 423 primitive Mat4;
424 primitive Mat4d;
7fd59977 425
426 --------------------
427 -- Category: Classes
428 --------------------
429
430 class Strips;
431 ---Purpose: Contains some static functions to strips treatment
432
433 deferred class ArrayOfPrimitives;
434 ---Purpose: Contains basic methods for array allocation and filling
435
436 class ArrayOfPoints;
437 ---Purpose: Contains points array definition
438
439 class ArrayOfPolylines;
440 ---Purpose: Contains polylines array definition
441
442 class ArrayOfSegments;
443 ---Purpose: Contains segments array definition
444
445 class ArrayOfPolygons;
446 ---Purpose: Contains polygons array definition
447
448 class ArrayOfTriangles;
449 ---Purpose: Contains triangles array definition
450
451 class ArrayOfTriangleStrips;
452 ---Purpose: Contains triangles strip array definition
453
454 class ArrayOfTriangleFans;
455 ---Purpose: Contains triangles fan array definition
456
457 class ArrayOfQuadrangles;
458 ---Purpose: Contains quatrangles array definition
459
460 class ArrayOfQuadrangleStrips;
461 ---Purpose: Contains quadrangles strip array definition
462
463 class AspectLine3d;
464 ---Purpose: Grouping line attributes
465 ---Category: Classes
466
467 class AspectFillArea3d;
468 ---Purpose: Grouping face attributes
469 ---Category: Classes
470
471 class AspectMarker3d;
472 ---Purpose: Grouping marker attributes
473 ---Category: Classes
474
475 class AspectText3d;
476 ---Purpose: Grouping text attributes.
477 ---Category: Classes
478
479 class Group;
480 ---Purpose: For grouping together primitives in a structure
481 ---Category: Classes
482
7fd59977 483 class MaterialAspect;
484 ---Purpose: Aspect attributes of a 3d face.
485 ---Category: Classes
486
487 class Structure;
488 ---Purpose: Graphic object.
489 ---Category: Classes
490
491 deferred class GraphicDriver;
492 ---Purpose: Defines a graphic driver for 3d interface
493
494 deferred class StructureManager;
495 ---Purpose: Visualiser with which the graphic objects are associated.
496 ---Category: Classes
497
498 deferred class DataStructureManager;
499 ---Purpose: Visualiser with which the graphic objects are associated.
500 ---Category: Classes
501
502 deferred class Plotter;
503 ---Purpose: Defines the minimal plotter.
504 ---Category: The classes
505
506 class Vector;
507 ---Purpose: 3d vector
508 ---Category: Classes
509
b8ddfc2f 510 imported Vertex;
7fd59977 511 ---Purpose: 3d vertex
512 ---Category: Classes
513
7fd59977 514 ---------------------
515 -- Category: Pointers
516 ---------------------
517
518 pointer StructPtr to Structure from Graphic3d;
519 ---Category: Pointers
520
521 ---------------------------------
522 -- Category: Instantiated classes
523 ---------------------------------
524
525 class ListOfPArray instantiates
526 List from TCollection (ArrayOfPrimitives from Graphic3d);
527 ---Category: Instantiated classes
528
529 class SequenceOfAddress instantiates
530 Sequence from TCollection
531 (Address from Standard);
532 ---Category: Instantiated classes
533
534 class SetOfGroup instantiates
535 Set from TCollection (Group from Graphic3d);
536 ---Category: Instantiated classes
537
538 class HSetOfGroup instantiates
539 HSet from TCollection
540 (Group from Graphic3d, SetOfGroup);
541 ---Category: Instantiated classes
542
543 class SequenceOfGroup instantiates
544 Sequence from TCollection (Group from Graphic3d);
545
546 ---Category: Instantiated classes
547
548 class HSequenceOfGroup instantiates
549 HSequence from TCollection
550 (Group from Graphic3d, SequenceOfGroup from Graphic3d);
551 ---Category: Instantiated classes
552
553 class MapOfStructure instantiates
554 Map from TCollection (Structure from Graphic3d,MapTransientHasher from TColStd);
555
556
557 ---Category: Instantiated classes
558
559 class SequenceOfStructure instantiates
560 Sequence from TCollection
561 (Structure from Graphic3d);
562 ---Category: Instantiated classes
563
564 class HSequenceOfStructure instantiates
565 HSequence from TCollection
566 (Structure from Graphic3d, SequenceOfStructure from Graphic3d);
567 ---Category: Instantiated classes
568
569 class Array1OfVector instantiates
570 Array1 from TCollection (Vector from Graphic3d);
571 ---Category: Instantiated classes
572
573 class Array1OfVertex instantiates
574 Array1 from TCollection (Vertex from Graphic3d);
575 ---Category: Instantiated classes
576
577 class Array2OfVertex instantiates
578 Array2 from TCollection (Vertex from Graphic3d);
579 ---Category: Instantiated classes
580
7fd59977 581 class ListOfShortReal instantiates
582 List from TCollection (ShortReal from Standard);
583 ---Category: Instantiated classes
584
585 --ABD Integration support of system fonts (using FTGL and FreeType)
586 imported NListOfHAsciiString;
587 ---Category: Instantiated classes
588
30f0ad28 589 imported ShaderProgram_Handle;
590 ---Category: Instantiated classes
591
51b10cd4 592 imported SequenceOfHClipPlane;
4269bd1b 593 ---Category: Instantiated classes
51b10cd4 594 -- Sequence of handles on clip planes
4269bd1b 595
bf75be98 596 deferred class TextureRoot from Graphic3d;
7fd59977 597 deferred class TextureMap from Graphic3d;
598 deferred class Texture1D from Graphic3d;
599 deferred class Texture2D from Graphic3d;
600
bf75be98 601 class TextureParams from Graphic3d;
7fd59977 602 class TextureEnv from Graphic3d;
603 class Texture1Dmanual from Graphic3d;
604 class Texture1Dsegment from Graphic3d;
605 class Texture2Dmanual from Graphic3d;
606 class Texture2Dplane from Graphic3d;
607
608
609 enumeration ExportFormat is
610
611 EF_PostScript,
612 EF_EnhPostScript,
613 EF_TEX,
614 EF_PDF,
615 EF_SVG,
5cedc27f
K
616 EF_PGF,
617 EF_EMF
7fd59977 618
619 end ExportFormat;
620
621
622 enumeration SortType is
623
624 ST_Simple, -- sorting by depth of center point of primitive(fast)
625 ST_BSP_Tree -- sorting by BSPTree (slow, but fine result )
626
627 end SortType;
628
dc3fe572 629 ----------------------------
630 -- Category: Package methods
631 ----------------------------
632
633 InitGraphicDriver (theDisplayConnection: DisplayConnection_Handle from Aspect)
634 returns GraphicDriver from Graphic3d
635 raises DriverDefinitionError from Aspect;
636 ---Purpose: Initialize graphic driver and returns Handle to it.
637
638
639
7fd59977 640end Graphic3d;