--- File: AIS_InteractiveContext.cdl
--- Created: Wed Dec 18 10:11:30 1996
--- Author: Robert COUBLANC
--- <rob@robox.paris1.matra-dtv.fr>
---
+-- Created on: 1996-12-18
+-- Created by: Robert COUBLANC
+-- Copyright (c) 1996-1999 Matra Datavision
+-- Copyright (c) 1999-2014 OPEN CASCADE SAS
+--
+-- This file is part of Open CASCADE Technology software library.
+--
+-- This library is free software; you can redistribute it and/or modify it under
+-- the terms of the GNU Lesser General Public License version 2.1 as published
+-- by the Free Software Foundation, with special exception defined in the file
+-- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+-- distribution for complete text of the license and disclaimer of any warranty.
+--
+-- Alternatively, this file may be used under the terms of Open CASCADE
+-- commercial license or contractual agreement.
+
--Modified by
-- rob : Dec 17 1997 -> Update Method Added + Use in Deviation Angle...
---
-- rob : Feb 05 1998 -> UpdateOnlySelection, UpdateOnlyPrs
---
-- Apr 02 1998 -> Select Methods has been added a boolean updateviewer.
-- GG : GER61351 17/11/1999 Change SetColor() with a compatible i
-- Quantity_Color instead the restricted NameOfColor.
-- Add SetCurrentFacingModel() methods
--- EUG : G003 05/11/1999 Degeneration mode support
--- Add SetDegenerateModel() methods
-- GG : IMP140200 Add SetSelectedAspect() method
-- GG : 25/05/00 BUC60688 Add SetSensitivity() methods
-- VSV : 22/05/01 Add Selection by polygon
-- SAV : Add DisplayFromCollector() method
--- GG : IMP150501 CADPAK_V2 Add Drag() method
-- ZSV : IMP160701 Add InitDetected(),MoreDetected(),NextDetected(),
-- DetectedCurrentShape(),DetectedCurrentObject()
-- methods
-- SAV : OCC172 : Delete() redefined to remove selection objects from
-- the static map.
-- SAN : OCC4895 22/03/04 High-level interface for controlling polygon offsets
---
-- SLN : SetToHilightSelected method added
----Copyright: Matra Datavision 1996
class InteractiveContext from AIS inherits TShared from MMgt
SelectionManager from SelectMgr,
PresentationManager3d from PrsMgr,
ViewerSelector3d from StdSelect,
+ SensitivityMode from StdSelect,
MapOfInteractive from AIS,
InteractiveObject from AIS,
DisplayMode from AIS,
Location from TopLoc,
EntityOwner from SelectMgr,
TypeOfFacingModel from Aspect,
- TypeOfDegenerateModel from Aspect,
Array1OfPnt2d from TColgp,
Transformation from Geom
---Purpose:
-- Constructs the interactive context object defined by
-- the principal viewer MainViewer.
-
- Create(MainViewer,Collector: Viewer from V3d)
- returns mutable InteractiveContext from AIS;
- ---Purpose:
- -- Constructs the interactive context object defined by
- -- the principal viewer MainViewer and the collector
- -- (or trash) viewer.
-
Delete(me) is redefined;
- IsCollectorClosed(me) returns Boolean from Standard;
- ---C++: inline
- CloseCollector(me:mutable);
- ---C++: inline
- OpenCollector(me:mutable);
-
-
-
---Category: General DISPLAY SERVICES
SetAutoActivateSelection( me: mutable; Auto : Boolean from Standard );
GetAutoActivateSelection( me ) returns Boolean from Standard;
Erase(me : mutable;
aniobj : InteractiveObject from AIS;
- updateviewer : Boolean from Standard = Standard_True;
- PutInCollector : Boolean from Standard = Standard_False);
----Purpose: To erase presentations in current local context, or
--- failing that, in other local contexts which allow erasing.
---
--- If putinCollector is True, the object is erased with graphical status Erased,
--- and put into the Collector. These objects can be retrieved
--- from Interactive Context by ObjectsInCollector method.
--- If putinCollector is False, the objects erased with graphical status FullErased,
--- and not put into the Collector. These objects can be retrieved
--- from Interactive Context by ErasedObjects method.
---
--- Note: objects that are put into the Collector recomute their presentation
--- for Collector Presentation Manager.
---
--- If a local context is open and if updateviewer is
--- False, the presentation of the Interactive
--- Object activates the selection mode; the object is
--- displayed but no viewer will be updated.
-
- EraseMode(me : mutable;
- aniobj : InteractiveObject from AIS;
- aMode : Integer from Standard;
- updateviewer : Boolean from Standard = Standard_True);
- ---Purpose: Updates viewer contents and returns the display
--- mode of each aniobj object. Use only if more than
--- one display mode is active in the main viewer.
--- This method works only on presentation modes other
--- than the default mode. Nothing is done if aMode is
--- the default presentation mode.
--- If a local context is open and if updateviewer equals
--- Standard_False, the presentation of the Interactive
--- Object activates the selection mode; the object is
--- displayed but no viewer will be updated.
-
-
-
- EraseAll(me:mutable;
- PutInCollector : Boolean from Standard = Standard_False;
- updateviewer : Boolean from Standard = Standard_True);
- ---Purpose: Every erased object goes into the Collector viewer,
- -- depending on PutInCollector value.
-
- DisplayAll(me : mutable;
- OnlyFromCollector : Boolean from Standard = Standard_False;
- updateviewer : Boolean from Standard = Standard_True);
- ---Purpose: Displays all erased objects or display all objects from collector
-
- DisplayFromCollector(me : mutable;
- anIObj : InteractiveObject from AIS;
- updateviewer : Boolean from Standard = Standard_True);
- ---Purpose: display anIObj from the collector.
-
- EraseSelected(me:mutable;
- PutInCollector:Boolean from Standard=Standard_False;
- updateviewer:Boolean from Standard = Standard_True);
+ updateviewer : Boolean from Standard = Standard_True);
+---Purpose: Hides the object. The object's presentations are simply
+-- flagged as invisible and therefore excluded from redrawing.
+-- To show hidden objects, use Display().
+
+ EraseAll (me : mutable;
+ updateviewer: Boolean from Standard = Standard_True);
+ ---Purpose: Hides all objects. The object's presentations are simply
+-- flagged as invisible and therefore excluded from redrawing.
+-- To show all hidden objects, use DisplayAll().
+
+ DisplayAll(me : mutable;
+ updateviewer: Boolean from Standard = Standard_True);
+ ---Purpose: Displays all hidden objects.
+
+ EraseSelected(me: mutable;
+ updateviewer: Boolean from Standard = Standard_True);
---Purpose:
--- Erases selected objects if there is no open active local context.
--- If there is no local context activated and if
--- updateviewer equals Standard_False, the
--- presentation of the Interactive Object activates the
--- selection mode; the object is displayed but no viewer
--- will be updated.
--- If a local context is open, this method is neutral.
+-- Hides selected objects. The object's presentations are simply
+-- flagged as invisible and therefore excluded from redrawing.
+-- To show hidden objects, use Display().
DisplaySelected(me:mutable;updateviewer:Boolean from Standard = Standard_True);
---Purpose: Displays selected objects if a local context is open.
---Purpose: Sets the display priority aPriority of the seen parts
-- presentation of the entity anIobj.
+ SetZLayer( me : mutable;
+ theIObj : InteractiveObject from AIS;
+ theLayerId : Integer from Standard );
+ ---Purpose: Set Z layer id for interactive object. The layer can be
+ -- specified for displayed object only. The Z layers can be used to display
+ -- temporarily presentations of some object in front of the other objects
+ -- in the scene. The ids for Z layers are generated by V3d_Viewer.
+ -- Note that Z layers differ from under-/overlayer in V3d_View:
+ -- under-/overlayer are intended for specific 2D drawings that appear
+ -- behind/in front of all 3D presentations, while SetZLayer() method
+ -- applies to regular 3D presentations and does not imply any specific
+ -- drawing methods.
+
+ GetZLayer( me;
+ theIObj : InteractiveObject from AIS )
+ returns Integer from Standard;
+ ---Purpose: Get Z layer id set for displayed interactive object.
+ -- If the object doesn't exists in context or has no computed presentations,
+ -- the method returns -1.
+
Redisplay(me : mutable;
aniobj : InteractiveObject from AIS;
updateviewer : Boolean from Standard = Standard_True;
---Purpose: Recomputes the active selections, flags the others
-- Doesn't update presentations
- Update(me : mutable;
- anIobj : InteractiveObject from AIS;
- updateviewer : Boolean from Standard = Standard_True);
- ---Purpose: Checks which presentations are flagged "to be recomputed"
- -- and recomputes them if they are displayed.
- -- This method doesn't force any Computation.
- -- Recomputes Flagged selections if they are activated.
-
-
-
+ Update (me : mutable;
+ theIObj : InteractiveObject from AIS;
+ theUpdateViewer : Boolean from Standard = Standard_True);
+ ---Purpose: Updates displayed interactive object by checking and
+ -- recomputing its flagged as "to be recomputed" presentation
+ -- and selection structures. This method does not force any
+ -- recomputation on its own. The method recomputes selections
+ -- even if they are loaded without activation in particular selector.
SetDisplayMode(me : mutable;
aniobj : InteractiveObject from AIS;
-- Removes selection mode from Interactive Objects.
-- aMode provides the selection mode index of the entity aniobj.
+ SetSensitivityMode(me : mutable;
+ aMode : SensitivityMode from StdSelect) is static;
+ ---Level: Public
+ ---Purpose: Sets the selection sensitivity mode. SM_WINDOW mode
+ -- uses the specified pixel tolerance to compute the sensitivity
+ -- value, SM_VIEW mode allows to define the sensitivity manually.
+
+ SensitivityMode(me) returns SensitivityMode from StdSelect;
+ ---Level: Public
+ ---Purpose: Returns the selection sensitivity mode.
+
SetSensitivity(me:mutable;
aPrecision: Real from Standard);
---Level: Public
-- When a local context is open, the defined sensitivity applies to
-- this local context instead of the main context.
- SetSensitivity(me:mutable;
+ Sensitivity (me) returns Real from Standard;
+ ---Level: Public
+ ---Purpose: Returns the selection sensitivity value.
+
+ SetPixelTolerance(me:mutable;
aPrecision: Integer from Standard = 4);
---Level: Public
---Purpose: Define the current selection pixel sensitivity
-- Warning: When a local context is open the sensitivity is apply on it
-- instead on the main context.
+ PixelTolerance(me) returns Integer from Standard;
+ ---Level: Public
+ ---Purpose: Returns the pixel tolerance.
+
---Category: put locations on objects....
--
-- Standard_False, the presentation of the Interactive
-- Object activates the selection mode; the object is
-- displayed but no viewer will be updated.
-
- SetDegenerateModel ( me : mutable;
- aniobj : InteractiveObject from AIS;
- aModel : TypeOfDegenerateModel from Aspect =
- Aspect_TDM_WIREFRAME;
- aRatio : Ratio from Quantity = 0.0);
- ---Level: Public
- ---Purpose: Sets the model of degeneration for the shaded representation
- -- of the object <aniobj>
- -- according to the degenerate ratio >= 0. & <= 1. where :
- -- <aRatio> = 0. indicate that all polygons of the object
- -- will be displayed.
- -- <aRatio> = 1. indicate that no polygons will be displayed !!
- -- When <ARatio> is > 0 & < 1. the corresponding amount
- -- of object polygons will be displayed with a random method.
- -- Warning: the degenerate structure is shown only when
- -- the animation and degenerate flags are set to TRUE
- -- in V3d_View::SetAnimationMode(..)
- ---Category: Methods to manage the object degeneration
-
- SetDegenerateModel (
- me : mutable;
- aModel : TypeOfDegenerateModel from Aspect;
- aSkipRatio : Ratio from Quantity = 0.0
- ) is static;
- ---Purpose: Defines the degenerate method to apply on the shaded
- -- representation of all objects.
SetLocalAttributes(me : mutable;
aniobj : InteractiveObject from AIS;
SetPolygonOffsets ( me : mutable;
anObj : InteractiveObject from AIS;
aMode : Integer from Standard;
- aFactor : Real from Standard = 1.0;
- aUnits : Real from Standard = 0.0;
+ aFactor : ShortReal from Standard = 1.0;
+ aUnits : ShortReal from Standard = 0.0;
updateviewer : Boolean from Standard = Standard_True ) is static;
---Purpose: Sets up polygon offsets for the given AIS_InteractiveObject.
-- It simply calls anObj->SetPolygonOffsets()
PolygonOffsets ( me;
anObj : InteractiveObject from AIS;
aMode : out Integer from Standard;
- aFactor : out Real from Standard;
- aUnits : out Real from Standard ) is static;
+ aFactor : out ShortReal from Standard;
+ aUnits : out ShortReal from Standard ) is static;
---Level: Public
---Purpose: Retrieves current polygon offsets settings for <anObj>.
---Category: Inquire methods
---Purpose: Returns the display status of the entity anIobj.
-- This will be one of the following:
-- - DS_Displayed displayed in main viewer
--- - DS_Erased erased in the Collector
--- - DS_FullErased erased everywhere but in the Collector
+-- - DS_Erased hidden in main viewer
-- - DS_Temporary temporarily displayed
-- - DS_None nowhere displayed.
-- <WithColor> will be returned TRUE
-- <theHiCol> gives the name of the hilightcolor
- IsInCollector(me;anIObj:InteractiveObject from AIS)
- returns Boolean from Standard;
----Purpose:
--- Returns true if the entity anIobj is in the Collector viewer.
-
DisplayPriority(me;anIobj: InteractiveObject from AIS)
returns Integer from Standard;
---Purpose:
-- Returns the display priority of the entity anIobj. This
-- will be display mode of anIobj if it is in the main
--- viewer, and the highlight mode if it is in the Collector viewer.
+-- viewer.
HasColor(me; aniobj: InteractiveObject from AIS)
returns Boolean from Standard;
-- are called current objects; those selected in open
-- local context, selected objects.
- UpdateCollector(me:mutable);
----Purpose: Updates the Collector viewer.
-
-
-
---Category: General Attributes for the session
DisplayMode(me) returns Integer from Standard;
-- is changed.
-- When <globalChange> is FALSE , only the current group
-- of the object presentation is changed.
- -- Updates the viewer or collector when <updateViewer> is TRUE
+ -- Updates the viewer when <updateViewer> is TRUE
---Category: Graphic attributes management
---Category: GRAPHIC DETECTION / SELECTION
-
- MoveTo(me:mutable;XPix,YPix:Integer from Standard;aView:View from V3d)
+ MoveTo (me : mutable;
+ theXPix, theYPix : Integer from Standard;
+ theView : View from V3d;
+ theToRedrawOnUpdate : Boolean from Standard = Standard_True)
returns StatusOfDetection from AIS;
----Purpose: Relays mouse position in pixels XPix and YPix to the
--- interactive context selectors. This is done by the view
--- aView passing this position to the main viewer and updating it.
--- Functions in both Neutral Point and local contexts.
-
+ ---Purpose: Relays mouse position in pixels theXPix and theYPix to the interactive context selectors.
+ -- This is done by the view theView passing this position to the main viewer and updating it.
+ -- Functions in both Neutral Point and local contexts.
+ -- If theToRedrawOnUpdate is set to false, callee should call RedrawImmediate() to highlight detected object.
HasNextDetected(me) returns Boolean from Standard;
---Purpose: returns True if other entities were detected in the
-- last mouse detection
- HilightNextDetected(me:mutable;aView:View from V3d)
+ HilightNextDetected (me : mutable;
+ theView : View from V3d;
+ theToRedrawImmediate : Boolean from Standard = Standard_True)
returns Integer from Standard;
---Purpose: if more than 1 object is detected by the selector,
-- only the "best" owner is hilighted at the mouse position.
-- have been hilighted , the next call will hilight
-- the first one again
- HilightPreviousDetected(me:mutable;aView:View from V3d)
+ HilightPreviousDetected (me : mutable;
+ theView : View from V3d;
+ theToRedrawImmediate : Boolean from Standard = Standard_True)
returns Integer from Standard;
---Purpose: Same as previous methods in reverse direction...
-- 4.EndImmediateDraw() draws all the stored objects...
--
- BeginImmediateDraw (me:mutable) returns Boolean from Standard;
+ BeginImmediateDraw (me : mutable)
+ returns Boolean from Standard;
---Purpose: initializes the list of presentations to be displayed
-- returns False if No Local COnte
- ImmediateAdd (me:mutable;anIObj:InteractiveObject from AIS;aMode:Integer from Standard=0)
+ ImmediateAdd (me : mutable;
+ theObj : InteractiveObject from AIS;
+ theMode : Integer from Standard = 0)
returns Boolean from Standard;
---Purpose: returns True if <anIObj> has been stored in the list.
- ImmediateRemove (me:mutable;anIObj:InteractiveObject from AIS;aMode:Integer from Standard=0)
- returns Boolean from Standard;
- ---Purpose: returns True if <anIObj> has been removed from the list.
-
- EndImmediateDraw(me:mutable;aView : View from V3d;DoubleBuf:Boolean from Standard=Standard_False)
+ EndImmediateDraw (me : mutable;
+ theView : View from V3d)
returns Boolean from Standard;
---Purpose: returns True if the immediate display has been done.
- EndImmediateDraw(me:mutable;DoubleBuf:Boolean from Standard=Standard_False)
+
+ EndImmediateDraw (me : mutable)
returns Boolean from Standard;
- ---Purpose: Uses the First Active View of Main Viewer!!!
+ ---Purpose: Uses the First Active View of Main Viewer!
-- returns True if the immediate display has been done.
IsImmediateModeOn(me) returns Boolean from Standard;
- Drag ( me : mutable;
- aView: View from V3d;
- anObject: InteractiveObject from AIS;
- aTranformation: Transformation from Geom;
- postConcatenate: Boolean from Standard = Standard_False;
- update: Boolean from Standard = Standard_False;
- zBuffer: Boolean from Standard = Standard_False)
- is static;
- ---Level: Public
- ---Purpose: Transforms the current presentation of the object <anObject>
- -- using the transient graphic space of the view <aView> in
- -- immediat mode graphics.
- ---Warning: When <update> is TRUE, then the view is redrawn with ALL
- -- transformed presentations.
- -- When <zBuffer> is TRUE all transient graphic are drawn
- -- using zbuffer activity.
- -- Note that when <update> is TRUE the view is cleared and redrawn
- -- and soforth the Z buffer is always activated therefore the <zBuffer>
- -- parameter is ignored in this case.
-
-
---Category: Activation/Deactivation of Selection Modes.
-
SetAutomaticHilight(me:mutable;aStatus:Boolean);
---Purpose:
-- Sets the highlighting status aStatus of detected and
-- by Default, <WhichSignature> = -1 means
-- control only on <WhichKind>.
- Collector(me) returns any Viewer from V3d;
- ---C++: return const &
- ---C++: inline
-
- ObjectsInCollector (me;aListOfIO : in out ListOfInteractive from AIS);
- ---Purpose:
- -- Returns the list aListOfIO of erased objects of a
- -- particular Type WhichKind and Signature WhichSignature.
- -- By Default, WhichSignature equals 1. This means
- -- that there is a check on type only.
-
- ObjectsInCollector (me;
- WhichKind :KindOfInteractive from AIS;
- WhichSignature :Integer from Standard;
- aListOfIO : in out ListOfInteractive from AIS);
- ---Purpose: gives the list of erased objects of a particular
- -- Type and signature
- -- by Default, <WhichSignature> = -1 means
- -- control only on <WhichKind>.
-
-
ErasedObjects (me;theListOfIO : in out ListOfInteractive from AIS);
---Purpose:
- -- Returns the list theListOfIO of erased objects (but not placed into collecter)
+ -- Returns the list theListOfIO of erased objects (hidden objects)
-- particular Type WhichKind and Signature WhichSignature.
-- By Default, WhichSignature equals 1. This means
-- that there is a check on type only.
WhichKind :KindOfInteractive from AIS;
WhichSignature :Integer from Standard;
theListOfIO : in out ListOfInteractive from AIS);
- ---Purpose: gives the list of erased objects (but not placed into collecter)
+ ---Purpose: gives the list of erased objects (hidden objects)
-- Type and signature
-- by Default, <WhichSignature> = -1 means
-- control only on <WhichKind>.
DomainOfMainViewer(me) returns CString from Standard;
---Purpose: Returns the domain name of the main viewer.
- DomainOfCollector(me) returns CString from Standard;
- ---Purpose: Returns the domain name of the Collector viewer.
-
+
---Category: Internal
---Category: Internal
MainPrsMgr (me) returns any PresentationManager3d from PrsMgr;
---C++: inline
---C++: return const &
- CollectorPrsMgr(me) returns any PresentationManager3d from PrsMgr;
- ---C++: inline
- ---C++: return const &
-
MainSelector(me) returns any ViewerSelector3d from StdSelect;
---C++: inline
---C++: return const &
LocalSelector(me) returns any ViewerSelector3d from StdSelect;
-
- CollectorSelector(me) returns any ViewerSelector3d from StdSelect;
- ---C++: inline
- ---C++: return const &
-
-
-
- PurgeDisplay(me:mutable;CollectorToo:Boolean from Standard = Standard_False)
+ PurgeDisplay(me:mutable)
returns Integer from Standard;
---Level: Internal
---Purpose: Clears all the structures which don't
EraseGlobal(me : mutable;
- anObj : InteractiveObject from AIS;
- updateviewer : Boolean from Standard = Standard_True;
- PutInCollector : Boolean from Standard = Standard_False) is static private;
+ anObj : InteractiveObject from AIS;
+ updateviewer : Boolean from Standard = Standard_True) is static private;
ClearGlobal(me : mutable;
anObj : InteractiveObject from AIS;
myMainVwr : Viewer from V3d;
myMainSel : ViewerSelector3d from StdSelect;
- myCollectorPM : PresentationManager3d from PrsMgr;
- myCollectorVwr : Viewer from V3d;
- myCollectorSel : ViewerSelector3d from StdSelect;
-
- myIsCollClosed : Boolean from Standard;
-
-- the selection and current objects.
mySelectionName : AsciiString from TCollection;
myLastPicked : InteractiveObject from AIS;
myLastinMain : InteractiveObject from AIS;
- myLastinColl : InteractiveObject from AIS;
myWasLastMain : Boolean from Standard;