0024321: Use List collection instead of NCollection_Set for collection of Handle...
[occt.git] / src / PrsMgr / PrsMgr_PresentableObject.cdl
CommitLineData
b311480e 1-- Created on: 1995-01-25
2-- Created by: Jean-Louis Frenkel
3-- Copyright (c) 1995-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
7fd59977 21-- Modified by Rob (18/12/96) -> information about modes to update.
22-- Rob (04/07/97) -> TypeOfPresentation3d () Method
23-- changed to Public Method.
24-- -> Option Projector Dependant/Independant
25-- may be set at any time , not only in
26-- the constructor or the presentable.
27-- ->Insert Locations Methods...
28-- Rob (16/12/97) -> Get the list of modes to be updated
29-- -> Flags all the Prs to be updated...
30-- GG IMP020200 -> Presentations() method become protected
31-- and no more private.
32-- SAN (22/03/04) -> OCC4895 High-level interface for controlling
33-- polygon offsets: Fill() made protected virtual.
7fd59977 34
35deferred class PresentableObject from PrsMgr inherits TShared from MMgt
36
37
128cc8df 38 ---Purpose: A framework to supply the Graphic3d
7fd59977 39 -- structure of the object to be presented. On the first
40 -- display request, this structure is created by calling the
41 -- appropriate algorithm and retaining this frameworkfor
42 -- further display.
43 -- This abstract framework is inherited in Application
44 -- Interactive Services (AIS), notably in:
45 -- - AIS_InteractiveObject
46 -- - AIS_ConnectedInteractive
47 -- - AIS_MultipleConnectedInteractive
48 -- - AIS_Shape
49 -- Consequently, 3D presentation should be handled by
50 -- the relevant daughter classes and their member
51 -- functions in AIS. This is particularly true in the
52 -- creation of new interactive objects.
53
54uses
55 Presentation from PrsMgr,
56 Presentation from Prs3d,
7fd59977 57 Presentations from PrsMgr,
58 PresentationManager from PrsMgr,
7fd59977 59 PresentationManager3d from PrsMgr,
60 TypeOfPresentation3d from PrsMgr,
61 DataStructureManager from Graphic3d,
62 Projector from Prs3d,
63 Transformation from Geom,
64 ListOfInteger from TColStd,
65 Location from TopLoc,
4269bd1b 66 ClipPlane_Handle from Graphic3d,
51b10cd4 67 SequenceOfHClipPlane from Graphic3d,
7fd59977 68 -- ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate )
69 TransModeFlags from Graphic3d,
70 Pnt from gp,
71 CTransPersStruct from Graphic3d
72 -- ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate )
73
74raises
75 NotImplemented from Standard
76is
77
78
79 Initialize(aTypeOfPresentation3d: TypeOfPresentation3d from PrsMgr = PrsMgr_TOP_AllView);
80
81---Category: deferred methods.
82--
7fd59977 83
84 Compute(me:mutable;
85 aPresentationManager: PresentationManager3d from PrsMgr;
86 aPresentation: mutable Presentation from Prs3d;
87 aMode: Integer from Standard = 0)
88 ---Purpose: Calculates the 3D view aPresentation and its
89 -- updates. The latter are managed by aPresentationManager.
90 -- aPresentableObject has the display mode aMode;
91 -- this has the default value of 0, that is, the wireframe display mode.
92 raises NotImplemented from Standard
93 is virtual protected;
94
95 Compute(me : mutable;
96 aProjector : Projector from Prs3d;
97 aPresentation : mutable Presentation from Prs3d)
98 ---Purpose: Calculates the 3D view aPresentation and its
99 -- updates. The latter are managed by
100 -- aPresentationManager. Each of the views in the
101 -- viewer and every modification such as rotation, for
102 -- example, entails recalculation.
103 -- It must be redefined to implement hidden line removal
104 -- for the object. The user never calls this method
105 -- himself. This is done via the InteractiveContext object
106 -- and is dependent on the point of view from which the
107 -- object is displayed.
108 raises NotImplemented from Standard
109 is virtual protected;
110
111 Compute(me : mutable;
112 aProjector : Projector from Prs3d;
113 aTrsf : Transformation from Geom;
114 aPresentation : mutable Presentation from Prs3d)
115 is virtual protected;
116 ---Purpose: Calculates the 3D view aPresentation and its
117 -- updates. The latter are managed by
118 -- aPresentationManager. A point of view is provided
119 -- by the projector aProjector, and the geometric
120 -- transformation which has transformed associated
121 -- presentable objects is specified by aTrsf.
122 -- This function is to be used in case where a hidden
123 -- line removal display cannot be calculated
124 -- automatically. This occurs when associated
125 -- presentable objects have been transformed
126 -- geometrically, but not translated.
127 -- Warning
128 -- The transformation aTrsf must be applied to the
129 -- object before computation.
130
131 Update(me: mutable;AllModes: Boolean=Standard_False)
132 ---Purpose: recomputes all presentations of the object.
133 ---Level: Public
134 is protected;
135
136 Update(me: mutable; aMode: Integer from Standard; ClearOther: Boolean from Standard)
137 ---Purpose: Recomputes the presentation in the given mode.
138 -- If ClearOther is true, other presentation will be cleared.
139 is protected;
140
141 Fill(me: mutable;
142 aPresentationManager: PresentationManager from PrsMgr;
143 aPresentation: mutable Presentation from PrsMgr;
144 aMode: Integer from Standard = 0)
145 -- 22-03-04 OCC4895 SAN High-level interface for controlling polygon offsets
146 is virtual protected;
147 --- Purpose: High-level interface for controlling polygon offsets
148
149 -- 22-03-04 OCC4895 SAN High-level interface for controlling polygon offsets
150
151
152 -- Presentations(me: mutable) returns Presentations from PrsMgr
153 -- is static private;
154
155 Presentations(me : mutable) returns Presentations from PrsMgr
156 is static protected;
157 ---C++: return &
158
159 TypeOfPresentation3d(me) returns TypeOfPresentation3d from PrsMgr
160 is static;
161 ---Purpose: Returns information on whether the object accepts display in HLR mode or not.
162
163 -- ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate )
164 SetTransformPersistence( me : mutable;
165 aFlag : TransModeFlags from Graphic3d;
166 APoint : Pnt from gp )
167 is virtual;
168 ---Level: Public
169 ---Purpose: Sets up Transform Persistence Mode for this object.
170 -- This function used to lock in object position, rotation and / or zooming relative to camera position.
171 -- Object will be drawn in the origin setted by APoint parameter (except Graphic3d_TMF_TriedronPers flag
172 -- - see description later). aFlag should be:
173 -- - Graphic3d_TMF_None - no persistence attributes (reset);
174 -- - Graphic3d_TMF_PanPers - object doesn't move;
175 -- - Graphic3d_TMF_ZoomPers - object doesn't resize;
176 -- - Graphic3d_TMF_RotatePers - object doesn't rotate;
177 -- - Graphic3d_TMF_FullPers - pan, zoom and rotate transform persistence;
178 -- - Graphic3d_TMF_TriedronPers - object behaves like trihedron;
179 -- - combination (Graphic3d_TMF_PanPers | Graphic3d_TMF_ZoomPers);
180 -- - combination (Graphic3d_TMF_PanPers | Graphic3d_TMF_RotatePers);
181 -- - combination (Graphic3d_TMF_ZoomPers | Graphic3d_TMF_RotatePers).
182 -- If Graphic3d_TMF_TriedronPers persistence mode selected APoint coordinates X and Y means:
183 -- - X = 0.0, Y = 0.0 - center of view window;
184 -- - X > 0.0, Y > 0.0 - right upper corner of view window;
185 -- - X > 0.0, Y < 0.0 - right lower corner of view window;
186 -- - X < 0.0, Y > 0.0 - left upper corner of view window;
187 -- - X < 0.0, Y < 0.0 - left lower corner of view window.
188 -- And Z coordinate defines the gap from border of view window (except center position).
189 ---Category: Graphic attributes management
190
191 SetTransformPersistence( me : mutable;
192 aFlag : TransModeFlags from Graphic3d )
193 is static;
194 ---Level: Public
195 ---Purpose: Calls previous method with point (0,0,0)
196 ---Category: Graphic attributes management
197
198
199 GetTransformPersistenceMode( me ) returns TransModeFlags from Graphic3d is static;
200
201 ---Level: Public
202 ---Purpose: Gets Transform Persistence Mode for this object
203 ---Category: Graphic attributes management
204
205 GetTransformPersistencePoint( me ) returns Pnt from gp is static;
206
207 ---Level: Public
208 ---Purpose: Gets point of transform persistence for this object
209 ---Category: Graphic attributes management
210
211 -- ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate )
212
213 SetTypeOfPresentation(me:mutable; aType: TypeOfPresentation3d from PrsMgr);
214
215 SetToUpdate (me:mutable;aMode:Integer from Standard);
216 ---Purpose: flags the Prs of mode <AMode> to be Updated.
217 -- the Update will be done when needed.
218
219 SetToUpdate(me:mutable);
220 ---Purpose: flags all the Presentations to be Updated.
221
222 ToBeUpdated(me;ListOfMode : out ListOfInteger from TColStd);
223 ---Purpose: gives the list of modes which are flagged "to be updated".
224
225 SetLocation(me:mutable;aLoc:Location from TopLoc) is virtual;
226
227 HasLocation(me) returns Boolean from Standard;
228
229 Location(me) returns any Location from TopLoc;
230 ---C++: inline
231 ---C++: return const&
232
233 ResetLocation(me:mutable) is virtual;
234
235 UpdateLocation(me:mutable) is virtual;
236
237 UpdateLocation(me:mutable;P : mutable Presentation from Prs3d) is virtual;
238
59f45b7c 239 SetZLayer ( me : mutable;
240 thePrsMgr : PresentationManager from PrsMgr;
241 theLayerId : Integer from Standard )
242 is virtual;
243 ---Purpose: Set Z layer ID and update all presentations of
244 -- the presentable object. The layer can be set only for displayed object.
245 -- If all object presentations are removed, the layer ID will be set to
246 -- default value when computing presentation. The layers mechanism allows
247 -- drawing objects in higher layers in overlay of objects in lower layers.
7fd59977 248
59f45b7c 249 GetZLayer ( me;
250 thePrsMgr : PresentationManager from PrsMgr )
251 returns Integer from Standard is static;
252 ---Purpose: Get ID of Z layer. If no presentations of object is displayed,
253 -- and layer ID is unavailable, the -1 value is returned.
4269bd1b 254
255 AddClipPlane (me : mutable; thePlane : ClipPlane_Handle from Graphic3d) is virtual;
256 ---Purpose: Adds clip plane for graphical clipping for all display mode
257 -- presentations. The composition of clip planes truncates the rendering
258 -- space to convex volume. Please be aware that number of supported
259 -- clip plane is limited. The planes which exceed the limit are ignored.
260 -- Besides of this, some planes can be already set in view where the object
261 -- is shown: the number of these planes should be substracted from limit
262 -- to predict the maximum possible number of object clipping planes.
263 -- @param thePlane [in] the clip plane to be appended to map of clip planes.
264
265 RemoveClipPlane (me : mutable; thePlane : ClipPlane_Handle from Graphic3d) is virtual;
266 ---Purpose: Removes previously added clip plane.
267 -- @param thePlane [in] the clip plane to be removed from map of clip planes.
268
51b10cd4 269 SetClipPlanes (me : mutable; thePlanes : SequenceOfHClipPlane from Graphic3d) is virtual;
4269bd1b 270 ---Purpose: Set clip planes for graphical clipping for all display mode presentations.
271 -- The composition of clip planes truncates the rendering space to convex
272 -- volume. Please be aware that number of supported clip plane is limited.
273 -- The planes which exceed the limit are ignored. Besides of this, some
274 -- planes can be already set in view where the object is shown: the number
275 -- of these planes should be substracted from limit to predict the maximum
276 -- possible number of object clipping planes.
277
51b10cd4 278 GetClipPlanes (me) returns SequenceOfHClipPlane from Graphic3d;
4269bd1b 279 ---C++: inline
280 ---C++: return const&
281 ---Purpose: Get clip planes.
282 -- @return set of previously added clip planes for all display mode presentations.
283
284 UpdateClipping (me : mutable) is virtual protected;
285 ---Purpose: General virtual method for internal update of presentation state
286 -- when some modifications on list of clip planes occurs. Base
287 -- implementation propagate clip planes to every presentation.
288
7fd59977 289fields
290 myPresentations: Presentations from PrsMgr is protected;
291 myTypeOfPresentation3d: TypeOfPresentation3d from PrsMgr is protected;
292 myLocation : Location from TopLoc is protected;
51b10cd4 293 myClipPlanes : SequenceOfHClipPlane from Graphic3d is protected;
7fd59977 294 --myTransformPersistence : TransModeFlags from Graphic3d;
295 myTransformPersistence : CTransPersStruct from Graphic3d;
296
297friends
eb4320f2 298 class Presentation3d from PrsMgr,
7fd59977 299 class PresentationManager from PrsMgr,
300 Compute from Presentation3d from PrsMgr(me : mutable; aProjector : DataStructureManager from Graphic3d),
301 Compute from Presentation3d from PrsMgr(me : mutable; aProjector : DataStructureManager from Graphic3d;
302 aGivenStruct : Structure from Graphic3d),
303 Compute from Presentation3d from PrsMgr(me : mutable; aProjector : DataStructureManager from Graphic3d;
304 TheTrsf : Transformation from Geom),
305 Compute from Presentation3d from PrsMgr(me : mutable; aProjector : DataStructureManager from Graphic3d;
306 TheTrsf : Transformation from Geom;
307 aGivenStruct : Structure from Graphic3d)
308end PresentableObject from PrsMgr;