0024637: Visualization - clean up implementation of rendering in immediate mode
[occt.git] / src / Visual3d / Visual3d.cdl
1 -- Created on: 1991-10-07
2 -- Created by: NW,JPB,CAL
3 -- Copyright (c) 1991-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: Visual3d.cdl
18 -- Updated: Vendredi 2 Octobre 1992
19 --      Mercredi 31 mars 1993
20 --      1/08/97 ; PCT : ajout texture mapping
21 --      11-97: CAL; retrait de la dependance avec math.
22 --      15/01/98 ; FMN : Suppression Hidden Line 
23 --      16-09-98 ; BGN : Ajout TypeOfTriedronEcho, 
24 --                               TypeOfTriedronPosition.
25 --              22-09-98; BGN: S3989 (anciennement S3819): report
26 --                             dans Aspect des TypeOfTriedron*
27 --      14-01-00; GG : IMP140100 Add ViewManager pointer
28 -- Purpose: Specifications definitives
29
30 package Visual3d
31
32     ---Version:
33
34     ---Purpose: This package contains the group of classes necessary
35     --      for the implementation of commands for the 3D visualiser.
36     --      Use of this package is reserved to the visualiser.
37     --
38     --      The visualiser manages the structures, the views, the
39     --      light sources, and object picking.
40
41     ---Keywords: View, Light, Pick
42     ---Warning:
43     ---References:
44
45 uses
46
47     gp,
48     TCollection,
49     TColStd,
50     Quantity,
51     Aspect,
52     Graphic3d,
53     Image,
54     MMgt,
55     WNT,
56     OSD,
57     Font
58
59 is
60
61     ---------------------------
62     -- Category: The exceptions
63     ---------------------------
64
65     exception ClipDefinitionError inherits OutOfRange;
66     ---Category: The exceptions
67
68     exception ContextPickDefinitionError inherits OutOfRange;
69     ---Category: The exceptions
70
71     exception DepthCueingDefinitionError inherits OutOfRange;
72     ---Category: The exceptions
73
74     exception LightDefinitionError inherits OutOfRange;
75     ---Category: The exceptions
76
77     exception PickError inherits OutOfRange;
78     ---Category: The exceptions
79
80     exception TransformError inherits OutOfRange;
81     ---Category: The exceptions
82
83     exception ViewDefinitionError inherits OutOfRange;
84     ---Category: The exceptions
85
86     exception ViewManagerDefinitionError inherits OutOfRange;
87     ---Category: The exceptions
88
89     exception ViewMappingDefinitionError inherits OutOfRange;
90     ---Category: The exceptions
91
92     exception ViewOrientationDefinitionError inherits OutOfRange;
93     ---Category: The exceptions
94
95     exception ZClippingDefinitionError inherits OutOfRange;
96     ---Category: The exceptions
97
98     exception LayerDefinitionError inherits OutOfRange;
99     ---Category: The exceptions
100
101     -----------------------------
102     -- Category: The enumerations
103     -----------------------------
104
105     enumeration TypeOfAnswer is TOA_YES,
106                     TOA_NO,
107                     TOA_COMPUTE
108     end TypeOfAnswer;
109     ---Purpose: The answer of the method AcceptDisplay
110     --      AcceptDisplay  means is it possible to display the
111     --             specified structure in the specified view ?
112     --      TOA_YES yes
113     --      TOA_NO  no
114     --      TOA_COMPUTE yes but we have to compute the representation
115
116     enumeration TypeOfLightSource is    TOLS_AMBIENT,
117                         TOLS_DIRECTIONAL,
118                         TOLS_POSITIONAL,
119                         TOLS_SPOT
120     end TypeOfLightSource;
121     ---Purpose: Definition of all the type of light sources
122     --
123     --      TOLS_AMBIENT    ambient light
124     --      TOLS_DIRECTIONAL    directional light
125     --      TOLS_POSITIONAL positional light
126     --      TOLS_SPOT       spot light
127
128     enumeration TypeOfModel is  TOM_NONE,
129                     TOM_INTERP_COLOR,
130                     TOM_FACET,
131                     TOM_VERTEX
132     end TypeOfModel;
133     ---Purpose: Definition of the rendering (colour shading) model
134     --  TOM_NONE        No interpolation, constant shading
135     --              (FLAT Shading)
136     --  TOM_INTERP_COLOR    Linear interpolation of color
137     --              (Gouraud Shading)
138     --  TOM_FACET       Interpolation of color based on
139     --              dot products
140     --              (Quick Phong Shading)
141     --  TOM_VERTEX      Interpolation of color based on
142     --              normals
143     --              (Phong Shading)
144     ---Category: The enumerations
145
146     enumeration TypeOfOrder is  TOO_TOPFIRST,
147                     TOO_BOTTOMFIRST
148     end TypeOfOrder;
149     ---Purpose: Definition of the order of selection
150     --      TOO_TOPFIRST    the root structure first
151     --      TOO_BOTTOMFIRST the leaf structure first
152     --      Allows exploration of a PickPath in a PickDescriptor.
153     ---Category: The enumerations
154
155     enumeration TypeOfProjection is TOP_PERSPECTIVE,
156                     TOP_PARALLEL
157     end TypeOfProjection;
158     ---Purpose: Definition of the type of 3D projection
159     --
160     --      TOP_PERSPECTIVE perspective projection (centre of
161     --              projection at a  distance finite from
162     --              plane of projection)
163     --      TOP_PARALLEL    parallel projection (point of
164     --              projection at infinity)
165     ---Category: The enumerations
166
167     enumeration TypeOfVisualization is  TOV_WIREFRAME,
168                         TOV_SHADING
169     end TypeOfVisualization;
170     ---Purpose: Modes of visualisation of objects in a view
171     --
172     --      TOV_WIREFRAME   wireframe visualisation
173     --      TOV_SHADING     shaded visualisation
174     ---Category: The enumerations
175
176     enumeration TypeOfSurfaceDetail is  TOD_NONE, 
177                         TOD_ENVIRONMENT, 
178                         TOD_ALL
179     end TypeOfSurfaceDetail;
180     ---Purpose: Modes of visualisation of objects in a view
181     --
182     --      TOD_NONE        no texture mapping
183     --      TOD_ENVIRONMENT only environnement mapping
184     --      TOD_ALL     environnement + texture mapping
185     ---Category: The enumerations
186
187         enumeration TypeOfBackfacingModel is
188                 TOBM_AUTOMATIC, TOBM_FORCE, TOBM_DISABLE
189         end TypeOfBackfacingModel;
190         ---Purpose  : Modes of display of back faces in the view
191         --
192         --            TOBM_AUTOMATIC graphic's structure setting is in use
193         --            TOBM_FORCE     force display of back faces
194         --            TOBM_DISABLE   disable display of back faces
195         ---Category : Enumerations
196
197     ------------------------
198     -- Category: The classes
199     ------------------------
200
201     class ContextPick;
202     ---Purpose: This class allows the creation and update of a
203     --      pick context for one view of the viewer.
204     --      A context allows the control of different parameters
205     --      before the activation of a pick :
206     --
207     --      * pick aperture.
208     --      * the depth of pick, the number of sub-structures selected.
209     --      * the order of picking, the possibility to traverse
210     --        the pick structures starting from the roots or the leaves.
211     ---Category: The classes
212
213     class ContextView;
214     ---Purpose: This class manages the creation and update of a
215     --      visualisation context for one view in the viewer.
216     --
217     --      A context is defined by :
218     --      * Antialiasing.
219     --      * ZClipping.
220     --      * Depth-cueing.
221     --      * The type of visualisation.
222     --      * The light sources.
223     ---Category: The classes
224
225     class Light;
226     ---Purpose: This class defines and updates light sources.
227     --      There is no limit to the number of light sources defined.
228     --      Only the number of active sources is limited.
229     ---Category: The classes
230
231     class PickDescriptor;
232     ---Purpose: A PickDescriptor contains information on the picks.
233     --      It contains a certain number of PickPaths.
234     ---Category: The classes
235
236     class PickPath;
237     ---Purpose: A PickPath is a vector ( elem_num, pick_id, struct_id ).
238     --      It is one of the constituents of a PickDescriptor.
239     --      There are many Pickpaths in a PickDescriptor.
240     --      Each PickPath describes a structure or an sub-structure.
241     --      The pick-id is set by the SetPickId method from Group.
242     ---Category: The classes
243
244     class View;
245     ---Purpose: Creation and editing of a view in a 3D visualiser.
246     --
247     --      A 3D view is composed of an 'orientation' part defined
248     --      by the position of the observer, the viewing direction,
249     --      and a 'mapping' part defined by the type of projection
250     --      (parallel or perspective), and by the window-viewport
251     --      couple which allows passage from the projected coordinate
252     --      space into the screen space.
253     ---Category: The classes
254
255     class ViewManager;
256     ---Purpose: 3D Visualiser
257     ---Category: The classes
258
259     class Layer;
260     ---Purpose: 2D Layer
261     ---Category: The classes
262
263         class LayerItem;
264     ---Purpose: 2D Layer presentation unit
265     ---Category: The classes
266
267         ---------------------
268         -- Category: Pointers
269         ---------------------
270
271         pointer ViewPtr to View from Visual3d;
272         ---Category: Pointers
273
274         pointer ViewManagerPtr to ViewManager from Visual3d;
275         ---Category: Pointers
276
277     ---------------------------------
278     -- Category: Instantiated classes
279     ---------------------------------
280
281         imported NListOfLayerItem;
282     
283     class SequenceOfPickPath instantiates
284             Sequence from TCollection (PickPath from Visual3d);
285     ---Category: Instantiated classes
286
287     class HSequenceOfPickPath instantiates
288             HSequence from TCollection
289             (PickPath from Visual3d, SequenceOfPickPath);
290     ---Category: Instantiated classes
291
292     class SetOfLight instantiates
293             Set from TCollection (Light from Visual3d);
294     ---Category: Instantiated classes
295
296     class HSetOfLight instantiates
297             HSet from TCollection
298             (Light from Visual3d, SetOfLight);
299     ---Category: Instantiated classes
300
301     class SetOfView instantiates
302             Set from TCollection (View from Visual3d);
303     ---Category: Instantiated classes
304
305     class HSetOfView instantiates
306             HSet from TCollection
307             (View from Visual3d, SetOfView);
308     ---Category: Instantiated classes
309
310 end Visual3d;