0024837: Visualization - revise design and implementation of connected Interactive...
[occt.git] / src / AIS / AIS_InteractiveContext.cdl
1 -- Created on: 1996-12-18
2 -- Created by: Robert COUBLANC
3 -- Copyright (c) 1996-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 --Modified by   
18 --   rob : Dec 17 1997 -> Update Method Added + Use in Deviation Angle...
19 --   rob : Feb 05 1998 -> UpdateOnlySelection, UpdateOnlyPrs
20 --         Apr 02 1998 -> Select Methods has been added a boolean updateviewer.
21 --   GG  :  GER61351 17/11/1999 Change SetColor() with a compatible i
22 --          Quantity_Color instead the restricted NameOfColor.
23 --          Add SetCurrentFacingModel() methods
24 --   GG  : IMP140200 Add SetSelectedAspect() method
25 --   GG  : 25/05/00 BUC60688 Add SetSensitivity() methods 
26 --   VSV : 22/05/01 Add Selection by polygon
27 --   SAV :  Add DisplayFromCollector() method
28 --   ZSV : IMP160701 Add InitDetected(),MoreDetected(),NextDetected(),
29 --                       DetectedCurrentShape(),DetectedCurrentObject()
30 --                       methods
31 --   GG  : IMP051001 Add SetZDetection() and ZDetection() methods
32 --   SAV : OCC172 : Delete() redefined to remove selection objects from
33 --                  the static map.
34 --   SAN : OCC4895 22/03/04 High-level interface for controlling polygon offsets
35 --   SLN : SetToHilightSelected method added
36
37
38
39 class InteractiveContext from AIS inherits TShared from MMgt
40
41         ---Purpose: The Interactive Context allows you to manage
42         -- graphic behavior and selection of Interactive Objects
43         -- in one or more viewers. Class methods make this
44         -- highly transparent.
45         -- It is essential to remember that an Interactive Object
46         -- which is already known by the Interactive Context
47         -- must be modified using Context methods. You can
48         -- only directly call the methods available for an
49         -- Interactive Object if it has not been loaded into an
50         -- Interactive Context.
51         -- You must distinguish two states in the Interactive Context:
52         -- -   No Open Local Context, also known as the Neutral Point.
53         -- -   One or several open local contexts, each
54         --   representing a temporary state of selection and presentation.
55         --   Some methods can only be used in open Local
56         -- Context; others in closed Local Context; others do
57         -- not have the same behavior in one state as in the other.
58         -- The possiblities of use for local contexts are
59         -- numerous depending on the type of operation that
60         -- you want to perform, for example:
61         -- -   working on all visualized interactive objects,
62         -- -   working on only a few objects,
63         -- -   working on a single object.
64         --   1. When you want ot work on one type of entity, you
65         -- should open a local context with the option
66         -- UseDisplayedObjects set to false. DisplayedObjects
67         -- allows you to recover the visualized Interactive
68         -- Objects which have a given Type and
69         -- Signature   from Neutral Point.
70         -- 2. You must keep in mind the fact that when you open
71         -- a Local Context with default options:
72         -- -   The Interactive Objects visualized at Neutral Point
73         --   are activated with their default selection mode. You
74         --   must deactivate those which you do not want ot use.
75         -- -   The Shape type Interactive Objects are
76         --   automatically decomposed into sub-shapes when
77         --   standard activation modes are launched.
78         -- -   The "temporary" Interactive Objects present in the
79         --   Local Contexts are not automatically taken into
80         --   account. You have to load them manually if you
81         --  want to use them.
82         -- -   The stages could be the following:
83         --   -   Open a Local Context with the right options;
84         --   -   Load/Visualize the required complementary
85         --    objects with the desired activation modes.
86         --   -   Activate Standard modes if necessary
87         -- - Create its filters and add them to the Local Context
88         --   -   Detect/Select/recover the desired entities
89         --   -   Close the Local Context with the adequate index.
90         -- -   It is useful to create an interactive editor, to which
91         --   you pass the Interactive Context. This will take care
92         --   of setting up the different contexts of
93         --   selection/presentation according to the operation
94         --   which you want to perform.
95
96 uses
97     Address               from Standard,
98     Viewer                from V3d,
99     View                  from V3d,
100     NameOfColor           from Quantity,
101     Color                 from Quantity,
102     Ratio                 from Quantity,
103     Drawer                from Prs3d,
104     ExtendedString        from TCollection,
105     AsciiString           from TCollection,
106     Shape                 from TopoDS,
107     SelectionManager      from SelectMgr,
108     PresentationManager3d from PrsMgr,
109     ViewerSelector3d      from StdSelect,
110     SensitivityMode       from StdSelect,
111     MapOfInteractive      from AIS,
112     InteractiveObject     from AIS,
113     DisplayMode           from AIS,
114     Drawer                from AIS,
115     NameOfMaterial        from Graphic3d,
116     --NameOfPhysicalMaterial  from Graphic3d,
117     Filter                from SelectMgr,
118     ListOfFilter          from SelectMgr,
119     OrFilter              from SelectMgr, 
120     IndexedMapOfOwner     from SelectMgr,
121     ShapeEnum             from TopAbs,
122     ListOfInteractive     from AIS,
123     SequenceOfInteractive from AIS,
124     ListOfInteger         from TColStd,
125     DataMapOfIOStatus     from AIS,
126     LocalContext          from AIS,
127     DisplayStatus         from AIS,
128     DataMapOfILC          from AIS, 
129     ClearMode             from AIS,
130     KindOfInteractive     from AIS,
131     TypeOfIso             from AIS,
132     StatusOfDetection     from AIS,
133     StatusOfPick          from AIS,
134     LineAspect            from Prs3d,
135     BasicAspect                   from Prs3d,
136     Location              from TopLoc,
137     EntityOwner           from SelectMgr,
138     TypeOfFacingModel     from Aspect,
139     Array1OfPnt2d         from TColgp,
140     Transformation        from Geom
141
142 is
143
144     Create(MainViewer:Viewer from V3d) 
145     returns InteractiveContext from  AIS;
146         ---Purpose:
147         -- Constructs the interactive context object defined by
148         -- the principal viewer MainViewer.    
149
150     Delete(me) is redefined;
151
152                     ---Category: General DISPLAY SERVICES
153     SetAutoActivateSelection( me: mutable; Auto : Boolean from Standard ); 
154     GetAutoActivateSelection( me ) returns Boolean from Standard;
155
156
157     Display(me                 : mutable;
158             anIobj             : InteractiveObject from AIS;
159             updateviewer       : Boolean from Standard = Standard_True); 
160             ---Purpose: Controls the choice between the using the display
161             -- and selection modes of open local context which you
162             -- have defined and activating those available by default.
163     -- If a local context is open and if updateviewer equals
164     -- Standard_False, the Interactive Object anIobj is
165     -- displayed in the default active mode. This will be the
166         -- object's default display mode, if there is one.
167         -- Otherwise, it will be the context mode. The Interactive
168         -- Object's default selection mode is activated. In
169         -- general, this is 0.
170         -- This syntax has the same behavior as local context,
171         -- open or closed. If you want to view the object in open
172         -- local context without selection, use the syntax below,
173         -- setting aSelectionMode to -1.
174
175     Display(me                 : mutable;
176             anIobj             : InteractiveObject from AIS;
177             amode              : Integer from Standard ;
178             aSelectionMode     : Integer from Standard ;
179             updateviewer       : Boolean from Standard = Standard_True;
180             allowdecomposition : Boolean from Standard = Standard_True);
181         ---Purpose: Controls the choice between the using the display
182         -- and selection modes of open local context which you
183         -- have defined and activating those available by default.
184         -- If no Local Context is opened. and the Interactive
185         -- Object aniobj has no display mode of its own, the
186         -- default display mode, 0, is used. Likewise, if aniobj
187         -- has no selection mode of its own, the default one, 0, is used.
188         -- If a local context is open and if updateviewer equals
189         -- Standard_False, the presentation of the Interactive
190         -- Object activates the selection mode; the object is
191         -- displayed but no viewer will be updated.
192         -- If aSelectionMode equals -1, anIobj will not be
193         -- activated: it will be displayed but will not be selectable.
194         -- Use this if you want to view the object in open local
195         -- context without selection. Note: This option is only
196         -- available in Local Context.
197         -- If allowDecomposition equals true, anIObj can have
198         -- subshapes detected by selection mechanisms. anIObj
199         -- must be able to give a shape selection modes which
200         -- fit the AIS_Shape selection modes:
201         -- -   vertices: 1
202         -- -   edges: 2
203         -- -   wires: 3.
204         
205     Load(me:mutable;
206          aniobj : InteractiveObject from AIS;
207          SelectionMode : Integer from Standard = -1;
208          AllowDecomp   : Boolean from Standard = Standard_False);
209          ---Purpose: Allows you to load the Interactive Object aniobj
210          -- with a given selection mode SelectionMode, and/or
211 -- with the desired decomposition option, whether the
212 -- object is visualized or not. If AllowDecomp =
213 -- Standard_True and, if the interactive object is of
214 -- the "Shape" type, these "standard" selection
215 -- modes will be automatically activated as a function
216 -- of the modes present in the Local Context.
217 -- The loaded objects will be selectable but
218 -- displayable in highlighting only when detected by the Selector.
219 -- This method is available only when Local Contexts are open.
220
221
222     Erase(me             : mutable; 
223           aniobj         : InteractiveObject from AIS;
224           updateviewer   : Boolean from Standard = Standard_True);
225 ---Purpose: Hides the object. The object's presentations are simply
226 -- flagged as invisible and therefore excluded from redrawing.
227 -- To show hidden objects, use Display().
228
229     EraseAll (me          : mutable;
230               updateviewer: Boolean from Standard = Standard_True);
231     ---Purpose: Hides all objects. The object's presentations are simply
232 -- flagged as invisible and therefore excluded from redrawing.
233 -- To show all hidden objects, use DisplayAll().
234
235     DisplayAll(me          : mutable;
236                updateviewer: Boolean from Standard = Standard_True);
237     ---Purpose: Displays all hidden objects.
238
239     EraseSelected(me: mutable;
240                   updateviewer: Boolean from Standard = Standard_True);
241         ---Purpose:
242 -- Hides selected objects. The object's presentations are simply
243 -- flagged as invisible and therefore excluded from redrawing.
244 -- To show hidden objects, use Display().
245     
246     DisplaySelected(me:mutable;updateviewer:Boolean from Standard = Standard_True);
247     ---Purpose: Displays selected objects if a local context is open.
248 -- Displays current objects if there is no active local context.
249 -- Objects selected when there is no open local context
250 -- are called current objects; those selected in open
251 -- local context, selected objects.
252 -- If a local context is open and if updateviewer equals
253 -- Standard_False, the presentation   of the Interactive
254 -- Object activates   the   selection   mode; the   object is
255 -- displayed but no viewer will be updated.
256
257
258     KeepTemporary(me          :  mutable; 
259                   anIObj      :  InteractiveObject from AIS; 
260                   InWhichLocal:  Integer  from  Standard  =  -1)
261     returns  Boolean  from  Standard;
262 ---Purpose: Changes the status of a temporary object. It will be
263 -- kept at the neutral point, i.e. put in the list of
264 -- displayed   objects along withwith   its temporary
265 -- attributes. These include display mode and
266 -- selection   mode, for example.
267 -- Returns true if done.
268 -- inWhichLocal gives the local context in which anIObj
269 -- is displayed. By default, the index -1 refers to the last
270 -- Local Context opened.
271  
272     Clear(me : mutable;
273           aniobj         : InteractiveObject from AIS;
274           updateviewer   : Boolean from Standard = Standard_True);
275 ---Purpose: Removes the interactive object aniobj from all viewers.
276 -- If a local context is open and if updateviewer equals
277 -- Standard_False, the presentation of the Interactive
278 -- Object activates the selection mode; the object is
279 -- displayed but no viewer will be updated.
280
281     ClearPrs( me           :mutable;
282               aniobj       : InteractiveObject from AIS;
283               aMode        : Integer from Standard = 0;
284               updateviewer : Boolean from Standard = Standard_True);
285     ---Purpose: Empties the graphic presentation of the mode
286 -- indexed by aMode.
287 -- If a local context is open and if updateviewer equals
288 -- Standard_False, the presentation of the Interactive
289 -- Object activates the selection mode; the object is
290 -- displayed but no viewer will be updated.
291 -- Warning
292 -- Removes anIobj. anIobj is still active if it was
293 -- previously activated.
294
295     Remove(me:mutable;
296           aniobj         : InteractiveObject from AIS;
297           updateviewer   : Boolean from Standard = Standard_True);
298     ---Purpose: Removes aniobj from every viewer. aniobj is no
299 -- longer referenced in the Context.
300 -- If a local context is open and if updateviewer equals
301 -- Standard_False, the presentation   of the Interactive
302 -- Object activates the selection mode; the object is
303 -- displayed but no viewer will be updated.
304         
305     RemoveAll(me:mutable;
306           updateviewer   : Boolean from Standard = Standard_True);
307     ---Purpose: Removes all the objects from all opened Local Contexts
308     --          and from the Neutral Point
309
310
311     Hilight(me:mutable;
312             aniobj : InteractiveObject from AIS;
313             updateviewer: Boolean from Standard = Standard_True);
314         ---Purpose:
315 -- Updates the display in the viewer to take dynamic
316 -- detection into account. On dynamic detection by the
317 -- mouse cursor, sensitive primitives are highlighted.
318 -- The highlight color of entities detected by mouse
319 -- movement is white by default.
320 -- If a local context is open and if updateviewer equals
321 -- Standard_False, the presentation of the Interactive
322 -- Object activates the selection mode; the object is
323 -- displayed but no viewer will be updated.
324         
325     HilightWithColor(me:mutable;
326             aniobj :InteractiveObject from AIS;
327             aCol   : NameOfColor from Quantity;
328             updateviewer: Boolean from Standard = Standard_True); 
329 ---Purpose:
330 -- Changes the color of all the lines of the object in view,
331 -- aniobj. It paints these lines the color passed as the
332 -- argument, aCol.
333 -- If a local context is open and if updateviewer equals
334 -- Standard_False, the presentation of the Interactive
335 -- Object activates the selection mode; the object is
336 -- displayed but no viewer will be updated.
337         
338     Unhilight(me:mutable;
339             aniobj : InteractiveObject from AIS;
340             updateviewer: Boolean from Standard = Standard_True);
341 ---Purpose:
342 -- Removes hilighting from the entity aniobj. Updates the viewer.
343 -- If a local context is open and if updateviewer equals
344 -- Standard_False, the presentation of the Interactive
345 -- Object activates the selection mode; the object is
346 -- displayed but no viewer will be updated.
347
348     SetDisplayPriority(me:mutable;
349                        anIobj: InteractiveObject from AIS;
350                        aPriority : Integer from Standard);
351     ---Purpose: Sets the display priority aPriority of the seen parts
352 -- presentation of the entity anIobj.
353
354     SetZLayer( me         : mutable;
355                theIObj    : InteractiveObject from AIS;
356                theLayerId : Integer from Standard );
357     ---Purpose: Set Z layer id for interactive object. The layer can be
358     -- specified for displayed object only. The Z layers can be used to display
359     -- temporarily presentations of some object in front of the other objects
360     -- in the scene. The ids for Z layers are generated by V3d_Viewer.
361     -- Note that Z layers differ from under-/overlayer in V3d_View:
362     -- under-/overlayer are intended for specific 2D drawings that appear
363     -- behind/in front of all 3D presentations, while SetZLayer() method
364     -- applies to regular 3D presentations and does not imply any specific
365     -- drawing methods.
366
367     GetZLayer( me;
368                theIObj : InteractiveObject from AIS )
369       returns Integer from Standard;
370     ---Purpose: Get Z layer id set for displayed interactive object.
371     -- If the object doesn't exists in context or has no computed presentations,
372     -- the method returns -1.
373
374     Redisplay(me     : mutable;
375               aniobj : InteractiveObject from AIS;
376               updateviewer : Boolean from Standard = Standard_True;
377               allmodes : Boolean from Standard = Standard_False);
378     ---Purpose: Recomputes the seen parts presentation of the entity
379 -- aniobj. If allmodes equals true, all presentations are
380 -- present in the object even if unseen.
381 -- If a local context is open and if updateviewer equals
382 -- Standard_False, the presentation of the Interactive
383 -- Object activates the selection mode; the object is
384 -- displayed but no viewer will be updated.
385
386     Redisplay(me           : mutable;
387               aTypeOfObject: KindOfInteractive from AIS;
388               Signature    : Integer from Standard =-1;
389               updateviewer : Boolean from Standard = Standard_True);
390     ---Purpose: Recomputes the Prs/Selection of displayed objects of
391     --          a given type and a given signature.
392     --          if signature = -1  doesnt take signature criterion.
393
394
395     RecomputePrsOnly(me:mutable;
396                      anIobj       : InteractiveObject from AIS;
397                      updateviewer : Boolean from Standard = Standard_True;
398                      allmodes     : Boolean from Standard = Standard_False);
399     ---Purpose: Recomputes the displayed presentations, flags the others
400     --          Doesn't update presentations
401     
402     
403
404     RecomputeSelectionOnly(me:mutable;
405                            anIObj : InteractiveObject from AIS);
406     ---Purpose: Recomputes the active selections, flags the others
407     --          Doesn't update presentations
408
409     Update (me              : mutable;
410             theIObj         : InteractiveObject from AIS;
411             theUpdateViewer : Boolean from Standard = Standard_True);
412     ---Purpose: Updates displayed interactive object by checking and
413     --          recomputing its flagged as "to be recomputed" presentation
414     --          and selection structures. This method does not force any
415     --          recomputation on its own. The method recomputes selections
416     --          even if they are loaded without activation in particular selector.
417
418     SetDisplayMode(me     : mutable;
419                    aniobj : InteractiveObject from AIS;
420                    aMode  : Integer from Standard;
421                    updateviewer: Boolean from Standard = Standard_True);
422     
423 ---Purpose:
424 -- Sets the display mode of seen Interactive Objects.
425 -- aMode provides the display mode index of the entity aniobj.
426 -- If updateviewer equals Standard_True, the
427 -- predominant mode aMode will overule the context mode.
428 -- If a local context is open and if updateviewer equals
429 -- Standard_False, the presentation of the Interactive
430 -- Object returns to the default selection mode; the
431 -- object is displayed but no viewer will be updated.
432 -- Note that display mode 3 is only used if you have an
433 -- AIS_Textured Shape.    
434     
435     
436     UnsetDisplayMode(me     : mutable;
437                      aniobj : InteractiveObject from AIS;
438                      updateviewer: Boolean from Standard = Standard_True);
439 ---Purpose:
440 -- Unsets the display mode of seen Interactive Objects.
441 -- aMode provides the display mode index of the entity aniobj.
442 -- If updateviewer equals Standard_True, the
443 -- predominant mode aMode will overule the context mode.
444 -- If a local context is open and if updateviewer equals
445 -- Standard_False, the presentation of the Interactive
446 -- Object returns to the default selection mode; the
447 -- object is displayed but no viewer will be updated.                
448     SetSelectionMode(me:mutable;
449                      aniobj:InteractiveObject from AIS;
450                      aMode :Integer from Standard);
451 ---Purpose:
452 -- Sets the selection mode of Interactive Objects.
453 -- aMode provides the selection mode index of the entity aniobj.                     
454     UnsetSelectionMode(me     : mutable;
455                      aniobj : InteractiveObject from AIS);
456 ---Purpose:
457 -- Removes selection mode from Interactive Objects.
458 -- aMode provides the selection mode index of the entity aniobj.
459     
460     SetSensitivityMode(me    : mutable;
461                        aMode : SensitivityMode from StdSelect) is static;
462     ---Level: Public
463     ---Purpose: Sets the selection sensitivity mode. SM_WINDOW mode
464     -- uses the specified pixel tolerance to compute the sensitivity
465     -- value, SM_VIEW mode allows to define the sensitivity manually.
466
467     SensitivityMode(me) returns SensitivityMode from StdSelect;
468     ---Level: Public
469     ---Purpose: Returns the selection sensitivity mode.
470
471     SetSensitivity(me:mutable;
472                         aPrecision: Real from Standard);
473     ---Level: Public
474     ---Purpose: Sets the sensitivity aPrecision
475 -- according to the view size for the current context or local
476 -- context if any is activated. 
477 --   Sets the sensitivity aPrecision in pixels for the current context
478 -- or local context if any is activated. By default, this
479 -- sensitivity is equal to 4 pixels.
480 --   When a local context is open, the defined sensitivity applies to
481 -- this local context instead of the main context.
482
483     Sensitivity (me) returns Real from Standard;
484     ---Level: Public 
485     ---Purpose: Returns the selection sensitivity value.
486
487     SetPixelTolerance(me:mutable;
488                         aPrecision: Integer from Standard = 4);
489     ---Level: Public
490     ---Purpose: Define the current selection pixel sensitivity
491     --          for this context or local context if any one is activated.
492     --  Warning: When a local context is open the sensitivity is apply on it 
493     --          instead on the main context.
494
495     PixelTolerance(me) returns Integer from Standard;
496     ---Level: Public 
497     ---Purpose: Returns the pixel tolerance.
498
499                    ---Category: put locations on objects....
500                    --           
501
502     SetLocation(me:mutable;
503                 aniobj : InteractiveObject from AIS;
504                 aLocation : Location from TopLoc);
505 ---Purpose: Puts the location aLocation on the initial graphic
506 -- representation and the selection for the entity aniobj.
507 -- In other words, aniobj is visible and selectable at a
508 -- position other than initial position.
509 -- Graphic and selection primitives are not recomputed.
510 -- To clean the view correctly, you must reset the previous location.
511
512     ResetLocation(me     : mutable;
513                   aniobj : InteractiveObject from AIS);
514     ---Purpose: Puts the entity aniobj back into its initial position.
515
516     
517
518     HasLocation(me;
519                 aniobj : InteractiveObject from AIS)
520     returns Boolean from Standard;
521 ---Purpose:
522 -- Returns true if the entity aniobj has a location.
523         
524     Location(me;
525              aniobj : InteractiveObject from AIS)
526     returns Location from TopLoc;
527         ---Purpose:
528         -- Returns the location of the entity aniobj.
529
530
531
532     SetCurrentFacingModel(me: mutable;
533              aniobj  : InteractiveObject from AIS;
534              aModel: TypeOfFacingModel from Aspect = Aspect_TOFM_BOTH_SIDE);
535     ---Purpose: change the current facing model apply on polygons for
536     -- SetColor(), SetTransparency(), SetMaterial() methods
537     -- default facing model is Aspect_TOFM_TWO_SIDE. This mean that attributes is
538     -- applying both on the front and back face.
539
540     SetColor(me      : mutable;
541              aniobj  : InteractiveObject from AIS;
542              aColor  : NameOfColor from Quantity;
543              updateviewer : Boolean from Standard = Standard_True);
544
545     SetColor(me      : mutable;
546              aniobj  : InteractiveObject from AIS;
547              aColor  : Color from Quantity;
548              updateviewer : Boolean from Standard = Standard_True);
549 ---Purpose:
550 -- Sets the color of the selected entity.
551 -- If a local context is open and if updateviewer equals
552 -- Standard_False, the presentation   of the Interactive
553 -- Object activates the selection mode; the object is
554 -- displayed but no viewer will be updated.
555         
556     UnsetColor(me     :mutable;
557               aniobj  : InteractiveObject from AIS;
558              updateviewer : Boolean from Standard = Standard_True);
559 --- Purpose: Removes the color selection for the selected entity.
560 -- If a local context is open and if updateviewer equals
561 -- Standard_False, the presentation of the Interactive
562 -- Object activates the selection mode; the object is
563 -- displayed but no viewer will be updated.          
564         
565     SetWidth(me:mutable; 
566              aniobj  : InteractiveObject from AIS;
567              aValue:Real from Standard;
568              updateviewer : Boolean from Standard = Standard_True) is virtual;
569 ---Purpose:
570 -- Sets the width of the entity aniobj.
571 -- If a local context is open and if updateviewer equals
572 -- Standard_False, the presentation of the Interactive
573 -- Object activates the selection mode; the object is
574 -- displayed but no viewer will be updated.
575     
576     UnsetWidth(me:mutable; 
577              aniobj  : InteractiveObject from AIS;
578              updateviewer : Boolean from Standard = Standard_True) is virtual;
579 ---Purpose:
580 -- Removes the width setting of the entity aniobj.
581 -- If a local context is open and if updateviewer equals
582 -- Standard_False, the presentation of the Interactive
583 -- Object activates the selection mode; the object is
584 -- displayed but no viewer will be updated.
585         
586     SetMaterial(me:mutable;
587                aniobj  : InteractiveObject from AIS;
588                 aName:NameOfMaterial from Graphic3d;
589                 --aName:NameOfPhysicalMaterial from Graphic3d;
590                 updateviewer : Boolean from Standard = Standard_True); 
591 ---Purpose:
592 -- Provides the type of material setting for the view of
593 -- the entity aniobj.
594 -- The range of settings includes: BRASS, BRONZE,
595 -- GOLD, PEWTER, SILVER, STONE.
596 -- If a local context is open and if updateviewer equals
597 -- Standard_False, the presentation of the Interactive
598 -- Object activates the selection mode; the object is
599 -- displayed but no viewer will be updated.
600         
601     UnsetMaterial(me    : mutable;
602                   anObj : InteractiveObject from AIS;
603                   updateviewer : Boolean from Standard = Standard_True);
604 ---Purpose:
605 -- Removes the type of material setting for viewing the
606 -- entity aniobj.
607 -- If a local context is open and if updateviewer equals
608 -- Standard_False, the presentation of the Interactive
609 -- Object activates the selection mode; the object is
610 -- displayed but no viewer will be updated.
611
612     SetTransparency(me:mutable;
613                     aniobj  : InteractiveObject from AIS;
614                     aValue : Real from Standard=0.6;
615                     updateviewer : Boolean from Standard = Standard_True);
616     ---Purpose: Provides the transparency settings for viewing the
617 -- entity aniobj. The transparency value aValue may be
618 -- between 0.0, opaque, and 1.0, fully transparent.
619 -- If a local context is open and if updateviewer equals
620 -- Standard_False, the presentation of the Interactive
621 -- Object activates the selection mode; the object is
622 -- displayed but no viewer will be updated.
623
624     UnsetTransparency(me       : mutable;
625                       aniobj  : InteractiveObject from AIS;
626              updateviewer : Boolean from Standard = Standard_True);
627 ---Purpose:
628 -- Removes   the transparency settings for viewing the
629 -- entity aniobj. The transparency value aValue may be
630 -- between 0.0, opaque, and 1.0, fully transparent.
631 -- If a local context is open and if updateviewer equals
632 -- Standard_False, the presentation of the Interactive
633 -- Object activates the selection mode; the object is
634 -- displayed but no viewer will be updated.
635
636     SetLocalAttributes(me      : mutable; 
637                        aniobj  : InteractiveObject from AIS;
638                        aDrawer : Drawer from AIS;
639              updateviewer : Boolean from Standard = Standard_True); 
640 --- Purpose:
641 -- Sets the attributes of the interactive object aniobj by
642 -- plugging the attribute manager aDrawer into the local
643 -- context. The graphic attributes of aDrawer such as
644 -- visualization mode, color, and material, are then used
645 -- to display aniobj.
646 -- If a local context is open and if updateviewer equals
647 -- Standard_False, the presentation of the Interactive
648 -- Object activates the selection mode; the object is
649 -- displayed but no viewer will be updated.
650         
651     UnsetLocalAttributes(me     : mutable;
652                           anObj : InteractiveObject from AIS;
653                          updateviewer : Boolean from Standard = Standard_True);
654 ---Purpose:
655 -- Removes the settings for local attributes of the entity
656 -- anObj   and returns to the Neutral Point attributes or
657 -- those of the previous local context.
658 -- If a local context is open and if updateviewer equals
659 -- Standard_False, the presentation of the Interactive
660 -- Object activates the selection mode; the object is
661 -- displayed but no viewer will be updated.
662
663     
664     SetPolygonOffsets ( me : mutable;
665                 anObj        : InteractiveObject from AIS;
666                 aMode        : Integer from Standard;
667                 aFactor      : ShortReal from Standard = 1.0;
668                 aUnits       : ShortReal from Standard = 0.0;
669         updateviewer : Boolean from Standard = Standard_True ) is static;
670     ---Purpose: Sets up polygon offsets for the given AIS_InteractiveObject.
671     --          It simply calls anObj->SetPolygonOffsets() 
672
673     
674     HasPolygonOffsets ( me; 
675                  anObj   : InteractiveObject from AIS ) 
676                  returns Boolean from Standard 
677                  is static;
678     ---Level: Public
679     ---Purpose: simply calls anObj->HasPolygonOffsets() 
680     ---Category: Inquire methods
681
682     PolygonOffsets ( me;
683                 anObj   : InteractiveObject from AIS;
684                 aMode   : out Integer from Standard;
685                 aFactor : out ShortReal from Standard;
686                 aUnits  : out ShortReal from Standard ) is static;
687     ---Level: Public
688     ---Purpose: Retrieves current polygon offsets settings for <anObj>.
689     ---Category: Inquire methods
690
691
692     SetTrihedronSize(me:mutable;aSize:Real from Standard;updateviewer: Boolean from Standard = Standard_True);
693     ---Purpose: Sets the size aSize of the trihedron.
694 -- Is used to change the default value 100 mm for
695 -- display of trihedra.
696 -- Use of this function in one of your own interactive
697 -- objects requires a call to the Compute function of the
698 -- new class. This will recalculate the presentation for
699 -- every trihedron displayed.
700 -- If a local context is open and if updateviewer equals
701 -- Standard_False, the presentation of the Interactive
702 -- Object activates the selection mode; the object is
703 -- displayed but no viewer will be updated.
704
705     TrihedronSize(me) returns Real from Standard;
706     ---Purpose: returns the current value of trihedron size.
707
708     
709     SetPlaneSize(me:mutable;aSizeX,aSizeY:Real from Standard;updateviewer: Boolean from Standard = Standard_True);
710 ---Purpose:
711 -- Sets the plane size defined by the length in the X
712 -- direction XSize and that in the Y direction YSize.
713 -- If a local context is open and if updateviewer equals
714 -- Standard_False, the presentation of the Interactive
715 -- Object activates the selection mode; the object is
716 -- displayed but no viewer will be updated.
717         
718     SetPlaneSize(me:mutable;aSize:Real from Standard;updateviewer: Boolean from Standard = Standard_True);
719 ---Purpose:
720 -- Sets the plane size aSize.
721 -- If a local context is open and if updateviewer equals
722 -- Standard_False, the presentation of the Interactive
723 -- Object activates the selection mode; the object is
724 -- displayed but no viewer will be updated.
725 -- May be used if PlaneSize returns true.
726         
727     PlaneSize(me; XSize,YSize:out Real from Standard) returns Boolean from Standard;
728     ---Purpose: Returns true if the length in the X direction XSize is
729 -- the same as that in the Y direction YSize.
730
731     DisplayStatus (me; anIobj: InteractiveObject from AIS)
732     returns DisplayStatus from AIS;
733     ---Purpose: Returns the display status of the entity anIobj.
734 -- This will be one of the following:
735 -- -   DS_Displayed   displayed in main viewer
736 -- -   DS_Erased   hidden in main viewer
737 -- -   DS_Temporary   temporarily displayed
738 -- -   DS_None   nowhere displayed.
739
740     DisplayedModes (me;aniobj: InteractiveObject from AIS)
741     returns ListOfInteger from TColStd;
742         ---C++: return const &
743         ---Purpose:
744         -- Returns the list of active display modes for the entity aniobj.
745
746     IsDisplayed(me; anIobj:InteractiveObject from AIS) returns Boolean from Standard;
747     ---Purpose: Returns true if anIobj is displayed in the interactive context.  
748     
749     IsDisplayed(me;
750                 aniobj: InteractiveObject from AIS;
751                 aMode : Integer from Standard) 
752     returns Boolean  from  Standard;
753
754     IsHilighted(me;aniobj : InteractiveObject from AIS)
755     returns Boolean from Standard;
756
757     IsHilighted(me;
758                 anIobj   : InteractiveObject from AIS;
759                 WithColor: out Boolean from Standard;
760                 theHiCol : out NameOfColor from Quantity)
761     returns Boolean from Standard;
762     ---Purpose: if <anIObj> is hilighted with a specific color
763     --          <WithColor> will be returned TRUE
764     --          <theHiCol> gives the name of the hilightcolor
765
766     DisplayPriority(me;anIobj: InteractiveObject from AIS)
767     returns Integer from Standard;
768 ---Purpose:
769 -- Returns the display priority of the entity anIobj. This
770 -- will be display   mode of anIobj if it is in the main
771 -- viewer.
772
773     HasColor(me; aniobj: InteractiveObject from AIS)
774     returns Boolean from Standard;
775 ---Purpose:
776 -- Returns true if a view of the Interactive Object aniobj has color.    
777     Color(me;aniobj:InteractiveObject from AIS)
778     returns NameOfColor from Quantity;
779
780     Color(me; aniobj: InteractiveObject from AIS;
781                   acolor: out Color from Quantity);     
782 ---Purpose:
783 -- Returns the color Color of the entity aniobj in the interactive context.    
784     Width(me;
785           aniobj  : InteractiveObject from AIS) 
786      returns Real from Standard is virtual;
787 ---Purpose:
788 -- Returns the width of the Interactive Object aniobj in
789 -- the interactive context.    
790
791     Status(me;
792            anObj : InteractiveObject from AIS;
793            astatus : in out ExtendedString from TCollection);
794 ---Purpose:
795 -- Returns the status astatus of the Interactive Context
796 -- for the view of the Interactive Object anObj.
797
798     UpdateCurrentViewer(me:mutable);
799  ---Purpose:
800 -- Updates the current viewer, the viewer in Neutral Point.
801 -- Objects selected when there is no open local context
802 -- are called current objects; those selected in open
803 -- local context, selected objects.   
804
805                     ---Category: General Attributes for the session
806
807     DisplayMode(me)        returns Integer     from Standard;
808         ---C++: inline
809         ---Purpose: Returns the display mode setting.
810         -- Note that mode 3 is only used.
811     
812     HilightColor(me)       returns NameOfColor from Quantity; -- dynamic  selection
813         ---C++: inline
814         ---Purpose:
815         -- Returns the name of the color used to show
816         -- highlighted entities, that is, entities picked out by the mouse.
817     
818     SelectionColor(me)     returns NameOfColor from Quantity; 
819      ---C++: inline
820      ---Purpose:
821      -- Returns the name of the color used to show selected entities.
822      -- By default, this is Quantity_NOC_GRAY80.
823     
824     PreSelectionColor(me)  returns NameOfColor from Quantity;
825       ---C++: inline
826       ---Purpose: Returns the name of the color used to show preselection.
827       -- By default, this is Quantity_NOC_GREEN.
828     
829     DefaultColor(me)       returns NameOfColor from Quantity;
830         ---C++: inline
831         ---Purpose:
832         -- Returns the name of the color used by default.
833         -- By default, this is Quantity_NOC_GOLDENROD. 
834     
835     SubIntensityColor(me)       returns NameOfColor from Quantity;    
836         ---C++: inline
837         ---Purpose:
838         -- Returns the name of the color used to show that an
839         -- object is not currently selected.
840         -- By default, this is Quantity_NOC_GRAY40.
841
842     SetHilightColor(me:mutable;aHiCol:NameOfColor from Quantity);
843         ---C++: inline
844         ---Purpose:
845         -- Sets the color used to show highlighted entities, that
846         -- is, entities picked by the mouse.
847         -- By default, this is Quantity_NOC_CYAN1.
848     
849     SelectionColor(me:mutable;aCol:NameOfColor from Quantity);
850             ---C++: inline
851             ---Purpose:
852             -- Sets the color used to show selected entities.
853             -- By default, this is Quantity_NOC_GRAY80.
854     
855     SetPreselectionColor(me:mutable;aCol:NameOfColor from Quantity);
856         ---C++: inline    
857         ---Purpose:
858         -- Allows you to set the color used to show preselection.
859         -- By default, this is Quantity_NOC_GREEN.
860         -- A preselected entity is one which has been selected
861         -- as the domain of application of a function such as a fillet. 
862     
863     SetSubIntensityColor(me:mutable;aCol:NameOfColor from Quantity);
864         ---C++: inline    
865         ---Purpose:
866         -- Sets the color used to show that an object is not currently selected.
867         -- By default, this is Quantity_NOC_GRAY40.
868     
869     SetDisplayMode(me:mutable;AMode: DisplayMode from AIS;
870                    updateviewer: Boolean from Standard = Standard_True);
871     ---Purpose:
872     -- Sets the display mode of seen Interactive Objects.
873     -- aMode provides the display mode index of the entity aniobj.
874     -- If updateviewer equals Standard_True, the
875     -- predominant mode aMode will overule the context mode.
876     -- If a local context is open and if updateviewer equals
877     -- Standard_False, the presentation of the Interactive
878     -- Object returns to the default selection mode; the
879     -- object is displayed but no viewer will be updated.
880     -- Note that display mode 3 is only used if you have an
881     -- AIS_Textured Shape.
882     
883     
884     SetDeviationCoefficient(me      : mutable;
885              aniobj       : InteractiveObject from AIS;
886              aCoefficient : Real from Standard ;
887              updateviewer : Boolean from Standard = Standard_True);
888     --- Purpose:
889     -- Sets the deviation coefficient aCoefficient.
890     -- Drawings of curves or patches are made with respect
891     -- to a maximal chordal deviation. A Deviation coefficient
892     -- is used in the shading display mode. The shape is
893     -- seen decomposed into triangles. These are used to
894     -- calculate reflection of light from the surface of the
895     -- object. The triangles are formed from chords of the
896     -- curves in the shape. The deviation coefficient
897     -- aCoefficient gives the highest value of the angle with
898     -- which a chord can deviate from a tangent to a   curve.
899     -- If this limit is reached, a new triangle is begun.
900     -- This deviation is absolute and is set through the
901     -- method: SetMaximalChordialDeviation. The default
902     -- value is 0.001.
903     -- In drawing shapes, however, you are allowed to ask
904     -- for a relative deviation. This deviation will be:
905     -- SizeOfObject * DeviationCoefficient.
906     -- default 0.001
907         
908     SetDeviationAngle(me      : mutable;
909              aniobj       : InteractiveObject from AIS;
910              anAngle      : Real from Standard ;
911              updateviewer : Boolean from Standard = Standard_True);
912              
913     SetAngleAndDeviation(me      : mutable;
914              aniobj       : InteractiveObject from AIS;
915              anAngle      : Real from Standard ;
916              updateviewer : Boolean from Standard = Standard_True);
917     ---Purpose: Calls the AIS_Shape SetAngleAndDeviation to set
918     --          both Angle and Deviation coefficients
919     SetHLRDeviationCoefficient(me      : mutable;
920              aniobj       : InteractiveObject from AIS;
921              aCoefficient : Real from Standard ;
922              updateviewer : Boolean from Standard = Standard_True);
923 ---Purpose:
924 -- Sets the deviation coefficient aCoefficient for
925 -- removal of hidden lines created by different
926 -- viewpoints in different presentations. The Default value is 0.02.    
927
928     SetHLRDeviationAngle(me      : mutable;
929              aniobj       : InteractiveObject from AIS;
930              anAngle      : Real from Standard ;
931              updateviewer : Boolean from Standard = Standard_True);
932              
933
934     SetHLRAngleAndDeviation(me      : mutable;
935              aniobj       : InteractiveObject from AIS;
936              anAngle      : Real from Standard ;
937              updateviewer : Boolean from Standard = Standard_True);
938     ---Purpose : Computes a HLRAngle and a
939 -- HLRDeviationCoefficient by means of the angle
940 -- anAngle and sets the corresponding methods in the
941 -- default drawing tool with these values.
942     --         
943         
944     SetDeviationCoefficient(me: mutable; aCoefficient: Real from Standard);
945     ---Purpose: Sets the deviation coefficient aCoefficient.
946 -- Drawings of curves or patches are made with respect
947 -- to a maximal chordal deviation. A Deviation coefficient
948 -- is used in the shading display mode. The shape is
949 -- seen decomposed into triangles. These are used to
950 -- calculate reflection of light from the surface of the
951 -- object. The triangles are formed from chords of the
952 -- curves in the shape. The deviation coefficient
953 -- aCoefficient gives the highest value of the angle with
954 -- which a chord can deviate from a tangent to a   curve.
955 -- If this limit is reached, a new triangle is begun.
956 -- This deviation is absolute and is set through the
957 -- method: SetMaximalChordialDeviation. The default
958 -- value is 0.001.
959 -- In drawing shapes, however, you are allowed to ask
960 -- for a relative deviation. This deviation will be:
961 -- SizeOfObject * DeviationCoefficient.
962 -- default 0.001
963         
964     DeviationCoefficient(me) returns Real from Standard ;
965 ---Purpose: Returns the deviation coefficient.
966 -- Drawings of curves or patches are made with respect
967 -- to a maximal chordal deviation. A Deviation coefficient
968 -- is used in the shading display mode. The shape is
969 -- seen decomposed into triangles. These are used to
970 -- calculate reflection of light from the surface of the
971 -- object. The triangles are formed from chords of the
972 -- curves in the shape. The deviation coefficient gives
973 -- the highest value of the angle with which a chord can
974 -- deviate from a tangent to a   curve. If this limit is
975 -- reached, a new triangle is begun.
976 -- This deviation is absolute and is set through
977 -- AIS_Drawer::SetMaximalChordialDeviation. The
978 -- default value is 0.001.
979 -- In drawing shapes, however, you are allowed to ask
980 -- for a relative deviation. This deviation will be:
981 -- SizeOfObject * DeviationCoefficient.
982         
983     SetDeviationAngle(me : mutable; anAngle : Real from Standard) ;
984     ---Purpose: default 6degrees 
985     DeviationAngle(me) returns Real from Standard ;
986     
987     SetHLRDeviationCoefficient(me: mutable; aCoefficient: Real from Standard);
988     ---Purpose:  Sets the deviation coefficient aCoefficient for
989 -- removal of hidden lines created by different
990 -- viewpoints in different presentations. The Default value is 0.02.
991     HLRDeviationCoefficient(me) returns Real from Standard ;
992 ---Purpose:
993 -- Returns the real number value of the hidden line
994 -- removal deviation coefficient.
995 -- A Deviation coefficient is used in the shading display
996 -- mode. The shape is seen decomposed into triangles.
997 -- These are used to calculate reflection of light from the
998 -- surface of the object.
999 -- The triangles are formed from chords of the curves in
1000 -- the shape. The deviation coefficient give the highest
1001 -- value of the angle with which a chord can deviate
1002 -- from a tangent to a curve. If this limit is reached, a
1003 -- new triangle is begun.
1004 -- To find the hidden lines, hidden line display mode
1005 -- entails recalculation of the view at each different
1006 -- projector perspective.
1007 -- Because hidden lines entail calculations of more than
1008 -- usual complexity to decompose them into these
1009 -- triangles, a deviation coefficient allowing greater
1010 -- tolerance is used. This increases efficiency in calculation.
1011 -- The Default value is 0.02.
1012     
1013     SetHLRAngle(me: mutable; anAngle: Real from Standard);
1014     ---Purpose: Sets the HLR angle anAngle.
1015     HLRAngle(me) returns Real from Standard 
1016     is static;
1017 --- Purpose:
1018 -- Returns the real number value of the deviation angle
1019 -- in hidden line removal views in this interactive context.
1020 -- The default value is 20*PI/180.
1021     
1022     SetHLRAngleAndDeviation(me: mutable; anAngle: Real from Standard);
1023     ---Purpose: compute with anangle a HLRAngle and a HLRDeviationCoefficient 
1024     --          and set them in myHLRAngle and in myHLRDeviationCoefficient
1025     --          of myDefaultDrawer ;
1026     --          anAngle is in radian ; ( 1 deg < angle in deg < 20 deg)
1027     
1028     HiddenLineAspect(me) returns LineAspect from Prs3d
1029     ---Purpose: Initializes hidden line aspect in the default drawing tool, or Drawer.
1030 -- The default values are:
1031     --          Color: Quantity_NOC_YELLOW
1032     --          Type of line: Aspect_TOL_DASH
1033     --          Width: 1.
1034     is static;
1035
1036     SetHiddenLineAspect(me; anAspect: LineAspect from Prs3d) 
1037     is static;
1038 --- Purpose:
1039 -- Sets the hidden line aspect anAspect.
1040 -- anAspect defines display attributes for hidden lines in
1041 -- HLR projections.
1042         
1043     DrawHiddenLine(me) returns Boolean from Standard 
1044     ---Purpose: returns Standard_True if the hidden lines are to be drawn.
1045     --          By default the hidden lines are not drawn.
1046     is static;
1047     
1048     EnableDrawHiddenLine(me)
1049     ---Purpose: 
1050     is static;
1051
1052     DisableDrawHiddenLine(me)
1053     ---Purpose: 
1054     is static;
1055
1056
1057     SetIsoNumber(me         : mutable; 
1058                  NbIsos     : Integer from Standard;
1059                  WhichIsos  : TypeOfIso from AIS = AIS_TOI_Both);  
1060 ---Purpose: Sets the number of U and V isoparameters displayed.
1061     
1062         IsoNumber(me         : mutable; 
1063               WhichIsos  : TypeOfIso from AIS = AIS_TOI_Both)
1064     returns Integer from Standard;
1065 ---Purpose: Returns the number of U and V isoparameters displayed.
1066
1067
1068     IsoOnPlane(me:mutable; SwitchOn :Boolean from Standard);
1069 ---Purpose: Returns True if drawing isoparameters on planes is enabled.        
1070     IsoOnPlane(me) returns Boolean from Standard;
1071 ---Purpose: Returns True if drawing isoparameters on planes is enabled.
1072         
1073     ---Purpose: if <forUIsos> = False, 
1074
1075     SetSelectedAspect ( me : mutable; anAspect: any BasicAspect from Prs3d;
1076                      globalChange: Boolean from Standard = Standard_True;
1077                      updateViewer: Boolean from Standard = Standard_True)
1078         is static;
1079     ---Level: Public
1080     ---Purpose: Sets the graphic basic aspect to the current presentation of
1081     --          ALL selected objects.
1082     --          When <globalChange> is TRUE , the full object presentation
1083     --          is changed.
1084     --          When <globalChange> is FALSE , only the current group
1085     --          of the object presentation is changed.
1086     --          Updates the viewer when <updateViewer> is TRUE
1087     ---Category: Graphic attributes management
1088
1089             ---Category: GRAPHIC DETECTION  / SELECTION
1090
1091     MoveTo (me                  : mutable;
1092             theXPix, theYPix    : Integer from Standard;
1093             theView             : View from V3d;
1094             theToRedrawOnUpdate : Boolean from Standard = Standard_True)
1095     returns StatusOfDetection from AIS;
1096     ---Purpose: Relays mouse position in pixels theXPix and theYPix to the interactive context selectors.
1097     -- This is done by the view theView passing this position to the main viewer and updating it.
1098     -- Functions in both Neutral Point and local contexts.
1099     -- If theToRedrawOnUpdate is set to false, callee should call RedrawImmediate() to highlight detected object.
1100
1101     HasNextDetected(me) returns Boolean from Standard;
1102     ---Purpose: returns True  if other entities  were detected  in the
1103     --          last mouse detection
1104
1105     HilightNextDetected (me                   : mutable;
1106                          theView              : View from V3d;
1107                          theToRedrawImmediate : Boolean from Standard = Standard_True)
1108     returns Integer from Standard;
1109     ---Purpose: if more than 1 object is detected by the selector,
1110     --          only the "best" owner is hilighted at the mouse position.
1111     --          This Method allows the user to hilight one after another
1112     --          the other detected entities.
1113     --          if The method select is called, the selected entity
1114     --          will be the hilighted one!
1115     --          returns the Rank of hilighted entity 
1116     --          WARNING : Loop Method. When all the detected entities 
1117     --                    have been hilighted , the next call will hilight
1118     --                    the first one again 
1119
1120     HilightPreviousDetected (me                   : mutable;
1121                              theView              : View from V3d;
1122                              theToRedrawImmediate : Boolean from Standard = Standard_True)
1123     returns Integer from Standard;
1124     ---Purpose: Same as previous methods in reverse direction...
1125
1126     Select(me:mutable;XPMin,YPMin,XPMax,YPMax:Integer from Standard;aView:View from V3d;
1127            updateviewer: Boolean from Standard = Standard_True)
1128     returns StatusOfPick from AIS;
1129     ---Purpose: Selects everything found in the bounding rectangle
1130 -- defined by the pixel minima and maxima, XPMin,
1131 -- YPMin, XPMax, and YPMax in the view, aView
1132 -- The objects detected are passed to the main viewer,
1133 -- which is then updated.
1134
1135     Select(me:mutable; Polyline:Array1OfPnt2d from TColgp;aView:View from V3d;
1136            updateviewer: Boolean from Standard = Standard_True)
1137     returns StatusOfPick from AIS;
1138     ---Purpose: polyline selection; clears the previous picked list
1139
1140     Select(me          : mutable;
1141            updateviewer: Boolean from Standard = Standard_True)
1142     returns StatusOfPick from AIS;
1143     ---Purpose: Stores  and hilights the previous detected; Unhilights
1144     --          the previous picked.
1145
1146     ShiftSelect(me           : mutable;
1147                 updateviewer : Boolean from Standard = Standard_True)
1148     returns StatusOfPick from AIS;
1149     ---Purpose: adds the last detected to the list of previous picked.
1150     --          if the last detected was already declared as picked,
1151     --          removes it from the Picked List.
1152
1153     ShiftSelect( me : mutable; Polyline : Array1OfPnt2d from TColgp; aView : View from V3d;
1154                          updateviewer : Boolean from Standard = Standard_True)
1155     returns StatusOfPick from AIS;
1156     ---Purpose: adds the last detected to the list of previous picked.
1157     --          if the last detected was already declared as picked,
1158     --          removes it from the Picked List.
1159
1160     
1161     ShiftSelect(me:mutable;XPMin,YPMin,XPMax,YPMax:Integer from Standard;aView:View from V3d;
1162                updateviewer : Boolean from Standard = Standard_True)
1163     returns StatusOfPick from AIS;
1164     ---Purpose: rectangle  of selection  ; adds new detected entities into the
1165     --          picked list, removes the detected entities that were already stored...
1166
1167     SetToHilightSelected(me: mutable; toHilight: Boolean from Standard);
1168     ---C++: inline 
1169     ---Purpose: Specify whether selected object must be hilighted when mouse cursor
1170     --- is moved above it (in MoveTo method). By default this value is false and
1171     --- selected object is not hilighted in this case.
1172
1173     ToHilightSelected(me) returns Boolean from Standard;
1174     ---C++: inline 
1175     ---Purpose: Return value specified whether selected object must be hilighted 
1176     --- when mouse cursor is moved above it
1177     
1178
1179                     ---Category: non interactive actions about Selection
1180                     --           2 categories are distinct:
1181                     --           - Current Objects 
1182                     --           - Selected Objects
1183                     --           a Current object is the object picked
1184                     --           at neutral Point.
1185                     --           The Selected objects are objects picked
1186                     --           when a local context is opened
1187
1188
1189     SetCurrentObject(me:mutable;
1190                      aniobj: InteractiveObject from AIS;
1191                      updateviewer : Boolean from Standard = Standard_True);
1192 --- Purpose:
1193 -- Updates the view of the current object in open context.
1194 -- Objects selected when there is no open local context
1195 -- are called current objects; those selected in open
1196 -- local context, selected objects.
1197 -- If a local context is open and if updateviewer equals
1198 -- Standard_False, the presentation of the Interactive
1199 -- Object activates the selection mode; the object is
1200 -- displayed but no viewer will be updated.
1201         
1202     AddOrRemoveCurrentObject(me:mutable;
1203                              aniobj : InteractiveObject from AIS;
1204                              updateviewer : Boolean from Standard = Standard_True);
1205 ---Purpose:
1206 -- Allows you to add a current object to the list of current
1207 -- objects or remove it from that list.
1208 -- Objects selected when there is no open local context
1209 -- are called current objects; those selected in open
1210 -- local context, selected objects.
1211 -- If a local context is open and if updateviewer equals
1212 -- Standard_False, the presentation of the Interactive
1213 -- Object activates the selection mode; the object is
1214 -- displayed but no viewer will be updated.                          
1215     UpdateCurrent (me:mutable);
1216     ---Purpose: Updates the list of current objects, i.e. hilights new
1217 -- current objects, removes hilighting from former current objects.
1218 -- Objects selected when there is no open local context
1219 -- are called current objects; those selected in open
1220 -- local context, selected objects.
1221     --          
1222
1223     WasCurrentTouched(me) returns Boolean from Standard;
1224         ---Purpose:
1225         -- Returns the current selection touched by the cursor.
1226         -- Objects selected when there is no open local context
1227         -- are called current objects; those selected in open
1228         -- local context, selected objects.
1229         ---C++: inline
1230     
1231     SetOkCurrent(me:mutable);
1232     ---C++: inline
1233
1234     IsCurrent(me;aniobj: InteractiveObject from AIS) returns Boolean  from  Standard;
1235 --- Purpose:
1236 -- Returns true if there is a non-null interactive object in Neutral Point.
1237 -- Objects selected when there is no open local context
1238 -- are called current objects; those selected in open
1239 -- local context, selected objects.  
1240     
1241     InitCurrent(me:mutable);
1242 --- Purpose:
1243 -- Initializes a scan of the current selected objects in
1244 -- Neutral Point.
1245 -- Objects selected when there is no open local context
1246 -- are called current objects; those selected in open
1247 -- local context, selected objects.   
1248     
1249     MoreCurrent(me) returns Boolean from Standard;
1250 --- Purpose:
1251 -- Returns true if there is another object found by the
1252 -- scan of the list of current objects.
1253 -- Objects selected when there is no open local context
1254 -- are called current objects; those selected in open
1255 -- local context, selected objects.   
1256     
1257     NextCurrent(me:mutable);
1258 ---Purpose:
1259 -- Continues the scan to the next object in the list of
1260 -- current objects.
1261 -- Objects selected when there is no open local context
1262 -- are called current objects; those selected in open
1263 -- local context, selected objects.    
1264     
1265     Current(me) returns InteractiveObject from AIS;
1266 ---Purpose:
1267 -- Returns the current interactive object.
1268 -- Objects selected when there is no open local context
1269 -- are called current objects; those selected in open
1270 -- local context, selected objects.    
1271     
1272     NbCurrents(me:mutable) returns Integer from Standard;
1273     
1274     FirstCurrentObject(me:mutable) returns InteractiveObject from AIS;
1275 ---Purpose:
1276 -- Returns the first current object in the list of current objects.
1277 -- Objects selected when there is no open local context
1278 -- are called current objects; those selected in open
1279 -- local context, selected objects.
1280         
1281     HilightCurrents(me : mutable; 
1282                     updateviewer : Boolean from Standard=Standard_True);
1283  ---Purpose:
1284 --- Highlights current objects.
1285 -- Objects selected when there is no open local context
1286 -- are called current objects; those selected in open
1287 -- local context, selected objects.
1288 -- If a local context is open and if updateviewer equals
1289 -- Standard_False, the presentation of the Interactive
1290 -- Object activates the selection mode; the object is
1291 -- displayed but no viewer will be updated.   
1292     
1293     UnhilightCurrents(me : mutable; 
1294                     updateviewer : Boolean from Standard=Standard_True);
1295 ---Purpose:
1296 -- Removes highlighting from current objects.
1297 -- Objects selected when there is no open local context
1298 -- are called current objects; those selected in open
1299 -- local context, selected objects.
1300 -- If a local context is open and if updateviewer equals
1301 -- Standard_False, the presentation of the Interactive
1302 -- Object activates the selection mode; the object is
1303 -- displayed but no viewer will be updated.
1304         
1305     ClearCurrents(me:mutable; 
1306                     updateviewer : Boolean from Standard=Standard_True);
1307 ---Purpose:
1308 -- Empties previous current objects in order to get the
1309 -- current objects detected by the selector using
1310 -- UpdateCurrent.
1311 -- Objects selected when there is no open local context
1312 -- are called current objects; those selected in open
1313 -- local context, selected objects.
1314 -- If a local context is open and if updateviewer equals
1315 -- Standard_False, the presentation of the Interactive
1316 -- Object activates the selection mode; the object is
1317 -- displayed but no viewer will be updated.
1318
1319     SetSelected(me:mutable;aniObj: InteractiveObject from AIS; 
1320                     updateviewer : Boolean from Standard=Standard_True);
1321     ---Purpose: Puts the interactive object aniObj in the list of
1322     -- selected objects.
1323     -- If a local context is open and if updateviewer equals
1324     -- Standard_False, the presentation of the Interactive
1325     -- Object activates the selection mode; the object is
1326     -- displayed but no viewer will be updated.
1327
1328     SetSelectedCurrent(me:mutable);
1329     ---Purpose: puts the selected list in the current objects List. 
1330     UpdateSelected(me:mutable; 
1331                     updateviewer : Boolean from Standard=Standard_True);
1332     ---Purpose: updates the list of selected objects
1333     --          i.e. hilights the new selected
1334     --          unhilights old selected objects
1335     AddOrRemoveSelected(me:mutable;
1336                         aniobj : InteractiveObject from AIS; 
1337                         updateviewer : Boolean from Standard=Standard_True);
1338     ---Purpose:Allows you to add a selected object to the list of
1339 -- selected objects or remove it from that list. This entity
1340 -- can be an Interactive Object aniobj or its owner
1341 -- aShape as can be seen in the two syntaxes above.
1342 -- Objects selected when there is no open local context
1343 -- are called current objects; those selected in open
1344 -- local context, selected objects.
1345 -- If a local context is open and if updateviewer equals
1346 -- Standard_False, the presentation of the Interactive
1347 -- Object activates the selection mode; the object is
1348 -- displayed but no viewer will be updated. 
1349
1350     HilightSelected(me : mutable; 
1351                     updateviewer : Boolean from Standard=Standard_True);
1352 ---Purpose:
1353 -- Highlights selected objects.
1354 -- Objects selected when there is no open local context
1355 -- are called current objects; those selected in open
1356 -- local context, selected objects.
1357 -- If a local context is open and if updateviewer equals
1358 -- Standard_False, the presentation of the Interactive
1359 -- Object activates the selection mode; the object is
1360 -- displayed but no viewer will be updated.
1361         
1362     UnhilightSelected(me : mutable; 
1363                     updateviewer : Boolean from Standard=Standard_True);
1364 ---Purpose:
1365 -- Removes highlighting from selected objects.
1366 -- Objects selected when there is no open local context
1367 -- are called current objects; those selected in open
1368 -- local context, selected objects.
1369 -- If a local context is open and if updateviewer equals
1370 -- Standard_False, the presentation of the Interactive
1371 -- Object activates the selection mode; the object is
1372 -- displayed but no viewer will be updated.
1373         
1374     ClearSelected(me:mutable; 
1375                     updateviewer : Boolean from Standard=Standard_True);
1376 ---Purpose:
1377 -- Empties previous selected objects in order to get the
1378 -- selected objects detected by the selector using
1379 -- UpdateSelected.
1380 -- Objects selected when there is no open local context
1381 -- are called current objects; those selected in open
1382 -- local context, selected objects.
1383 -- If a local context is open and if updateviewer equals
1384 -- Standard_False, the presentation of the Interactive
1385 -- Object activates the selection mode; the object is
1386 -- displayed but no viewer will be updated.
1387         
1388     AddOrRemoveSelected(me:mutable;aShape:Shape from TopoDS; 
1389                     updateviewer : Boolean from Standard=Standard_True);
1390      ---Purpose:  No right to Add a selected Shape (Internal Management 
1391      --           of shape Selection).
1392      --           A Previous selected shape may only be removed.
1393     
1394     
1395     AddOrRemoveSelected(me:mutable;anOwner : EntityOwner from SelectMgr;
1396                         updateviewer: Boolean from Standard=Standard_True);
1397     ---Purpose: allows to add/remove in the selected list the entities
1398     --          represented by <anOwner> in the selection process.
1399   
1400                     ---Category: Selection Process
1401     
1402     IsSelected(me;aniobj: InteractiveObject from AIS) returns Boolean  from  Standard;
1403    --- Purpose:
1404 -- Finds the selected object aniobj in local context and
1405 -- returns its name.
1406 -- Objects selected when there is no open local context
1407 -- are called current objects; those selected in open
1408 --  local context, selected objects.
1409     
1410     InitSelected(me:mutable);
1411 ---Purpose:
1412 -- Initializes a scan of the selected objects in local context.
1413 -- Objects selected when there is no open local context
1414 -- are called current objects; those selected in open
1415 -- local context, selected objects.    
1416     
1417     MoreSelected(me) returns Boolean from Standard;
1418 ---Purpose:
1419 -- Returns true if there is another object found by the
1420 -- scan of the list of selected objects.
1421 -- Objects selected when there is no open local context
1422 -- are called current objects; those selected in open
1423 -- local context, selected objects.    
1424   
1425     
1426     NextSelected(me:mutable);
1427 ---Purpose:
1428 -- Continues the scan to the next object in the list of
1429 -- selected objects.
1430 -- Objects selected when there is no open local context
1431 -- are called current objects; those selected in open
1432 -- local context, selected objects.    
1433     
1434     NbSelected(me:mutable) returns Integer from Standard;
1435     
1436     HasSelectedShape(me) returns Boolean from Standard;
1437 --- Purpose:
1438 -- Returns true if the interactive context has a shape
1439 -- selected in it which results from the decomposition of
1440 -- another entity in local context.
1441 -- If HasSelectedShape returns true, SelectedShape
1442 -- returns the shape which has been shown to be
1443 -- selected. Interactive returns the Interactive Object
1444 -- from which the shape has been selected.
1445 -- If HasSelectedShape returns false, Interactive
1446 -- returns the interactive entity selected by the click of the mouse.   
1447     
1448     SelectedShape(me) returns Shape from TopoDS;        
1449 ---Purpose:
1450 --        Returns the selected shape in the open local context.
1451 -- Objects selected when there is no open local context
1452 -- are called current objects; those selected in open
1453 -- local context, selected objects.  
1454         
1455     SelectedOwner(me) returns EntityOwner from SelectMgr;
1456 ---Purpose:
1457 -- Returns the owner of the selected entity resulting
1458 -- from the decomposition of another entity in local context. 
1459      
1460     EntityOwners(me;  theOwners :  out IndexedMapOfOwner from SelectMgr; 
1461                       theIObj   :  InteractiveObject from AIS; 
1462                       theMode   :  Integer from Standard = -1); 
1463     ---Purpose: Returns a collection containing all entity owners  
1464     ---         created for the interactive object <theIObj> in  
1465     ---         the selection mode theMode (in all active modes  
1466     ---         if the Mode == -1) 
1467     
1468     Interactive(me) returns  InteractiveObject from AIS;
1469     ---Purpose: Returns the location of the selected Interactive Object.
1470     SelectedInteractive(me) returns InteractiveObject from AIS;
1471     
1472     HasApplicative(me) returns Boolean from Standard;
1473 --- Purpose:
1474 -- Returns true if the applicative object has an owner
1475 -- from Interactive attributed to it.   
1476     
1477     Applicative(me) returns Transient from Standard;
1478 ---Purpose:
1479 -- Returns the owner of the applicative entity detected
1480 -- in interactive context. The owner can be a shape for
1481 -- a set of sub-shapes or a sub-shape for sub-shapes
1482 -- which it is composed of.
1483
1484                     ---Category: information about detection...
1485     
1486     HasDetected     (me) returns Boolean from Standard;
1487 ---Purpose:
1488 -- Returns true if there is a mouse-detected entity in local context.
1489 -- If there is no open local context, the objects selected
1490 -- are called current objects; selected objects if there is
1491 -- one. Iterators allow entities to be recovered in either
1492 -- case. This method is one of a set which allows you to
1493 -- manipulate the objects which have been placed in these two lists.    
1494     
1495     HasDetectedShape(me) returns Boolean from Standard;
1496 ---Purpose:
1497 -- Returns true if there is a detected shape in local context.
1498 -- If there is no open local context, the objects selected
1499 -- are called current objects; selected objects if there is
1500 -- one. Iterators allow entities to be recovered in either
1501 -- case. This method is one of a set which allows you to
1502 -- manipulate the objects which have been placed in these two lists.    
1503     
1504     DetectedShape   (me) returns Shape from TopoDS;
1505      ---Purpose:
1506      -- Returns the shape detected in local context.
1507      -- If there is no open local context, the objects selected
1508      -- are called current objects; selected objects if there is
1509      -- one. Iterators allow entities to be recovered in either
1510      -- case. This method is one of a set which allows you to
1511      -- manipulate the objects which have been placed in these two lists.
1512      ---C++: return const &
1513        
1514     DetectedInteractive(me) returns InteractiveObject from AIS;
1515 ---Purpose:
1516 -- Returns the interactive objects last detected in open context.
1517 -- If there is no open local context, the objects selected
1518 -- are called current objects; selected objects if there is
1519 -- one. Iterators allow entities to be recovered in either
1520 -- case. This method is one of a set which allows you to
1521 -- manipulate the objects which have been placed in these two lists.    
1522     
1523     DetectedOwner(me)    returns EntityOwner from SelectMgr;
1524     ---Purpose: returns the owner of the detected sensitive primitive.
1525
1526     InitDetected(me: mutable);
1527     ---Purpose:
1528     -- Initialization for iteration through mouse-detected objects in
1529     -- interactive context or in local context if it is opened.
1530     MoreDetected(me) returns Boolean from Standard;
1531     ---Purpose:
1532     -- @return true if there is more mouse-detected objects after the current one
1533     -- during iteration through mouse-detected interactive objects.
1534     NextDetected(me: mutable);
1535     ---Purpose:
1536     -- Gets next current object during iteration through mouse-detected
1537     -- interactive objects.
1538     DetectedCurrentShape(me) returns Shape from TopoDS;
1539     ---C++: return const &
1540     ---Purpose:
1541     -- @return current mouse-detected shape or empty (null) shape, if current interactive object
1542     -- is not a shape (AIS_Shape) or there is no current mouse-detected interactive object at all.
1543     DetectedCurrentObject(me) returns InteractiveObject from AIS;
1544     --Purpose:
1545     -- @return current mouse-detected interactive object or null object if there is no current detected.
1546
1547
1548                     ---Category:  SPECIFIC LOCAL CONTEXT ACTIONS.
1549     
1550     
1551     
1552     OpenLocalContext(me                      : mutable;
1553                      UseDisplayedObjects     : Boolean from Standard = Standard_True; 
1554                      AllowShapeDecomposition : Boolean from Standard = Standard_True;
1555                      AcceptEraseOfObjects    : Boolean from Standard = Standard_False;
1556                      BothViewers             : Boolean from Standard = Standard_False)
1557     returns Integer from Standard;
1558     ---Purpose: 
1559 -- Opens local contexts and specifies how this is to be
1560 -- done. The options listed above function in the following manner:
1561 -- -   UseDisplayedObjects -allows you to load or not
1562 --   load the interactive objects visualized at Neutral
1563 --   Point in the local context which you open. If false,
1564 --   the local context is empty after being opened. If
1565 --   true, the objects at Neutral Point are loaded by their
1566 --   default selection mode.
1567 -- -   AllowShapeDecomposition -AIS_Shape allows or
1568 --   prevents decomposition in standard shape location
1569 --   mode of objects at Neutral Point which are
1570 --   type-"privileged". This Flag is only taken into
1571 --   account when UseDisplayedObjects is true.
1572 -- -   AcceptEraseOfObjects -authorises other local
1573 --   contexts to erase the interactive objects present in
1574 --   this context. This option is rarely used.
1575 -- -   BothViewers - Has no use currently defined.
1576 --   This method returns the index of the created local
1577 -- context. It should be kept and used to close the context.
1578 -- Opening a local context allows you to prepare an
1579 -- environment for temporary presentations and
1580 -- selections which will disappear once the local context is closed.
1581 -- You can open several local contexts, but only the last
1582 -- one will be active.
1583         
1584
1585
1586     CloseLocalContext(me:mutable;
1587                       Index : Integer from Standard = -1;
1588                       updateviewer:Boolean from Standard=Standard_True);                      
1589     ---Purpose: Allows you to close local contexts. For greater
1590 -- security, you should close the context with the
1591 -- index Index given on opening.
1592 -- When you close a local context, the one before,
1593 -- which is still on the stack,   reactivates. If none is
1594 -- left, you return to Neutral Point.
1595 -- If a local context is open and if updateviewer
1596 -- equals Standard_False, the presentation of the
1597 -- Interactive Object activates the selection mode; the
1598 -- object is displayed but no viewer will be updated.
1599 -- Warning
1600 -- When the index isn't specified, the current context
1601 -- is closed. This option can be dangerous, as other
1602 -- Interactive Functions can open local contexts
1603 -- without necessarily warning the user.
1604     
1605     IndexOfCurrentLocal(me) returns Integer from Standard;
1606     ---Purpose: returns -1 if no opened local context.
1607
1608     CloseAllContexts (me:mutable;updateviewer:Boolean from Standard = Standard_True);
1609 ---Purpose:
1610 -- Allows you to close all local contexts at one go and
1611 -- return to Neutral Point.
1612 -- If a local context is open and if updateviewer equals
1613 -- Standard_False, the presentation of the Interactive
1614 -- Object activates the selection mode; the object is
1615 -- displayed but no viewer will be updated.
1616         
1617     ResetOriginalState(me:mutable;updateviewer:Boolean from Standard = Standard_True);
1618     ---Level:  Internal 
1619     ---Purpose: to   be  used only with no  opened
1620     --        local context..  displays and activates objects in their
1621     --        original state before local contexts were opened...
1622
1623     ClearLocalContext(me:mutable;TheMode : ClearMode from AIS =  AIS_CM_All);
1624     ---Purpose: clears Objects/Filters/Activated Modes list in the current opened
1625     --          local context.
1626
1627
1628     UseDisplayedObjects(me:mutable);
1629     NotUseDisplayedObjects(me:mutable);
1630     ---Purpose: when a local Context is opened, one is able to
1631     --          use/not use the displayed objects at neutral point
1632     --          at anytime.
1633
1634
1635
1636         ---Category: Immediate Mode :  Used For Simulation
1637         --           
1638         --           CAUTION
1639         --           1] NO UPDATE OF   VIEWER  MUST BE DONE
1640         --              BETWEEN BeginImmediateDraw() and EndImmediateDraw()
1641         --           2] Available only Inside Opened Local Contexts.
1642         --           3} During the Immediate Mode Displays, no Selection
1643         --              is available.
1644         --           
1645         --           How To Use It?
1646         --           
1647         --           1. BeginImmediateDraw()
1648         --           2. ImmediateAdd (Iobj,mode)
1649         --           
1650         --           4.EndImmediateDraw()      draws all the stored objects...
1651         --           
1652
1653     BeginImmediateDraw (me : mutable)
1654     returns Boolean from Standard;
1655     ---Purpose: initializes the list of presentations to be displayed
1656     --          returns False if No Local COnte
1657
1658     ImmediateAdd (me      : mutable;
1659                   theObj  : InteractiveObject from AIS;
1660                   theMode : Integer from Standard = 0)
1661     returns Boolean from Standard;
1662     ---Purpose: returns True if <anIObj> has been stored in the list.
1663
1664     EndImmediateDraw (me      : mutable;
1665                       theView : View from V3d)
1666     returns Boolean from Standard;
1667     ---Purpose: returns True if the immediate display has been done.
1668
1669     EndImmediateDraw (me : mutable)
1670     returns Boolean from Standard;
1671     ---Purpose: Uses the First Active View of Main Viewer!
1672     --          returns True if the immediate display has been done.
1673
1674     IsImmediateModeOn(me) returns Boolean from Standard;
1675
1676             ---Category: Activation/Deactivation of Selection Modes.
1677
1678     SetAutomaticHilight(me:mutable;aStatus:Boolean);
1679 ---Purpose:
1680 -- Sets the highlighting status aStatus of detected and
1681 -- selected entities.
1682 -- Whether you are in Neutral Point or local context, this
1683 -- is automatically managed by the Interactive Context.
1684 -- This function allows you to disconnect the automatic mode.    
1685     AutomaticHilight(me) returns Boolean from Standard;
1686 ---Purpose:
1687 -- Returns true if the automatic highlight mode is active
1688 -- in an open context.
1689     
1690     SetZDetection(me:mutable; aStatus:Boolean = Standard_False);
1691     ---Purpose: Enables/Disables the Z detection.
1692     --          If TRUE the detection echo can be partially hidden by the 
1693     --          detected object.
1694     ---Warning: The hidden part of the object is not visible but
1695     --          stay selectable.
1696
1697     ZDetection(me) returns Boolean;
1698     ---Purpose: Retrieves the Z detection state.
1699
1700     Activate(me     : mutable;
1701              anIobj : InteractiveObject from AIS;
1702              aMode  : Integer from Standard = 0);
1703     ---Purpose: Activates the selection mode aMode whose index is
1704 -- given, for the given interactive entity anIobj.
1705
1706
1707     Deactivate(me     :mutable;
1708                anIObj : InteractiveObject from AIS);
1709     ---Purpose: Deactivates all the activated selection modes
1710     --          of an object. 
1711                
1712     Deactivate(me     : mutable;
1713                anIobj : InteractiveObject from AIS;
1714                aMode  : Integer from Standard);
1715 ---Purpose:
1716 -- Deactivates all the activated selection modes of the
1717 -- interactive object anIobj with a given selection mode aMode.
1718         
1719     ActivatedModes(me;
1720                    anIobj : InteractiveObject from AIS;
1721                    theList  : in out ListOfInteger from TColStd);
1722 ---Purpose:
1723 -- Returns the list of activated selection modes in an open context.
1724         
1725     SetShapeDecomposition( me:mutable;
1726                            anIobj : InteractiveObject from AIS;
1727                            aStatus: Boolean from Standard);
1728     ---Purpose: to be Used only with opened local context and
1729     --          if <anIobj> is of type shape...
1730     --          if <aStatus> = True <anIobj> will be sensitive to 
1731     --                         shape selection modes activation.
1732     --                       = False, <anIobj> will not be senstive
1733     --                       any more.
1734     --                       
1735
1736     SetTemporaryAttributes(me      : mutable;
1737                            anObj   : InteractiveObject from AIS;
1738                            aDrawer : Drawer from Prs3d;
1739                            updateviewer : Boolean = Standard_True);
1740         
1741 ---Purpose:
1742 -- Sets the temporary graphic attributes of the entity
1743 -- anObj. These are provided by the attribute manager
1744 -- aDrawer and are valid for a particular local context only.
1745 -- If a local context is open and if updateviewer equals
1746 -- Standard_False, the presentation of the Interactive
1747 -- Object activates the selection mode; the object is
1748 -- displayed but no viewer will be updated.    
1749     
1750     SubIntensityOn(me           : mutable;
1751                    aniobj       : InteractiveObject from AIS;
1752                    updateviewer : Boolean from Standard =Standard_True);
1753 ---Purpose:
1754 -- Highlights, and removes highlights from, the displayed
1755 -- object aniobj which is displayed at Neutral Point with
1756 -- subintensity color; available only for active local
1757 -- context. There is no effect if there is no local context.
1758 -- If a local context is open and if updateviewer equals
1759 -- Standard_False, the presentation of the Interactive
1760 -- Object activates the selection mode; the object is
1761 -- displayed but no viewer will be updated.
1762         
1763     SubIntensityOff(me           : mutable;
1764                     aniobj       : InteractiveObject from AIS;
1765                     updateviewer : Boolean from Standard =Standard_True);
1766 ---Purpose:
1767 -- Removes the subintensity option for the entity aniobj.
1768 -- If a local context is open and if updateviewer equals
1769 -- Standard_False, the presentation of the Interactive
1770 -- Object activates the selection mode; the object is
1771 -- displayed but no viewer will be updated.
1772         
1773     SubIntensityOn(me:mutable;
1774                    updateviewer : Boolean from Standard = Standard_True);
1775     ---Purpose: hilights/unhilights displayed objects which are displayed at
1776     --          neutral state with subintensity color;
1777     --          available only for active local context.
1778     --          No effect if no local context.
1779
1780
1781     SubIntensityOff(me:mutable;
1782                    updateviewer : Boolean from Standard = Standard_True);
1783     ---Purpose: removes subintensity option for all objects.
1784                                    
1785
1786
1787     
1788     
1789     
1790     
1791                    ---Category: FILTERS 
1792                    --           
1793                    --           
1794                    --           
1795     
1796     AddFilter(me       :mutable;  aFilter : Filter from SelectMgr);
1797     ---Purpose: Allows you to add the filter aFilter to Neutral Point or
1798 -- to a local context if one or more selection modes have been activated.
1799 -- Only type filters may be active in Neutral Point.
1800
1801     RemoveFilter(me:mutable;aFilter  : Filter from SelectMgr);
1802
1803 ---Purpose:
1804 -- Removes a filter from Neutral Point or a local context
1805 -- if one or more selection modes have been activated.
1806 -- Only type filters are activated in Neutral Point.
1807     
1808     RemoveFilters(me:mutable);
1809     ---Purpose: Remove a filter to Neutral Point or a local context if
1810 -- one or more selection modes have been activated.
1811 -- Only type filters are active in Neutral Point.
1812
1813     ActivateStandardMode(me:mutable; aStandardActivation : ShapeEnum from TopAbs);
1814     ---Purpose: Provides an alternative to the Display methods when
1815 -- activating specific selection modes. This has the
1816 -- effect of activating the corresponding selection mode
1817 -- aStandardActivation for all objects in Local Context
1818 -- which accept decomposition into sub-shapes.
1819 -- Every new Object which has been loaded into the
1820 -- interactive context and which answers these
1821 -- decomposition criteria is automatically activated
1822 -- according to these modes.
1823 -- Warning
1824 -- If you have opened a local context by loading an
1825 -- object with the default options
1826 -- (<AllowShapeDecomposition >= Standard_True), all
1827 -- objects of the "Shape" type are also activated with
1828 -- the same modes. You can act on the state of these
1829 -- "Standard" objects by using SetShapeDecomposition(Status).
1830
1831
1832     DeactivateStandardMode (me:mutable; aStandardActivation : ShapeEnum from TopAbs);
1833 ---Purpose:
1834 -- Provides an alternative to the Display methods when
1835 -- deactivating specific selection modes. This has the
1836 -- effect of deactivating the corresponding selection
1837 -- mode aStandardActivation for all objects in Local
1838 -- Context which accept decomposition into sub-shapes.
1839     
1840     ActivatedStandardModes(me) returns ListOfInteger from TColStd;
1841         ---Purpose:
1842         -- Returns the list of activated standard selection modes
1843         -- available in a local context.
1844         ---C++: return const&
1845
1846     Filters(me) returns ListOfFilter from SelectMgr;
1847         ---Purpose:
1848         -- Returns the list of filters active in a local context.
1849         ---C++: return const&
1850
1851
1852             ---Category: INFORMATION METHODS - GET FIELDS
1853
1854     DefaultDrawer(me) returns any Drawer from Prs3d;
1855         ---Purpose:
1856         -- Returns the default attribute manager.
1857         -- This contains all the color and line attributes which
1858         -- can be used by interactive objects which do not have
1859         -- their own attributes.
1860         ---C++: inline
1861         ---C++: return const &
1862     
1863     CurrentViewer(me) returns any Viewer from V3d;
1864         ---C++: return const &
1865         ---C++: inline
1866         ---Purpose: Returns the current viewer.
1867
1868     DisplayedObjects(me;
1869                      aListOfIO       : in out ListOfInteractive from AIS;
1870                      OnlyFromNeutral : Boolean from Standard = Standard_False);
1871     ---Purpose: Returns the list of displayed objects of a particular
1872     -- Type WhichKind and Signature WhichSignature. By
1873     -- Default, WhichSignature equals -1. This means that
1874     -- there is a check on type only.
1875
1876     DisplayedObjects(me;
1877                      WhichKind :KindOfInteractive from AIS; 
1878                      WhichSignature :Integer from Standard;
1879                      aListOfIO : in out ListOfInteractive from AIS;
1880                      OnlyFromNeutral : Boolean from Standard = Standard_False);
1881     ---Purpose: gives the list of displayed objects of a particular
1882     --          Type and signature.
1883     --          by Default, <WhichSignature> = -1 means 
1884     --          control only on <WhichKind>.
1885
1886     ErasedObjects (me;theListOfIO : in out ListOfInteractive from AIS);
1887     ---Purpose:
1888     -- Returns the list theListOfIO of erased objects (hidden objects)
1889     -- particular Type WhichKind and Signature WhichSignature.
1890     -- By Default, WhichSignature equals 1. This means
1891     -- that there is a check on type only.
1892
1893     ErasedObjects (me;
1894                         WhichKind :KindOfInteractive from AIS; 
1895                         WhichSignature :Integer from Standard;
1896                         theListOfIO : in out ListOfInteractive from AIS);
1897     ---Purpose: gives the list of erased objects (hidden objects)
1898     --          Type and signature
1899     --          by Default, <WhichSignature> = -1 means 
1900     --          control only on <WhichKind>.
1901
1902     ObjectsByDisplayStatus (me;theStatus : DisplayStatus from AIS;
1903                                theListOfIO : in out ListOfInteractive from AIS);
1904     ---Purpose:
1905     -- Returns the list theListOfIO of objects with indicated display status
1906     -- particular Type WhichKind and Signature WhichSignature.
1907     -- By Default, WhichSignature equals 1. This means
1908     -- that there is a check on type only.
1909
1910     ObjectsByDisplayStatus (me;
1911                         WhichKind :KindOfInteractive from AIS; 
1912                         WhichSignature :Integer from Standard;
1913                         theStatus : DisplayStatus from AIS;
1914                         theListOfIO : in out ListOfInteractive from AIS);
1915     ---Purpose: gives the list of objects with indicated display status
1916     --          Type and signature
1917     --          by Default, <WhichSignature> = -1 means 
1918     --          control only on <WhichKind>.
1919
1920     ObjectsInside(me;
1921                  aListOfIO      : in out ListOfInteractive from AIS;
1922                  WhichKind      : KindOfInteractive from AIS = AIS_KOI_None; 
1923                  WhichSignature : Integer from Standard = -1);
1924     ---Purpose: fills <aListOfIO> with objects of a particular
1925     --          Type and Signature with no consideration of display status.
1926     --          by Default, <WhichSignature> = -1 means 
1927     --          control only on <WhichKind>.
1928     --          if <WhichKind> = AIS_KOI_None and <WhichSignature> = -1,
1929     --          all the objects are put into the list.
1930
1931
1932     HasOpenedContext(me) returns Boolean from Standard;
1933     ---Purpose: Returns true if there is an open context.
1934     ---C++: inline
1935
1936     CurrentName(me)  returns AsciiString from TCollection;
1937         ---Purpose:
1938         -- Returns the name of the current selected entity in Neutral Point.
1939         -- Objects selected when there is no open local context
1940         -- are called current objects; those selected in open
1941         -- local context, selected objects.
1942         ---C++: inline
1943         ---C++: return const&
1944
1945     SelectionName(me) returns AsciiString from TCollection;
1946         ---Purpose:
1947         -- Returns the name of the current selected entity in
1948         -- open local context.
1949         -- Objects selected when there is no open local context
1950         -- are called current objects; those selected in open
1951         -- local context, selected objects.
1952         ---C++: return const&
1953
1954     DomainOfMainViewer(me) returns CString from Standard;
1955     ---Purpose: Returns the domain name of the main viewer.
1956
1957             ---Category: Internal
1958
1959         ---Category: Internal
1960
1961     LocalContext(me) returns LocalContext from AIS;
1962     ---Level: Internal 
1963     ---Purpose:
1964     -- This method is only intended for advanced operation, particularly with
1965     -- the aim to improve performance when many objects have to be selected
1966     -- together. Otherwise, you should use other (non-internal) methods of
1967     -- class AIS_InteractiveContext without trying to obtain an instance of
1968     -- AIS_LocalContext.
1969     ---C++: inline
1970
1971     SelectionManager(me) returns any SelectionManager from SelectMgr;
1972     ---C++: inline
1973     ---C++: return const &
1974
1975     MainPrsMgr     (me) returns any PresentationManager3d from PrsMgr;
1976     ---C++: inline
1977     ---C++: return const &
1978
1979     MainSelector(me) returns any ViewerSelector3d from StdSelect;
1980     ---C++: inline
1981     ---C++: return const &
1982     LocalSelector(me) returns any ViewerSelector3d from StdSelect;
1983
1984     PurgeDisplay(me:mutable) 
1985     returns Integer from Standard;
1986     ---Level: Internal 
1987     ---Purpose: Clears all the structures which don't
1988     --          belong to objects displayed at neutral point
1989     --          only effective when no Local Context is opened...
1990     --          returns the number of removed  structures from the viewers.
1991
1992
1993     HighestIndex(me)  returns  Integer  from  Standard;
1994
1995     DisplayActiveAreas(me:mutable;aView:View from V3d) ;
1996
1997     ClearActiveAreas (me   :mutable;
1998                 aView: View from V3d) is static;
1999     ---Level: Internal 
2000     
2001     DisplayActiveSensitive(me:mutable;aView : View from V3d) is static; 
2002     
2003     ClearActiveSensitive(me:mutable;aView:View from V3d) is static;
2004
2005
2006
2007     DisplayActiveSensitive(me:mutable;
2008                            anObject: InteractiveObject from AIS;
2009                            aView   : View from V3d) is static;
2010     DisplayActiveAreas(me:mutable;
2011                            anObject: InteractiveObject from AIS;
2012                            aView   : View from V3d) is static;
2013
2014     GetDefModes(me;
2015                 anIobj              : InteractiveObject from AIS;
2016                 Dmode,HiMod,SelMode : in out  Integer  from  Standard) is static private;
2017
2018
2019     EraseGlobal(me             : mutable;
2020                 anObj          : InteractiveObject from AIS;
2021                 updateviewer   : Boolean from Standard = Standard_True) is static private;
2022                 
2023     ClearGlobal(me             : mutable;
2024                 anObj          : InteractiveObject from AIS;
2025                 updateviewer   : Boolean from Standard = Standard_True) is static private;
2026                 
2027     ClearGlobalPrs(me             : mutable;
2028                    anObj          : InteractiveObject from AIS;
2029                    aMode          : Integer from Standard;
2030                    updateviewer   : Boolean from Standard = Standard_True) is static private;
2031
2032
2033     ---Category: Private Methods
2034
2035     IsInLocal(me;
2036               anObject   : InteractiveObject from AIS;
2037               TheIndex   : in out Integer from Standard)
2038     returns Boolean from Standard;
2039     ---Purpose: returns if possible,
2040     --          the first local context where the object is seen
2041
2042
2043     InitAttributes(me:mutable) is static private;
2044
2045
2046     PurgeViewer(me:mutable;Vwr:Viewer from V3d) 
2047     returns Integer from Standard is static private;
2048
2049 fields
2050
2051     myObjects    : DataMapOfIOStatus from AIS;
2052
2053     -- the viewers, prsmgr, selectors
2054     mgrSelector  : SelectionManager from SelectMgr;
2055
2056     myMainPM     : PresentationManager3d from PrsMgr;
2057     myMainVwr    : Viewer from V3d;
2058     myMainSel    : ViewerSelector3d from StdSelect;
2059
2060     -- the selection and current objects.
2061
2062     mySelectionName : AsciiString from TCollection;
2063     myCurrentName   : AsciiString from TCollection;
2064
2065     myLastPicked    : InteractiveObject from AIS;    
2066     myLastinMain    : InteractiveObject from AIS;
2067     
2068     
2069     myWasLastMain       : Boolean from Standard;
2070     myCurrentTouched    : Boolean from Standard;
2071     mySelectedTouched   : Boolean from Standard;
2072     myToHilightSelected : Boolean from Standard;
2073
2074     -- the neutral point filter...
2075
2076     myFilters : OrFilter from SelectMgr;
2077
2078     -- the attributes of session...
2079
2080     myDefaultDrawer     : Drawer from Prs3d;
2081     myDefaultColor      : NameOfColor from Quantity; -- for shading....
2082     myHilightColor      : NameOfColor from Quantity;
2083     mySelectionColor    : NameOfColor from Quantity;
2084     myPreselectionColor : NameOfColor from Quantity;
2085     mySubIntensity      : NameOfColor from Quantity;
2086     myDisplayMode       : Integer     from Standard;
2087
2088     -- The Local Context...
2089
2090     myLocalContexts      : DataMapOfILC from AIS;
2091     myCurLocalIndex      : Integer      from  Standard; 
2092     mylastmoveview       : View         from V3d;
2093
2094     -- The detected objects
2095
2096     myAISDetectedSeq : SequenceOfInteractive from AIS;
2097     -- the sequence of detected interative objects.
2098     myAISCurDetected : Integer from Standard;
2099     -- current detected interactive object.
2100     -- This variable is used by following functions:
2101     -- InitDetected(), MoreDetected(), NextDetected(), DetectedCurrentShape(), DetectedCurrentObject().
2102     myZDetectionFlag: Boolean from Standard;
2103     -- This variable is used by SetZDetection() and ZDetection() methods
2104
2105     -- abd:
2106     myIsAutoActivateSelMode : Boolean from Standard;
2107     
2108 friends
2109     class LocalContext from AIS
2110     
2111 end InteractiveContext;