8212178c11ea62db1309c6c0e36ce00333bc866d
[occt.git] / src / V3d / V3d.cdl
1 -- Created on: 1992-11-13
2 -- Created by: GG
3 -- Copyright (c) 1992-1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
5 --
6 -- This file is part of Open CASCADE Technology software library.
7 --
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.
13 --
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
16
17 -- Package:     V3d.cdl
18 -- Modified:    stt:25-02-98; S3558: ajout ViewStdAdapter
19 --              ZOV - Mars 30 1998
20 --              stt:08-04-98; suppr. ViewStdAdapter
21 --              16-09-98 ; BGN : Ajout TypeOfTriedronEcho,
22 --                               TypeOfTriedronPosition.
23 --              22-09-98; BGN: S3989 (anciennement S3819): report
24 --                             dans Aspect des TypeOfTriedron*
25 -- Purpose:     Specifications provisoires
26
27 package V3d
28
29         ---Purpose: This package contains the set of commands and services
30         --          of the 3D Viewer. It provides a set of high level commands
31         --          to control the views and viewing modes. This package is
32         --          complementary to the Visual3D graphic package.
33
34 uses
35         TColStd,
36         Graphic3d,
37         Visual3d,
38         MMgt,
39         TCollection,
40         Quantity,
41         Aspect,
42         Image,
43         gp,
44         OSD,
45         Font
46
47 is
48
49         ------------------------------
50         ---Category:  The extern types
51         ------------------------------
52
53         alias Coordinate is Length from Quantity;
54         ---Purpose: User-defined coordinate in the reference plane of
55         --          view (Projection or Mapping).
56
57
58         alias Parameter is Parameter from Quantity;
59
60         --------------------------
61         --Category: The Exceptions
62         --------------------------
63
64         exception BadValue inherits OutOfRange;
65         exception UnMapped inherits DomainError;
66
67         -----------------------------
68         ---Category: The Enumerations
69         -----------------------------
70
71         enumeration TypeOfView is ORTHOGRAPHIC,PERSPECTIVE
72         end TypeOfView ;
73         ---Purpose: Defines the type of projection of the view.
74
75         enumeration TypeOfShadingModel is COLOR,MULTICOLOR,FLAT,GOURAUD,HIDDEN
76               end TypeOfShadingModel ;
77         ---Purpose:
78         -- Defines the type of shading for the graphic object:
79         -- -   V3d_COLOR: simple surface color,
80         -- -   V3d_MULTICOLOR: interpolated colors,
81         -- -   V3d_FLAT: flat shading,
82         -- -   V3d_GOURAUD: Gouraud shading,
83         -- -   V3d_HIDDEN: hidden line removal.
84
85         enumeration  TypeOfSurfaceDetail  is  TEX_NONE, TEX_ENVIRONMENT, TEX_ALL
86                end TypeOfSurfaceDetail;
87         ---Purpose: Modes of visualization for objects in a view
88         -- -   V3d_TEX_NONE: no texture mapping,
89         -- -   V3d_TEX_ENVIRONMENT: environment mapping only,
90         -- -   V3d_TEX_ALL: environment and texture mapping.
91
92        enumeration TypeOfVisualization is      WIREFRAME,ZBUFFER
93                end TypeOfVisualization ;
94         ---Purpose: Determines the type of visualization in the view, either
95         -- WIREFRAME or ZBUFFER (shading).
96
97         enumeration TypeOfZclipping is     OFF,BACK,FRONT,SLICE
98         --          Type "BACK"    Remove rear part
99         --          Type "FRONT"   Remove front part
100         --               "SLICE"   Keep the slice between the front plane
101         --                         plane depth + half the thickness
102         --                         and the rear plane
103         --                         plane depth - half the thickness.
104         --               "OFF"     ZClipping deactivated.
105         end TypeOfZclipping ;
106         ---Purpose: The available options are
107         -- -   V3d_OFF: Zclipping (clipping executed in the
108         --   depth of the view) is deactivated,
109         -- -   V3d_BACK: back Zclipping is activated,
110         -- -   V3d_FRONT: front Zclipping is activated,
111         -- -   V3d_SLICE: both front and back Zclippings are activated.
112
113         enumeration TypeOfLight is AMBIENT,DIRECTIONAL,POSITIONAL,SPOT
114         end TypeOfLight ;
115         ---Purpose: Determines the type of light.
116
117         enumeration TypeOfUpdate is ASAP,WAIT
118         end TypeOfUpdate ;
119         ---Purpose: Determines the type of update of the view
120         -- -   V3d_ASAP: as soon as possible. The view is updated immediately after a modification.
121         -- -   V3d_WAIT: deferred. The view is updated when the Update function is called.
122
123         enumeration TypeOfAxe is X,Y,Z
124         end TypeOfAxe ;
125         ---Purpose: Determines the axis type through the coordinates X, Y, Z.
126
127         enumeration TypeOfOrientation is Xpos,Ypos,Zpos,Xneg,Yneg,Zneg,
128             XposYpos,XposZpos,YposZpos,XnegYneg,XnegYpos,XnegZneg,
129             XnegZpos,YnegZneg,YnegZpos,XposYneg,XposZneg,YposZneg,
130             XposYposZpos,XposYnegZpos,XposYposZneg,XnegYposZpos,
131             XposYnegZneg,XnegYposZneg,XnegYnegZpos,XnegYnegZneg
132         end TypeOfOrientation ;
133         ---Purpose: Determines the type of orientation.
134
135         enumeration TypeOfRepresentation is SIMPLE,COMPLETE,PARTIAL,SAMELAST
136         end TypeOfRepresentation;
137
138
139         enumeration TypeOfPickLight is POSITIONLIGHT,SPACELIGHT,
140             RADIUSTEXTLIGHT,ExtRADIUSLIGHT,IntRADIUSLIGHT,
141             NOTHING
142         end TypeOfPickLight;
143
144         enumeration TypeOfPickCamera is POSITIONCAMERA,SPACECAMERA,
145             RADIUSTEXTCAMERA,ExtRADIUSCAMERA,IntRADIUSCAMERA,
146             NOTHINGCAMERA
147         end TypeOfPickCamera;
148
149     enumeration TypeOfProjectionModel is
150         TPM_SCREEN,TPM_WALKTHROUGH
151     end TypeOfProjectionModel;
152
153         enumeration TypeOfBackfacingModel is
154             TOBM_AUTOMATIC, TOBM_ALWAYS_DISPLAYED, TOBM_NEVER_DISPLAYED
155         end TypeOfBackfacingModel;
156         ---Purpose  : Modes of display of back faces in the view
157         --
158         --            TOBM_AUTOMATIC graphic's structure setting is in use
159         --            TOBM_ALWAYS_DISPLAYED     force display of back faces
160         --            TOBM_NEVER_DISPLAYED      disable display of back faces
161
162         enumeration StereoDumpOptions is
163             SDO_MONO,
164             SDO_LEFT_EYE,
165             SDO_RIGHT_EYE
166         end StereoDumpOptions;
167         ---Purpose : Options to be used with image dumping.
168         --
169         --            SDO_MONO dump monographic projection for stereo camera
170         --            SDO_LEFT_EYE dump left eye projection for stereo camera
171         --            SDO_RIGHT_EYE dump right eye projection for stereo camera
172
173         ------------------------
174         ---Category: The classes
175         ------------------------
176
177         class Viewer;
178
179         class View;
180
181         class LayerMgr;
182
183         deferred class Light;
184
185         class AmbientLight;
186
187         deferred class PositionLight;
188
189         class PositionalLight;
190
191         class DirectionalLight;
192
193         class SpotLight;
194
195         ---------------------------------
196         ---Category: Instantiated classes
197         ---------------------------------
198
199         imported ListOfTransient;
200
201         pointer ViewerPointer to Viewer from V3d;
202         pointer ViewPointer to View from V3d;
203         pointer LayerMgrPointer to LayerMgr from V3d;
204
205         private class RectangularGrid;
206         private class CircularGrid;
207
208         private class ColorScale;
209     private class ColorScaleLayerItem;
210
211         ---------------------------------
212         ---Category: Methodes de package
213         ---------------------------------
214
215         GetProjAxis( Orientation : TypeOfOrientation )
216                                 returns Vector from Graphic3d ;
217         ---Purpose: Determines the orientation vector corresponding
218         --          to the predefined orientation type.
219
220         ArrowOfRadius ( garrow   : Group from Graphic3d;
221                         X0,Y0,Z0 : Coordinate;
222                         DX,DY,DZ : Parameter;
223                         Alpha    : PlaneAngle from Quantity;
224                         Lng      : Parameter ) is protected;
225         ---Level: Advanced
226         ---Purpose: Compute the graphic structure of arrow.
227         --          X0,Y0,Z0 : coordinate of the arrow.
228         --          DX,DY,DZ : Direction of the arrow.
229         --          Alpha    : Angle of arrow.
230         --          Lng      : Length of arrow.
231
232         CircleInPlane ( gcircle  : Group from Graphic3d;
233                         X0,Y0,Z0 : Coordinate;
234                         VX,VY,VZ : Parameter;
235                         Radius   : Parameter ) is protected;
236         ---Level: Advanced
237         ---Purpose: Compute the graphic structure of circle.
238         --          X0,Y0,Z0 : Center of circle.
239         --          VX,VY,VZ : Axis of circle.
240         --          Radius   : Radius of circle.
241
242         SwitchViewsinWindow(aPreviousView: View from V3d;
243                             aNextView: View from V3d);
244
245
246         DrawSphere(aViewer: Viewer from V3d; aRadius: Length from Quantity =1000);
247         ---Purpose: test.
248
249         PickGrid(aViewer: Viewer from V3d; aRadius: Length from Quantity =1000);
250         ---Purpose: test.
251
252         SetPlane(aViewer: Viewer from V3d; x1,y1,z1,x2,y2,z2: Length from Quantity);
253         ---Purpose: test.
254
255 end V3d;
256