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