0024637: Visualization - clean up implementation of rendering in immediate mode
[occt.git] / src / AIS / AIS_LocalContext.cdl
CommitLineData
b311480e 1-- Created on: 1996-09-04
2-- Created by: Robert COUBLANC
3-- Copyright (c) 1996-1999 Matra Datavision
973c2be1 4-- Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 5--
973c2be1 6-- This file is part of Open CASCADE Technology software library.
b311480e 7--
d5f74e42 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
973c2be1 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.
b311480e 13--
973c2be1 14-- Alternatively, this file may be used under the terms of Open CASCADE
15-- commercial license or contractual agreement.
b311480e 16
7fd59977 17-- Modified May 20th 98 :
18-- Modification in Management of selected entities
19-- Now we store the selected entity Owner in AIS_Selection.
20-- (no more links with Session...)
21-- Modifications in Management of hilight of detected entities
22-- VTN 23/11/99 BUC60614 Avoid to crash because
23-- myStdFilters array is too short.
24-- GG : BUC60688 25/05/00 Add SetSensitivity() methods
25-- GG : IMP150501 Remove oboslete method DragTo
26-- (See AIS_InteractiveContext)
27-- ZSV : IMP160701 Add InitDetected(),MoreDetected(),NextDetected(),
28-- DetectedCurrentShape(),DetectedCurrentObject()
29-- methods
7fd59977 30
31
1bd2fa67 32class LocalContext from AIS inherits TShared from MMgt
7fd59977 33
34 ---Purpose: Defines a specific context for selection.
35 -- It becomes possible to:
36 -- + Load InteractiveObjects with a mode to be
37 -- activated + associate InteractiveObjects with a
38 -- set of temporary selectable Objects.... + +
39 -- activate StandardMode of selection for Entities
40 -- inheriting BasicShape from AIS (Selection Of
41 -- vertices, edges, wires,faces... + Add Filters
42 -- acting on detected owners of sensitive primitives
43 --
44 --
45 -- - automatically highlight shapes and
46 -- InteractiveObjects (highlight of detected shape +
47 -- highlight of detected selectable...
48 --
49
50uses
51 AsciiString from TCollection,
52 ListOfInteger from TColStd,
53 SequenceOfInteger from TColStd,
54 MapOfTransient from TColStd,
55 Array1OfPnt2d from TColgp,
56 NameOfColor from Quantity,
57 ShapeEnum from TopAbs,
58 Shape from TopoDS,
59 View from V3d,
60 PresentationManager3d from PrsMgr,
61 Projector from Select3D,
62 IndexedMapOfOwner from SelectMgr,
63 EntityOwner from SelectMgr,
64 OrFilter from SelectMgr,
65 Filter from SelectMgr,
66 SelectionManager from SelectMgr,
67 SelectableObject from SelectMgr ,
68 ListOfFilter from SelectMgr,
69 BRepOwner from StdSelect,
70 ViewerSelector3d from StdSelect,
3c982548 71 SensitivityMode from StdSelect,
7fd59977 72 InteractiveContext from AIS,
73 ClearMode from AIS,
74 InteractiveObject from AIS,
75 Shape from AIS,
76 DataMapOfSelStat from AIS,
77 LocalStatus from AIS,
78 StatusOfPick from AIS,
79 StatusOfDetection from AIS,
80 SequenceOfInteractive from AIS
81
82is
83
84 Create returns mutable LocalContext from AIS;
85
86
87 Create (aCtx : InteractiveContext from AIS;
88 anIndex : Integer from Standard;
89 LoadDisplayed : Boolean from Standard=Standard_True;
90 AcceptStandardModes : Boolean from Standard=Standard_True;
91 AcceptErase : Boolean from Standard= Standard_False;
92 UseBothViewers : Boolean from Standard= Standard_False)
93 returns mutable LocalContext from AIS;
94 ---Purpose: Constructor By Default, the displayed objects are
95 -- automatically loaded.
96
97
98 AcceptErase(me:mutable;aStatus : Boolean from Standard);
99 ---C++: inline
100 ---Purpose: authorize or not others contexts to erase
101 -- temporary displayed objects here;
102
103 AcceptErase(me) returns Boolean from Standard;
104 ---C++: inline
105
106 SetContext(me:mutable;aCtx:InteractiveContext from AIS);
107
108 SelectionName(me) returns AsciiString from TCollection;
109 ---C++: inline
110 ---C++: return const&
111
112
113 Terminate(me: mutable; updateviewer : Boolean from Standard = Standard_True);
114
115 HasSameProjector(me;aPrj:Projector from Select3D)
116 returns Boolean from Standard;
117 ---Purpose: compares the current projector of the localContext
118 -- with <aPrj>
119 -- returns True if the projectors are identical.
120 -- (no need to update projection of selection primitives
121 -- when closing the local context)....
122
123 Reactivate(me:mutable);
124 ---Purpose: to be called when a upper local context was closed...
125 -- useful to put pack the right projector...
126
127 ---Category: LOAD AND PREPARE
128 -- - INTERACTIVE OBJECTS...
129 -- - FILTERS
130 -- - STANDARD MODES OF ACTIVATION
131
132
133
134
135 Display(me : mutable;
136 anInteractive : InteractiveObject from AIS;
137 DisplayMode : Integer from Standard = 0;
138 AllowShapeDecomposition: Boolean from Standard = Standard_True;
139 ActivationMode : Integer from Standard = 0)
140 returns Boolean from Standard;
141 ---Purpose: returns true if done...
142
143 Load(me : mutable;
144 anInteractive : InteractiveObject from AIS;
145 AllowShapeDecomposition: Boolean from Standard = Standard_True;
146 ActivationMode : Integer from Standard = 0)
147 returns Boolean from Standard;
148 ---Purpose: loads <anInteractive> with nodisplay...
149 -- returns true if done
150
151 Erase(me: mutable;
152 anInteractive : InteractiveObject from AIS)
153 returns Boolean from Standard;
154 ---Purpose: returns true if done...
155
156
157 Remove(me : mutable;
158 aSelectable : InteractiveObject from AIS)
159 returns Boolean from Standard;
160
161
162 ClearPrs (me : mutable;
163 anInteractive : InteractiveObject from AIS;
164 aMode : Integer from Standard)
165 returns Boolean from Standard;
166
167 SetShapeDecomposition(me : mutable;
168 aStoredObject : InteractiveObject from AIS;
169 aStatus : Boolean from Standard);
170 ---Purpose: allows or forbids the shape decomposition into
171 -- Activated Standard Mode for <aStoredObject>
172 -- does nothing if the object doesn't inherits
173 -- BasicShape from AIS
174
175
176 Clear(me:mutable;atype: ClearMode from AIS = AIS_CM_All);
177 ---Purpose: according to <atype> , clears the different parts of
178 -- the selector (filters, modeof activation, objects...)
179
180
181
182
183 ActivateMode (me : mutable;
184 aSelectable: InteractiveObject from AIS;
185 aMode : Integer from Standard );
186 ---Purpose: optional : activation of a mode which is not 0 for a selectable...
187
188 DeactivateMode(me : mutable;
189 aSelectable: InteractiveObject from AIS;
190 aMode : Integer from Standard );
191 Deactivate(me : mutable;
192 aSelectable: InteractiveObject from AIS);
193
194 ActivateStandardMode(me:mutable;aType:ShapeEnum from TopAbs);
195 ---Purpose: decomposition of shapes into <aType>
196
197
198 DeactivateStandardMode(me:mutable;aType:ShapeEnum from TopAbs);
199
200 StandardModes(me) returns ListOfInteger from TColStd;
201 ---C++: return const &
202 ---C++: inline
203
204
205
206 AddFilter(me:mutable;aFilter:Filter from SelectMgr);
207
208 RemoveFilter(me:mutable;aFilter: Filter from SelectMgr);
209
210
211 ListOfFilter(me) returns ListOfFilter from SelectMgr;
212 ---C++: return const &
213 ---C++: inline
214
215 Filter(me) returns any OrFilter from SelectMgr;
216 ---C++: return const &
217 ---C++: inline
218
219
220 SetAutomaticHilight(me:mutable ; aStatus:Boolean) ;
221 ---Purpose: if <aStatus> = True , the shapes or subshapes detected
222 -- by the selector will be automatically hilighted in the
223 -- main viewer.
224 -- Else the user has to manage the detected shape outside the
225 -- Shape Selector....
226 ---C++: inline
227
228
229
230 AutomaticHilight(me) returns Boolean;
231 ---C++: inline
232
7fd59977 233 ---Category: THE SELECTION PROCESS
234
679ecdee 235 MoveTo (me : mutable;
236 theXpix, theYpix : Integer from Standard;
237 theView : View from V3d;
238 theToRedrawImmediate : Boolean from Standard)
7fd59977 239 returns StatusOfDetection from AIS;
240
241
242 HasNextDetected(me) returns Boolean from Standard;
243 ---C++: inline
244 ---Purpose: returns True if more than one entity
245 -- was detected at the last Mouse position.
246
679ecdee 247 HilightNextDetected (me : mutable;
248 theView : View from V3d;
249 theToRedrawImmediate : Boolean from Standard)
7fd59977 250 returns Integer from Standard;
251 ---Purpose: returns True if last detected. the next detected will
252 -- be first one (endless loop)
253
679ecdee 254 HilightPreviousDetected (me : mutable;
255 theView : View from V3d;
256 theToRedrawImmediate : Boolean from Standard)
7fd59977 257 returns Integer from Standard;
258
7fd59977 259 UnhilightLastDetected(me:mutable;aView:View from V3d) returns Boolean from Standard;
260 ---Purpose: returns True if something was done...
261
262 Select(me: mutable;updateviewer : Boolean from Standard = Standard_True)
263 returns StatusOfPick from AIS;
264 ---Purpose: returns the number of selected
265
266 ShiftSelect(me: mutable;updateviewer : Boolean from Standard = Standard_True)
267 returns StatusOfPick from AIS;
268
269 Select(me : mutable;
270 XPMin,YPMin,XPMax,YPMax : Integer from Standard;
271 aView : View from V3d;
272 updateviewer : Boolean from Standard = Standard_True)
273 returns StatusOfPick from AIS;
274
275
276 ShiftSelect(me : mutable;
277 XPMin,YPMin,XPMax,YPMax : Integer from Standard;
278 aView : View from V3d;
279 updateviewer : Boolean from Standard = Standard_True)
280 returns StatusOfPick from AIS;
281
282 Select(me : mutable;
283 Polyline : Array1OfPnt2d from TColgp;
284 aView : View from V3d;
285 updateviewer : Boolean from Standard = Standard_True)
286 returns StatusOfPick from AIS;
287
288 ShiftSelect(me : mutable;
289 Polyline : Array1OfPnt2d from TColgp;
290 aView : View from V3d;
291 updateviewer : Boolean from Standard = Standard_True)
292 returns StatusOfPick from AIS;
293
294 HilightPicked(me:mutable;updateviewer:Boolean from Standard =Standard_True) ;
295
296 UnhilightPicked(me:mutable;updateviewer:Boolean from Standard = Standard_True) ;
297
298
299 UpdateSelected (me : mutable;
300 updateviewer : Boolean from Standard = Standard_True);
301
302 UpdateSelected (me : mutable;
303 anobj : InteractiveObject from AIS;
304 updateviewer : Boolean from Standard = Standard_True);
305 ---Purpose: Part of advanced selection highlighting mechanism.
306 -- If no owners belonging to anobj are selected, calls anobj->ClearSelected(),
307 -- otherwise calls anobj->HilightSelected(). This method can be used to avoid
308 -- redrawing the whole selection belonging to several Selectable Objects.
309
310
311 SetSelected(me : mutable;
312 anobj : InteractiveObject from AIS;
313 updateviewer : Boolean from Standard=Standard_True);
314 ---Purpose: useful to update selection with objects coming from
315 -- Collector or stack
316
317 AddOrRemoveSelected(me : mutable;
318 anobj : InteractiveObject from AIS;
319 updateviewer : Boolean from Standard=Standard_True);
320 ---Purpose: useful to update selection with objects coming from
321 -- Collector or stack
322 AddOrRemoveSelected(me : mutable;
323 aShape : Shape from TopoDS;
324 updateviewer : Boolean from Standard=Standard_True);
325
326 AddOrRemoveSelected(me : mutable;
327 Ownr : EntityOwner from SelectMgr;
328 updateviewer : Boolean from Standard=Standard_True);
329
330
331
332 ClearSelected(me:mutable;updateviewer : Boolean from Standard=Standard_True);
333 ---Purpose:
334
335
336 ---Category: GET THE DETECTED
337
338
339 HasDetected (me) returns Boolean from Standard;
340 ---C++: inline
341
342 InitDetected(me: mutable);
343 MoreDetected(me) returns Boolean from Standard;
344 NextDetected(me: mutable);
345 DetectedCurrentShape(me) returns Shape from TopoDS;
346 ---C++: return const &
347 DetectedCurrentObject(me) returns InteractiveObject from AIS;
348
349 HasDetectedShape(me) returns Boolean from Standard;
350 DetectedShape (me) returns Shape from TopoDS;
351 ---C++: return const &
352 DetectedInteractive(me) returns InteractiveObject from AIS;
353 DetectedOwner (me) returns EntityOwner from SelectMgr;
354
355
356 ---Category: GET THE SELECTED
357
358 InitSelected (me: mutable);
359 MoreSelected(me) returns Boolean from Standard;
360 NextSelected(me:mutable);
361 HasShape(me) returns Boolean from Standard;
362 ---Purpose: returns TRUE if the detected entity is a shape
363 -- coming from a Decomposition of an element.
364 SelectedShape(me) returns Shape from TopoDS;
365 ---C++: return const &
366
367 SelectedOwner(me) returns EntityOwner from SelectMgr;
368 IsSelected(me;aniobj: InteractiveObject from AIS) returns Boolean from Standard;
369 IsSelected(me;anOwner: EntityOwner from SelectMgr) returns Boolean from Standard;
370 SelectedInteractive(me) returns InteractiveObject from AIS;
371 HasApplicative (me) returns Boolean from Standard;
372 ---Purpose: returns TRUE if an interactive element
373 -- was associated with the current picked entity.
374 SelectedApplicative(me) returns any Transient from Standard;
375 ---C++: return const &
376
377
378
379
380
381
382 ---Category: Management Of Temporary Attributes
383
384 SetDisplayPriority(me : mutable;
385 anObject: InteractiveObject from AIS;
386 Prior : Integer from Standard);
387
59f45b7c 388 SetZLayer( me : mutable;
389 theIObj : InteractiveObject from AIS;
390 theLayerId : Integer from Standard );
391 ---Purpose: Set Z layer id for interactive object. The layer can be
392 -- specified for displayed object only. The Z layers can be used to display
393 -- temporarily presentations of some object in front of the other objects
394 -- in the scene. The ids for Z layers are generated by V3d_Viewer.
395 -- Note that Z layers differ from under-/overlayer in V3d_View:
396 -- under-/overlayer are intended for specific 2D drawings that appear
397 -- behind/in front of all 3D presentations, while SetZLayer() method
398 -- applies to regular 3D presentations and does not imply any specific
399 -- drawing methods.
400
401 GetZLayer( me;
402 theIObj : InteractiveObject from AIS )
403 returns Integer from Standard;
404 ---Purpose: Get Z layer id set for displayed interactive object.
405 -- If the object doesn't exists in context or has no computed presentations,
406 -- the method returns -1.
407
7fd59977 408 DisplayedObjects(me;theMapToFill : in out MapOfTransient from TColStd)
409 returns Integer from Standard;
410
411 IsIn(me;anObject : InteractiveObject from AIS)
412 returns Boolean from Standard;
413
414
415 IsDisplayed(me;anObject : InteractiveObject from AIS)
416 returns Boolean from Standard;
417
418 IsDisplayed(me;anObject : InteractiveObject from AIS;
419 aMode : Integer from Standard)
420 returns Boolean from Standard;
421
422 SelectionModes(me;anObject:InteractiveObject from AIS)
423 returns ListOfInteger from TColStd;
424 ---C++: return const &
425
426 SubIntensityOn(me:mutable; anObject : InteractiveObject from AIS );
427
428 SubIntensityOff(me:mutable; anObject : InteractiveObject from AIS );
429
430 Hilight(me: mutable; anObject : InteractiveObject from AIS);
431
432 Hilight(me:mutable; anObject : InteractiveObject from AIS;aCol:NameOfColor from Quantity);
433
434 Unhilight(me:mutable; anObject : InteractiveObject from AIS);
435
436 IsHilighted(me;anObject : InteractiveObject from AIS)
437 returns Boolean from Standard;
438
439 IsHilighted(me;
440 anObject : InteractiveObject from AIS;
441 WithColor : out Boolean from Standard;
442 HiCol : out NameOfColor from Quantity)
443 returns Boolean from Standard;
444
3c982548 445 SetSensitivityMode(me : mutable;
446 aMode : SensitivityMode from StdSelect) is static;
447 ---Level: Public
448 ---Purpose: Sets the selection sensitivity mode. SM_WINDOW mode
449 -- uses the specified pixel tolerance to compute the sensitivity
450 -- value, SM_VIEW mode allows to define the sensitivity manually.
451
452 SensitivityMode(me) returns SensitivityMode from StdSelect;
453 ---Level: Public
454 ---Purpose: Returns the selection sensitivity mode.
455
7fd59977 456 SetSensitivity(me:mutable;
457 aPrecision: Real from Standard);
458 ---Level: Public
459 ---Purpose: Define the current selection sensitivity for
460 -- this local context according to the view size.
461
3c982548 462 Sensitivity (me) returns Real from Standard;
463 ---Level: Public
464 ---Purpose: Returns the selection sensitivity value.
465
466 SetPixelTolerance(me:mutable;
7fd59977 467 aPrecision: Integer from Standard = 2);
468 ---Level: Public
469 ---Purpose: Define the current selection sensitivity for
470 -- this local context according to the view size.
471
3c982548 472 PixelTolerance(me) returns Integer from Standard;
473 ---Level: Public
474 ---Purpose: Returns the pixel tolerance.
475
7fd59977 476 ---Category: IMMEDIATE MODE
477
478
679ecdee 479 BeginImmediateDraw (me : mutable)
7fd59977 480 returns Boolean from Standard;
679ecdee 481 ---Purpose: Resets the transient list of presentations previously displayed in immediate mode
482 -- and begins accumulation of new list by following AddToImmediateList()/Color()/Highlight() calls.
483
484 ClearImmediateDraw (me : mutable) is virtual;
485 ---Purpose: Resets the transient list of presentations previously displayed in immediate mode.
7fd59977 486
679ecdee 487 ImmediateAdd (me : mutable;
488 theObj : InteractiveObject from AIS;
489 theMode : Integer from Standard = 0)
7fd59977 490 returns Boolean from Standard;
679ecdee 491 ---Purpose: Stores presentation theMode of object theObj in the transient list of presentations to be displayed in immediate mode.
492 -- Will be taken in account in EndImmediateDraw method.
7fd59977 493
679ecdee 494 EndImmediateDraw (me : mutable;
495 theView : View from V3d)
7fd59977 496 returns Boolean from Standard;
679ecdee 497 ---Purpose: Allows rapid drawing of the view theView by avoiding an update of the whole background.
498
499 IsImmediateModeOn (me) returns Boolean from Standard;
500 ---Purpose: Returns true if Presentation Manager is accumulating transient list of presentations to be displayed in immediate mode.
7fd59977 501
7fd59977 502 ---Category: INTERNAL METHODS;
503
504 UpdateConversion(me:mutable);
505
506 UpdateSort(me:mutable);
507
508
509
510 Status(me) returns AsciiString from TCollection is private;
511
512 Status(me;anObject : InteractiveObject from AIS)
513 returns any LocalStatus from AIS is private;
514 ---C++: return const&
515
516
517
518 LoadContextObjects(me:mutable);
519
520 UnloadContextObjects(me:mutable);
521
522 Process(me : mutable;
523 anObject : SelectableObject from SelectMgr;
524 WithProj: Boolean from Standard = Standard_True) is static private;
525
526 Process(me:mutable;
527 WithProj: Boolean from Standard = Standard_True) is static private;
528
529
530 ActivateStandardModes(me:mutable;anObject: SelectableObject from SelectMgr;
531 WithProj: Boolean from Standard = Standard_True) is static private;
532
679ecdee 533 manageDetected (me : mutable;
534 thePickOwner : EntityOwner from SelectMgr;
535 theView : View from V3d;
536 theToRedrawImmediate : Boolean from Standard) is static private;
7fd59977 537
538 DetectedIndex(me:mutable) returns Integer from Standard is static private;
539 ---C++: inline
540 ---Purpose: returns 0 if the detected entity was Not FilterOK...
541
542 Hilight(me:mutable;Own:EntityOwner from SelectMgr;aview: View from V3d) is static private;
543
544
545 Unhilight(me:mutable;Ownr:EntityOwner from SelectMgr;aview: View from V3d) is static private;
546
547
548 ClearObjects(me:mutable) is static private;
549
550 ClearDetected(me:mutable) is static private;
551
552 IsDecompositionOn(me) returns Boolean from Standard is static private;
553
554 IsShape(me;anIndex:Integer from Standard) returns Boolean from Standard is static private;
555
556 IsValidForSelection(me;anIObj:InteractiveObject from AIS) returns Boolean from Standard is static private;
557
558 IsValidIndex(me;anIndex:Integer from Standard)
559 returns Boolean from Standard is static private;
560 ---C++: inline
561
562 ComesFromDecomposition(me; aPickedIndex : Integer from Standard)
563 returns Boolean from Standard is static private;
564
565
566 DisplayAreas(me:mutable;aviou:View from V3d);
567
568 ClearAreas (me:mutable;
569 aView: View from V3d) is static;
570 ---Level: Internal
571
572 HasFilters(me;aType:ShapeEnum from TopAbs)
573 returns Boolean from Standard is private;
574
575 DisplaySensitive(me:mutable;aView : View from V3d) is static;
576
577 ClearSensitive(me:mutable;aView:View from V3d) is static;
578
7fd59977 579 MainSelector(me) returns any ViewerSelector3d from StdSelect;
580 ---C++: inline
581 ---C++: return const&
582
7fd59977 583 FindSelectedOwnerFromIO(me;anIObj:InteractiveObject from AIS)
1bd2fa67 584 returns EntityOwner from SelectMgr;
7fd59977 585
586 FindSelectedOwnerFromShape(me;aShape : Shape from TopoDS)
1bd2fa67 587 returns EntityOwner from SelectMgr;
7fd59977 588
589
590
591fields
592
593 myCTX : InteractiveContext from AIS;
594 myLoadDisplayed,myAcceptStdMode : Boolean from Standard;
595 myAcceptErase : Boolean from Standard;
596
597 mySM : SelectionManager from SelectMgr;
598 myMainVS : ViewerSelector3d from StdSelect;
599 myMainPM : PresentationManager3d from PrsMgr;
600 mySelName : AsciiString from TCollection;
601 myCollVS : ViewerSelector3d from StdSelect;
602
603 -- The Objects and their attributes...
604
605 myActiveObjects : DataMapOfSelStat from AIS;
606
607
608 -- The Filters...
609
610 myFilters : OrFilter from SelectMgr;
611 myListOfStandardMode : ListOfInteger from TColStd;
612
613 -- VTN myStdFilters : Filter from SelectMgr [7]; --internal mgt
614 myStdFilters : Filter from SelectMgr [9]; --internal mgt
615
616 -- Selection Process
617
618 myAutoHilight : Boolean from Standard;
619 myMapOfOwner : IndexedMapOfOwner from SelectMgr;
620 mylastindex : Integer from Standard;
621 mylastgood : Integer from Standard;
622 myCurrentOwner : Integer from Standard;
623
624
625 myDetectedSeq : SequenceOfInteger from TColStd;
626 myCurDetected : Integer from Standard;
627
628 -- the detected objects.
629 myAISDetectedSeq : SequenceOfInteractive from AIS;
630 myAISCurDetected : Integer from Standard;
631 -- This variables is used by following functions:
632 -- InitDetected(), MoreDetected(), NextDetected(), DetectedCurrentShape(), DetectedCurrentObject().
633
634friends
635
636 KeepTemporary from InteractiveContext from AIS(me:mutable;anIObj:InteractiveObject from AIS;WhichMode : Integer from Standard = -1)
637
638end LocalContext;
639
640
641
642
643