NIS_InteractiveContext Class Reference
#include <NIS_InteractiveContext.hxx>
Public Types |
| enum | SelectionMode { Mode_NoSelection = 0,
Mode_Normal,
Mode_Additive,
Mode_Exclusive
} |
Public Member Functions |
| | NIS_InteractiveContext () |
| virtual | ~NIS_InteractiveContext () |
const
Handle_NIS_InteractiveObject & | GetObject (const Standard_Integer theID) const |
| Standard_Integer | NbObjects () |
| Standard_Integer | NbDrawers () |
const
Handle_NCollection_IncAllocator & | Allocator () const |
|
|
| void | AttachView (const Handle_NIS_View &theView) |
| void | DetachView (const Handle_NIS_View &theView) |
|
|
| void | Display (const Handle_NIS_InteractiveObject &theObj, const Handle_NIS_Drawer &theDrawer=NULL, const Standard_Boolean isUpdateViews=Standard_True) |
| void | Erase (const Handle_NIS_InteractiveObject &theObj, const Standard_Boolean isUpdateViews=Standard_True) |
| void | Remove (const Handle_NIS_InteractiveObject &theObj, const Standard_Boolean isUpdateViews=Standard_True) |
| void | DisplayAll (const Standard_Boolean isUpdateViews=Standard_True) |
| void | EraseAll (const Standard_Boolean isUpdateViews=Standard_True) |
| void | RemoveAll (const Standard_Boolean isUpdateViews=Standard_True) |
| void | UpdateViews () |
| void | GetBox (Bnd_B3f &theBox, const NIS_View *theView) const |
|
|
| const Handle_NIS_SelectFilter & | GetFilter () const |
| void | SetFilter (const Handle_NIS_SelectFilter &theFilter) |
| SelectionMode | GetSelectionMode () const |
| void | SetSelectionMode (const SelectionMode theMode) |
| Standard_Boolean | ProcessSelection (const Handle_NIS_InteractiveObject &O, const Standard_Boolean isMultiple=Standard_False) |
| void | ProcessSelection (const TColStd_PackedMapOfInteger &map, const Standard_Boolean isMultiple=Standard_False) |
| Standard_Boolean | SetSelected (const Handle_NIS_InteractiveObject &theObj, const Standard_Boolean isSelected=Standard_True) |
| void | SetSelected (const TColStd_PackedMapOfInteger &map, const Standard_Boolean isAdded=Standard_False) |
| Standard_Boolean | IsSelected (const Handle_NIS_InteractiveObject &theOb) |
| void | ClearSelected () |
| const TColStd_PackedMapOfInteger & | GetSelected () |
| void | SetSelectable (const TColStd_PackedMapOfInteger &IDs, const Standard_Boolean isSelectable) |
| Standard_Boolean | IsSelectable (const Standard_Integer objID) const |
Protected Member Functions |
| void | redraw (const Handle_NIS_View &theView, const NIS_Drawer::DrawType theType) |
| Standard_Real | selectObject (Handle_NIS_InteractiveObject &theSel, const gp_Ax1 &theAxis, const Standard_Real theOver, const Standard_Boolean isOnlySelectable=Standard_True) const |
| Standard_Boolean | selectObjects (TColStd_PackedMapOfInteger &mapObj, const Bnd_B3f &theBox, const gp_Trsf &theTrf, const gp_Trsf &theTrfInv, const Standard_Boolean isFullyIn) const |
Detailed Description
InteractiveContext is the central NIS structure that stores and manages all InteractiveObject instances as well as the Drawers for their visualisation. There may be one or more Views referred by an InteractiveContext instance. Also there may be one or more InteractiveContext instances referring the same View. However the latter case is not typical (see NIS_View description).
To add or remove a View in a Context, use methods AttachView() and DetachView().
The main purpose of class NIS_InteractiveContext is allocation and management of NIS_InteractiveObject instances.
An InteractiveObject should be added to the Context by a call to method Display(). After that (not before) it becomes possible to:
-
change the presentation of the InteractiveObject (e.g., modify the color)
-
make the InteractiveObject visible or invisible;
-
set Transparency;
-
select InteractiveObject interactively, including the hilighting and the dynamic hilighting.
All methods managing InteractiveObject instances have the optional parameter 'isUpdateViews'. When it is set to True (default), the modification of the object brings about the immediate update of the presentation (the corresponding Drawer is flagged to recompute presentations). However, for block operations when many InteractiveObject instances are affected it is usually better to delay this recalculation till a definite moment in the end of updates. Then you can set the optional parameter to False and in the end - call the method UpdateViews of the NIS_InteractiveContext.
Typical scheme of usage:
Additional services provided by InteractiveContext:
-
Every instance of this class maintains a distinct NCollection_IncAllocator that can be used by contained NIS_InteractiveObject and NIS_Drawer instances. For example, each Object may be assigned a name using the method SetAttribute, like:
Standard_Size aLen = strlen(theName)+1;
char * aName = (char *) myContext->Allocator()->Allocate(aLen);
memcpy (aName, theName, aLen);
myObject->SetAttribute(aName);
Member Enumeration Documentation
- Enumerator:
| Mode_NoSelection |
Seelction is totally disabled.
|
| Mode_Normal |
Selected are added to or removed from list.
|
| Mode_Additive |
Selected are added to the list of selected.
|
| Mode_Exclusive |
Selected are removed from the list.
|
Constructor & Destructor Documentation
| NIS_InteractiveContext::NIS_InteractiveContext |
( |
|
) |
|
| virtual NIS_InteractiveContext::~NIS_InteractiveContext |
( |
|
) |
[virtual] |
Member Function Documentation
| const Handle_NCollection_IncAllocator& NIS_InteractiveContext::Allocator |
( |
|
) |
const [inline] |
Query the memory allocator associated with InteractiveContext instance.
| void NIS_InteractiveContext::AttachView |
( |
const Handle_NIS_View & |
theView |
) |
|
Associate this Context with the given View.
| void NIS_InteractiveContext::ClearSelected |
( |
|
) |
|
Reset all previous selection.
| void NIS_InteractiveContext::DetachView |
( |
const Handle_NIS_View & |
theView |
) |
|
Stop the association of the Context with the given View.
| void NIS_InteractiveContext::Display |
( |
const Handle_NIS_InteractiveObject & |
theObj, |
|
|
const Handle_NIS_Drawer & |
theDrawer = NULL, |
|
|
const Standard_Boolean |
isUpdateViews = Standard_True | |
|
) |
| | |
Make the given interactive object visible in the current context. If the object is not yet added to this context, it is added. Therefore this method should follow the creation of an InteractiveObject instance before it can be displayed.
- Parameters:
-
| theObj | Interactive object instance. |
| theDrawer | If this parameter is NULL, the default drawer is used for theObj, defined by the object type. Otherwise the given Drawer (must be present in this context) is used for theObj. Use the parameter to change the presentation of theObj. |
| isUpdateViews | If True, the drawer receives isUpdate flag, then it will recompute the presentations when Redraw event happens. You can leave the parameter to False if you have to make a number of similar calls, then you would call UpdateViews() in the end. |
| void NIS_InteractiveContext::DisplayAll |
( |
const Standard_Boolean |
isUpdateViews = Standard_True |
) |
|
Make all stored InteractiveObject instances visible, equivalent to calling method Display() for all contained objects.
- Parameters:
-
| isUpdateViews | If True, the drawer receives isUpdate flag, then it will recompute the presentations when Redraw event happens. You can leave the parameter to False if you have to make a number of similar calls, then you would call UpdateViews() in the end. |
| void NIS_InteractiveContext::Erase |
( |
const Handle_NIS_InteractiveObject & |
theObj, |
|
|
const Standard_Boolean |
isUpdateViews = Standard_True | |
|
) |
| | |
Make the given object invisible in the current InteractiveContext.
- Parameters:
-
| theObj | Interactive object instance. Must be already added to this context. |
| isUpdateViews | If True, the drawer receives isUpdate flag, then it will recompute the presentations when Redraw event happens. You can leave the parameter to False if you have to make a number of similar calls, then you would call UpdateViews() in the end. |
| void NIS_InteractiveContext::EraseAll |
( |
const Standard_Boolean |
isUpdateViews = Standard_True |
) |
|
Make all stored InteractiveObject instances invisible, equivalent to calling method Erase() for all contained objects.
- Parameters:
-
| isUpdateViews | If True, the drawer receives isUpdate flag, then it will recompute the presentations when Redraw event happens. You can leave the parameter to False if you have to make a number of similar calls, then you would call UpdateViews() in the end. |
| void NIS_InteractiveContext::GetBox |
( |
Bnd_B3f & |
theBox, |
|
|
const NIS_View * |
theView | |
|
) |
| | const |
Find the bounding box of all Objects displayed (visible) in the given View.
- Parameters:
-
| theBox | [out] Bounding box, updated (not reinitialized!) by the object boxes. |
| theView | View instance where the objects are displayed. |
| const Handle_NIS_SelectFilter& NIS_InteractiveContext::GetFilter |
( |
|
) |
const [inline] |
Query the current selection filter. Use the method SetFilter to install it. By default returns a NULL handle.
| const Handle_NIS_InteractiveObject& NIS_InteractiveContext::GetObject |
( |
const Standard_Integer |
theID |
) |
const [inline] |
Query the InteractiveObject instance by its ID.
Query the set of selected objects.
- Returns:
- Map of integer IDs of objects.
| SelectionMode NIS_InteractiveContext::GetSelectionMode |
( |
|
) |
const [inline] |
Query the current selection mode.
Return True if the object can be selected (processing by SetSelected methods), or False if can not be.
- Returns:
- Selectable state of the object.
| Standard_Boolean NIS_InteractiveContext::IsSelected |
( |
const Handle_NIS_InteractiveObject & |
theOb |
) |
|
Query if the given object is selected.
Query the total number of Drawers instances.
Query the total number of InteractiveObject instances. This number can be smaller than the greatest object ID, therefore you should not iterate till this number using GetObject; use class NIS_ObjectsIterator instead.
Process the selection of multiple objects. Equivalent to the other ProcessSelection method, on a set of objects. Particularly, the current selection mode is respected.
- Parameters:
-
| map | Container of IDs of objects to be processed |
| isMultiple | If True, then the objects are not automatically deselected. |
Set or unset the selected state of the object, also changing its hilight status.
If mySelectionMode == Mode_NoSelection this method does nothing (returns False always).
If the given object is NULL (e.g., if the mouse was clicked on empty area), then the current selection is cleared (modes Normal and Additive only).
The selection algorithm with respect to the given object is defined by the current selection mode :
-
Mode_Normal - the selection state is toggled
-
Mode_Additive - the object is always added to the selection
-
Mode_Exclusive - the object is always removed from the selection
This method does not update the views.
- Parameters:
-
| O | Object to be selected or deselected |
| isMultiple | If True, then the objects are not automatically deselected. |
- Returns:
- True if the selection status has been changed, False if nothing changed
| void NIS_InteractiveContext::redraw |
( |
const Handle_NIS_View & |
theView, |
|
|
const NIS_Drawer::DrawType |
theType | |
|
) |
| | [protected] |
| void NIS_InteractiveContext::Remove |
( |
const Handle_NIS_InteractiveObject & |
theObj, |
|
|
const Standard_Boolean |
isUpdateViews = Standard_True | |
|
) |
| | |
Remove the given object from its Interactive context.
- Parameters:
-
| theObj | Interactive object instance. Must be already added to this context. |
| isUpdateViews | If True, the drawer receives isUpdate flag, then it will recompute the presentations when Redraw event happens. You can leave the parameter to False if you have to make a number of similar calls, then you would call UpdateViews() in the end. |
| void NIS_InteractiveContext::RemoveAll |
( |
const Standard_Boolean |
isUpdateViews = Standard_True |
) |
|
Clean the context of its contained objects. Drawers are not destroyed however all presentations should become empty.
- Parameters:
-
| isUpdateViews | If True, the drawer receives isUpdate flag, then it will recompute the presentations when Redraw event happens. You can leave the parameter to False if you have to make a number of similar calls, then you would call UpdateViews() in the end. |
Detect the object selected by the given ray.
- Parameters:
-
| theSel | [out] The selected object that has the lowest ray distance. |
| theAxis | Selection ray |
| theOver | Thickness of the selecting ray |
| isOnlySelectable | If False, any displayed object can be picked, otherwise only selectable ones. |
- Returns:
- The ray distance of the intersection point between the ray and theSel.
Build a list of objects that are inside or touched by an oriented box.
- Parameters:
-
| mapObj | [out] Container of object IDs, updated by detected objects. |
| theBox | 3D box of selection |
| theTrf | Position/Orientation of the box (for box-box intersections) |
| theTrfInv | Inverted Position/Orientation of the box (for box-object intersections) |
| isFullyIn | True if only those objects are processed that are fully inside the selection rectangle. False if objects fully or partially included in the rectangle are processed. |
- Returns:
- True if at least one object was selected.
| void NIS_InteractiveContext::SetFilter |
( |
const Handle_NIS_SelectFilter & |
theFilter |
) |
[inline] |
Install a selection filter.
Define objects that can be selected by no means (isSelectable = false), or make the objects selectable (isSelectable = true).
- Parameters:
-
| IDs | Container of IDs of objects to be set as selectable or not selectable |
| isSelectable | If False, the given IDs are made non-selectable by SetSelected methods, If True, the given IDs are made selectable. |
Set the selection. Previously selected objects are deselected if they are not included in the given map.
- Parameters:
-
| map | Container of IDs of objects to be selected |
| isAdded | If True, the given IDs are added to the current selection (nothing is deselected). If False (default) - the previous selection is forgotten. |
Set or unset the selected state of the object, also changing its hilight status.
This method does not update the views.
- Parameters:
-
| theObj | Object to be selected or deselected |
| isSelected | true if the object should be selected, False - if deselected. |
- Returns:
- True if the selection status has been changed, False if noithing changed
| void NIS_InteractiveContext::SetSelectionMode |
( |
const SelectionMode |
theMode |
) |
[inline] |
| void NIS_InteractiveContext::UpdateViews |
( |
|
) |
|
This method signal that the presenation should be refreshed in all Drawers and in all Views.
The documentation for this class was generated from the following file: