]> OCCT Git - occt-copy.git/commitdiff
0031221: Visualization - selection filter in context
authornds <nds@opencascade.com>
Sun, 8 Dec 2019 15:57:34 +0000 (18:57 +0300)
committernds <nds@opencascade.com>
Wed, 12 Feb 2020 22:35:32 +0000 (01:35 +0300)
(cherry picked from commit 0ef1e0394c44f7cb1753634f53e6ef0e8cda86ad)

# Conflicts:
# src/AIS/AIS_InteractiveContext_1.cxx

15 files changed:
src/AIS/AIS_InteractiveContext.cxx
src/AIS/AIS_InteractiveContext.hxx
src/AIS/AIS_InteractiveContext_1.cxx
src/AIS/AIS_InteractiveContext_2.cxx
src/AIS/AIS_InteractiveContext_3.cxx
src/AIS/AIS_Selection.cxx
src/SelectMgr/FILES
src/SelectMgr/SelectMgr_AndFilter.cxx
src/SelectMgr/SelectMgr_AndFilter.hxx
src/SelectMgr/SelectMgr_DisabledObjectsFilter.cxx [new file with mode: 0644]
src/SelectMgr/SelectMgr_DisabledObjectsFilter.hxx [new file with mode: 0644]
src/SelectMgr/SelectMgr_Filter.hxx
src/SelectMgr/SelectMgr_FilterReaction.hxx [new file with mode: 0644]
src/SelectMgr/SelectMgr_OrFilter.cxx
src/SelectMgr/SelectMgr_OrFilter.hxx

index aef6de6533bac9e474b4b186a1d28139d7342adc..8aa74c30768b6790385b5b71925cb6069ec87e8a 100644 (file)
@@ -39,6 +39,8 @@
 #include <Prs3d_ShadingAspect.hxx>
 #include <PrsMgr_PresentableObject.hxx>
 #include <Quantity_Color.hxx>
+#include <SelectMgr_AndFilter.hxx>
+#include <SelectMgr_DisabledObjectsFilter.hxx>
 #include <SelectMgr_EntityOwner.hxx>
 #include <SelectMgr_Filter.hxx>
 #include <SelectMgr_OrFilter.hxx>
@@ -128,7 +130,7 @@ myMainVwr(MainViewer),
 myMainSel(new StdSelect_ViewerSelector3d()),
 myToHilightSelected(Standard_True),
 mySelection(new AIS_Selection()),
-myFilters(new SelectMgr_OrFilter()),
+myFilters(new SelectMgr_AndFilter()),
 myDefaultDrawer(new Prs3d_Drawer()),
 myCurDetected(0),
 myCurHighlighted(0),
@@ -136,6 +138,8 @@ myPickingStrategy (SelectMgr_PickingStrategy_FirstAcceptable),
 myAutoHilight(Standard_True),
 myIsAutoActivateSelMode(Standard_True)
 {
+  myFilters->Add (new SelectMgr_DisabledObjectsFilter());
+
   mgrSelector = new SelectMgr_SelectionManager (myMainSel);
 
   myStyles[Prs3d_TypeOfHighlight_None]          = myDefaultDrawer;
index 028cd57e7b90dc585851ac680469e39f39047547..d706bc4fee483b94236e9b0afe5e1ec6213b07b6 100644 (file)
@@ -47,7 +47,7 @@
 
 class SelectMgr_SelectionManager;
 class V3d_Viewer;
-class SelectMgr_OrFilter;
+class SelectMgr_AndFilter;
 class V3d_View;
 class TopLoc_Location;
 class TCollection_ExtendedString;
@@ -767,13 +767,20 @@ public: //! @name management of active Selection Modes
 
 public: //! @name Selection Filters management
 
+  //! Allows you to set the filter.
+  Standard_EXPORT void SetFilter (const Handle(SelectMgr_Filter)& theFilter);
+
+  //! Returns the filter. Use with global is in false to get the filter, that is set with SetFilter.
+  //! If global filter is true, it returns whole filter used in the context (with an internal default filter)
+  Standard_EXPORT Handle(SelectMgr_Filter) Filter (const Standard_Boolean isGlobalFilter = Standard_False) const;
+
   //! Returns the list of filters active in a local context.
-  Standard_EXPORT const SelectMgr_ListOfFilter& Filters() const;
+  Standard_EXPORT SelectMgr_ListOfFilter Filters() const;
 
-  //! Allows you to add the filter.
+  //! Allows you to add the filter. Default filter here is Or filter.
   Standard_EXPORT void AddFilter (const Handle(SelectMgr_Filter)& theFilter);
 
-  //! Removes a filter from context.
+  //! Removes a filter from context. Default filter here is Or filter
   Standard_EXPORT void RemoveFilter (const Handle(SelectMgr_Filter)& theFilter);
 
   //! Remove all filters from context.
@@ -1439,7 +1446,7 @@ protected: //! @name internal fields
   Handle(SelectMgr_EntityOwner) myLastPicked;
   Standard_Boolean myToHilightSelected;
   Handle(AIS_Selection) mySelection;
-  Handle(SelectMgr_OrFilter) myFilters;
+  Handle(SelectMgr_AndFilter) myFilters;
   Handle(Prs3d_Drawer) myDefaultDrawer;
   Handle(Prs3d_Drawer) myStyles[Prs3d_TypeOfHighlight_NB];
   TColStd_SequenceOfInteger myDetectedSeq;
index 699a8711268700cf2c42c044b36d551700ccb8e1..4134d1022cf3024547b0c6d1ea2c5267ff4c8f10 100644 (file)
 #include <Prs3d_Presentation.hxx>
 #include <Quantity_Color.hxx>
 #include <Select3D_SensitiveEntity.hxx>
+#include <SelectMgr_AndFilter.hxx>
+#include <SelectMgr_DisabledObjectsFilter.hxx>
 #include <SelectMgr_EntityOwner.hxx>
 #include <SelectMgr_Filter.hxx>
+#include <SelectMgr_FilterReaction.hxx>
 #include <SelectMgr_OrFilter.hxx>
 #include <SelectMgr_Selection.hxx>
 #include <SelectMgr_SelectionManager.hxx>
@@ -335,7 +338,8 @@ AIS_StatusOfDetection AIS_InteractiveContext::MoveTo (const Standard_Integer  th
   AIS_StatusOfDetection aStatus        = AIS_SOD_Nothing;
   Standard_Boolean      toUpdateViewer = Standard_False;
 
-  myFilters->SetDisabledObjects (theView->View()->HiddenObjects());
+  Handle(SelectMgr_DisabledObjectsFilter) anObjectsFilter = Handle(SelectMgr_DisabledObjectsFilter)::DownCast (myFilters->StoredFilters().First());
+  anObjectsFilter->SetDisabledObjects (theView->View()->HiddenObjects());
   myMainSel->Pick (theXPix, theYPix, theView);
 
   // filling of myAISDetectedSeq sequence storing information about detected AIS objects
@@ -347,7 +351,7 @@ AIS_StatusOfDetection AIS_InteractiveContext::MoveTo (const Standard_Integer  th
   {
     Handle(SelectMgr_EntityOwner) anOwner = myMainSel->Picked (aDetIter);
     if (anOwner.IsNull()
-     || !myFilters->IsOk (anOwner))
+     || !myFilters->IsOk (anOwner, SelectMgr_FilterReaction_Highlight))
     {
       if (myPickingStrategy == SelectMgr_PickingStrategy_OnlyTopmost)
       {
@@ -821,7 +825,7 @@ void AIS_InteractiveContext::SetSelected (const Handle(AIS_InteractiveObject)& t
   for (AIS_NListOfEntityOwner::Iterator aSelIter (mySelection->Objects()); aSelIter.More(); aSelIter.Next())
   {
     const Handle(SelectMgr_EntityOwner)& aSelOwner = aSelIter.Value();
-    if (!myFilters->IsOk (aSelOwner))
+    if (!myFilters->IsOk (aSelOwner, SelectMgr_FilterReaction_Select))
     {
       continue;
     }
@@ -867,7 +871,7 @@ void AIS_InteractiveContext::SetSelected (const Handle(AIS_InteractiveObject)& t
 void AIS_InteractiveContext::SetSelected (const Handle(SelectMgr_EntityOwner)& theOwner,
                                           const Standard_Boolean theToUpdateViewer)
 {
-  if (theOwner.IsNull() || !theOwner->HasSelectable() || !myFilters->IsOk (theOwner))
+  if (theOwner.IsNull() || !theOwner->HasSelectable() || !myFilters->IsOk (theOwner, SelectMgr_FilterReaction_Select))
     return;
 
   const Handle(AIS_InteractiveObject) anObject = Handle(AIS_InteractiveObject)::DownCast (theOwner->Selectable());
@@ -943,7 +947,7 @@ void AIS_InteractiveContext::AddOrRemoveSelected (const Handle(SelectMgr_EntityO
   if (theOwner.IsNull() || !theOwner->HasSelectable())
     return;
 
-  if (!myFilters->IsOk(theOwner) && !theOwner->IsSelected())
+  if (!myFilters->IsOk(theOwner, SelectMgr_FilterReaction_Select) && !theOwner->IsSelected())
     return;
 
   mySelection->Select (theOwner);
index 9ce6fa886fc6bbbc90d1ead31e8b6853e17a6524..e32f7fc5ec1213806f5c98ef7f9fcfd2713663d4 100644 (file)
@@ -30,6 +30,7 @@
 #include <SelectMgr_EntityOwner.hxx>
 #include <SelectMgr_Filter.hxx>
 #include <SelectMgr_OrFilter.hxx>
+#include <SelectMgr_AndFilter.hxx>
 #include <SelectMgr_SelectionManager.hxx>
 #include <Standard_Transient.hxx>
 #include <StdSelect_ViewerSelector3d.hxx>
@@ -264,22 +265,74 @@ void AIS_InteractiveContext::SubIntensityOff (const Handle(AIS_InteractiveObject
   }
 }
 
+//=======================================================================
+//function : SetFilter
+//purpose  : 
+//=======================================================================
+void AIS_InteractiveContext::SetFilter (const Handle(SelectMgr_Filter)& theFilter)
+{
+  Handle(SelectMgr_Filter) aDefFilter = myFilters->StoredFilters().First();
+  if (myFilters->StoredFilters().Size() < 2)
+  {
+    myFilters->Clear();
+    myFilters->Add (aDefFilter);
+  }
+
+  myFilters->Add (theFilter);
+}
+
+//=======================================================================
+//function : Filter
+//purpose  : 
+//=======================================================================
+Handle(SelectMgr_Filter) AIS_InteractiveContext::Filter (const Standard_Boolean isGlobalFilter) const
+{
+  if (isGlobalFilter)
+    return myFilters;
+
+  if (myFilters->StoredFilters().Size() < 2)
+    return NULL;
+
+  SelectMgr_ListIteratorOfListOfFilter anIterator (myFilters->StoredFilters());
+  anIterator.Next();
+  return anIterator.Value();
+}
+
 //=======================================================================
 //function : AddFilter
 //purpose  : 
 //=======================================================================
-void AIS_InteractiveContext::AddFilter(const Handle(SelectMgr_Filter)& aFilter)
+void AIS_InteractiveContext::AddFilter(const Handle(SelectMgr_Filter)& theFilter)
 {
-  myFilters->Add(aFilter);
+  Handle(SelectMgr_Filter) aFilter = Filter();
+  if (aFilter.IsNull())
+    SetFilter (new SelectMgr_OrFilter());
+
+  Handle (SelectMgr_CompositionFilter) aCompositeFilter = Handle(SelectMgr_CompositionFilter)::DownCast (aFilter);
+  if (aCompositeFilter.IsNull())
+    return;
+
+  if (aCompositeFilter->IsIn (theFilter))
+    return;
+
+  aCompositeFilter->Add (theFilter);
 }
 
 //=======================================================================
 //function : RemoveFilter
 //purpose  : 
 //=======================================================================
-void AIS_InteractiveContext::RemoveFilter(const Handle(SelectMgr_Filter)& aFilter)
+void AIS_InteractiveContext::RemoveFilter(const Handle(SelectMgr_Filter)& theFilter)
 {
-  myFilters->Remove(aFilter);
+  Handle(SelectMgr_Filter) aFilter = Filter();
+  if (aFilter.IsNull())
+    return;
+
+  Handle (SelectMgr_CompositionFilter) aCompositeFilter = Handle(SelectMgr_CompositionFilter)::DownCast (aFilter);
+  if (aCompositeFilter.IsNull())
+    return;
+
+  aCompositeFilter->Remove (theFilter);
 }
 
 //=======================================================================
@@ -289,16 +342,24 @@ void AIS_InteractiveContext::RemoveFilter(const Handle(SelectMgr_Filter)& aFilte
 
 void AIS_InteractiveContext::RemoveFilters()
 {
-  myFilters->Clear();
+  SetFilter (NULL);
 }
 
 //=======================================================================
 //function : Filters
 //purpose  : 
 //=======================================================================
-const SelectMgr_ListOfFilter& AIS_InteractiveContext::Filters() const 
+SelectMgr_ListOfFilter AIS_InteractiveContext::Filters() const 
 {
-  return myFilters->StoredFilters();
+  Handle(SelectMgr_Filter) aFilter = Filter();
+  if (aFilter.IsNull())
+    return SelectMgr_ListOfFilter();
+
+  Handle (SelectMgr_CompositionFilter) aCompositeFilter = Handle(SelectMgr_CompositionFilter)::DownCast (aFilter);
+  if (aCompositeFilter.IsNull())
+    return SelectMgr_ListOfFilter();
+
+  return aCompositeFilter->StoredFilters();
 }
 
 //=======================================================================
index b0a070f632b8081bc6e05ca858fae24a1efff7ab..14678c1c86e32acab885ccfc0e3ea97ac36cd50a 100644 (file)
@@ -23,7 +23,7 @@
 #include <Quantity_Color.hxx>
 #include <SelectMgr_EntityOwner.hxx>
 #include <SelectMgr_Filter.hxx>
-#include <SelectMgr_OrFilter.hxx>
+#include <SelectMgr_AndFilter.hxx>
 #include <SelectMgr_SelectionManager.hxx>
 #include <Standard_Transient.hxx>
 #include <TCollection_AsciiString.hxx>
index 8569e8a2b72d210ec50c37b393ad398b8e3acd39..b5eeb8c09fce2de3e0d39e0e2219f4769d741d38 100644 (file)
@@ -180,7 +180,7 @@ AIS_SelectStatus AIS_Selection::selectOwner (const Handle(SelectMgr_EntityOwner)
                                              const int theSelScheme,
                                              const Handle(SelectMgr_Filter)& theFilter)
 {
-  if (theOwner.IsNull() || !theOwner->HasSelectable() || !theFilter->IsOk (theOwner))
+  if (theOwner.IsNull() || !theOwner->HasSelectable() || !theFilter->IsOk (theOwner, SelectMgr_FilterReaction_Select))
     return AIS_SS_NotDone;
 
   if (theSelScheme & AIS_SelectionScheme_Add)
index 1978fa8d5910b81cd9ffb3666227bfdf90db1396..3c05be68b88f2351cb1e1fe48be4bbc263bfdd05 100755 (executable)
@@ -5,10 +5,13 @@ SelectMgr_BaseFrustum.hxx
 SelectMgr_CompositionFilter.cxx
 SelectMgr_CompositionFilter.hxx
 SelectMgr_CompositionFilter.lxx
+SelectMgr_DisabledObjectsFilter.cxx
+SelectMgr_DisabledObjectsFilter.hxx
 SelectMgr_EntityOwner.cxx
 SelectMgr_EntityOwner.hxx
 SelectMgr_Filter.cxx
 SelectMgr_Filter.hxx
+SelectMgr_FilterReaction.hxx
 SelectMgr_Frustum.hxx
 SelectMgr_Frustum.lxx
 SelectMgr_FrustumBuilder.cxx
index 15425280b5a6b55d35e9a4a59ee0ce1da6abe660..03f9530e6b7821c2b4abb7dd57eb75ad7987c4e8 100644 (file)
@@ -24,11 +24,12 @@ IMPLEMENT_STANDARD_RTTIEXT(SelectMgr_AndFilter,SelectMgr_CompositionFilter)
 SelectMgr_AndFilter::SelectMgr_AndFilter()
 {
 }
-Standard_Boolean SelectMgr_AndFilter::IsOk(const Handle(SelectMgr_EntityOwner)& anobj) const 
+Standard_Boolean SelectMgr_AndFilter::IsOk(const Handle(SelectMgr_EntityOwner)& theObj,
+                                           const SelectMgr_FilterReaction& theReaction) const
 {
   SelectMgr_ListIteratorOfListOfFilter it(myFilters);
-  for ( ; it.More();it.Next()) 
-    if(!it.Value()->IsOk(anobj)) 
+  for ( ; it.More();it.Next())
+    if(!it.Value()->IsOk(theObj, theReaction))
       return Standard_False;
   return Standard_True;
 }
index 9b76728b4bc67ede1bd4277d1a2c47c2ed3894a1..8b106746c37bfeb4befd74c6ae53d7f3e21cbc4c 100644 (file)
@@ -40,9 +40,11 @@ public:
   //! more types of entity.
   Standard_EXPORT SelectMgr_AndFilter();
   
-  Standard_EXPORT Standard_Boolean IsOk (const Handle(SelectMgr_EntityOwner)& anobj) const Standard_OVERRIDE;
-
+  Standard_EXPORT Standard_Boolean IsOk (const Handle(SelectMgr_EntityOwner)& theObj) const Standard_OVERRIDE
+  { (void)theObj; return Standard_False; }
 
+  Standard_EXPORT virtual Standard_Boolean IsOk (const Handle(SelectMgr_EntityOwner)& theObj,
+                                                 const SelectMgr_FilterReaction& theReaction) const Standard_OVERRIDE;
 
 
   DEFINE_STANDARD_RTTIEXT(SelectMgr_AndFilter,SelectMgr_CompositionFilter)
diff --git a/src/SelectMgr/SelectMgr_DisabledObjectsFilter.cxx b/src/SelectMgr/SelectMgr_DisabledObjectsFilter.cxx
new file mode 100644 (file)
index 0000000..71fd54f
--- /dev/null
@@ -0,0 +1,53 @@
+// 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.
+
+
+#include <SelectMgr_EntityOwner.hxx>
+#include <SelectMgr_Filter.hxx>
+#include <SelectMgr_ListIteratorOfListOfFilter.hxx>
+#include <SelectMgr_DisabledObjectsFilter.hxx>
+#include <SelectMgr_SelectableObject.hxx>
+#include <Standard_Type.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(SelectMgr_DisabledObjectsFilter, SelectMgr_Filter)
+
+//=============================================================================
+//function : SelectMgr_DisabledObjectsFilter
+//purpose  :
+//=============================================================================
+SelectMgr_DisabledObjectsFilter::SelectMgr_DisabledObjectsFilter()
+{
+}
+
+//=============================================================================
+//function : SetDisabledObjects
+//purpose  :
+//=============================================================================
+void SelectMgr_DisabledObjectsFilter::SetDisabledObjects (const Handle(Graphic3d_NMapOfTransient)& theObjects)
+{
+  myDisabledObjects = theObjects;
+}
+
+//=============================================================================
+//function : IsOk
+//purpose  :
+//=============================================================================
+Standard_Boolean SelectMgr_DisabledObjectsFilter::IsOk (const Handle(SelectMgr_EntityOwner)& theObj) const
+{
+  const SelectMgr_SelectableObject* aSelectable = theObj->Selectable().operator->();
+  if (!myDisabledObjects.IsNull()
+    && myDisabledObjects->Contains (aSelectable))
+  {
+    return Standard_False;
+  }
+
+  return Standard_True;
+}
diff --git a/src/SelectMgr/SelectMgr_DisabledObjectsFilter.hxx b/src/SelectMgr/SelectMgr_DisabledObjectsFilter.hxx
new file mode 100644 (file)
index 0000000..cec6604
--- /dev/null
@@ -0,0 +1,59 @@
+//
+// 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.
+
+#ifndef _SelectMgr_DisabledObjectsFilter_HeaderFile
+#define _SelectMgr_DisabledObjectsFilter_HeaderFile
+
+#include <Standard.hxx>
+#include <Standard_Type.hxx>
+
+#include <Graphic3d_NMapOfTransient.hxx>
+#include <Standard_Boolean.hxx>
+
+class SelectMgr_EntityOwner;
+
+
+class SelectMgr_DisabledObjectsFilter;
+DEFINE_STANDARD_HANDLE(SelectMgr_DisabledObjectsFilter, SelectMgr_Filter)
+
+//! A framework to define an or selection filter.
+//! This selects one or another type of sensitive entity.
+class SelectMgr_DisabledObjectsFilter : public SelectMgr_Filter
+{
+
+public:
+
+  //! Constructs an empty or selection filter.
+  Standard_EXPORT SelectMgr_DisabledObjectsFilter();
+  
+  Standard_EXPORT Standard_Boolean IsOk (const Handle(SelectMgr_EntityOwner)& anobj) const Standard_OVERRIDE;
+
+  //! Disable selection of specified objects.
+  Standard_EXPORT void SetDisabledObjects (const Handle(Graphic3d_NMapOfTransient)& theObjects);
+
+
+  DEFINE_STANDARD_RTTIEXT(SelectMgr_DisabledObjectsFilter, SelectMgr_Filter)
+
+private:
+
+  Handle(Graphic3d_NMapOfTransient) myDisabledObjects;
+
+
+};
+
+
+
+
+
+
+
+#endif // _SelectMgr_DisabledObjectsFilter_HeaderFile
index af9cf7e8b394776df8230d9af5e59c446f10df97..8fdc714bb3a0ac132a71a8f7fe0a0a81abb2f2e0 100644 (file)
@@ -20,6 +20,7 @@
 #include <Standard.hxx>
 #include <Standard_Type.hxx>
 
+#include <SelectMgr_FilterReaction.hxx>
 #include <Standard_Transient.hxx>
 #include <Standard_Boolean.hxx>
 #include <TopAbs_ShapeEnum.hxx>
@@ -60,6 +61,24 @@ public:
   //! virtual function ActsOn.
   Standard_EXPORT virtual Standard_Boolean IsOk (const Handle(SelectMgr_EntityOwner)& anObj) const = 0;
   
+  //! Indicates that the selected Interactive Object
+  //! passes the filter. The owner, anObj, can be either
+  //! direct or user. A direct owner is the corresponding
+  //! construction element, whereas a user is the
+  //! compound shape of which the entity forms a part.
+  //! When an object is detected by the mouse - in AIS,
+  //! this is done through a context selector - its owner
+  //! is passed to the filter as an argument.
+  //! If the object returns Standard_True, it is kept; if
+  //! not, it is rejected.
+  //! If you are creating a filter class inheriting this
+  //! framework, and the daughter class is to be used in
+  //! an AIS local context, you will need to implement the
+  //! virtual function ActsOn.
+  Standard_EXPORT virtual Standard_Boolean IsOk (const Handle(SelectMgr_EntityOwner)& theObj,
+                                                 const SelectMgr_FilterReaction& theReaction) const
+  { (void)theReaction; return IsOk (theObj); }
+
   //! Returns true in an AIS local context, if this filter
   //! operates on a type of subshape defined in a filter
   //! class inheriting this framework.
diff --git a/src/SelectMgr/SelectMgr_FilterReaction.hxx b/src/SelectMgr/SelectMgr_FilterReaction.hxx
new file mode 100644 (file)
index 0000000..939adb1
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright (c) 2019 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.
+
+#ifndef _SelectMgr_FilterReaction_HeaderFile
+#define _SelectMgr_FilterReaction_HeaderFile
+
+//! Enumeration defines picking reaction - which action causes the filter check
+enum SelectMgr_FilterReaction
+{
+  SelectMgr_FilterReaction_Empty = 0x0000, //!< do nothing
+  SelectMgr_FilterReaction_Highlight = 0x0001, //!< the reaction to highlght presentation (MoveTo)
+  SelectMgr_FilterReaction_Select = 0x0002, //!< the reaction to highlght presentation (Select)
+  SelectMgr_FilterReaction_SelectAndHighlight = SelectMgr_FilterReaction_Highlight | SelectMgr_FilterReaction_Select
+};
+
+#endif // _SelectMgr_FilterReaction_HeaderFile
index fe84f35b7f27209ec2562d317655bf61f119dcc5..cedfb54a993c4cdc4894059eefc564fb62a196dc 100644 (file)
@@ -15,9 +15,7 @@
 
 #include <SelectMgr_EntityOwner.hxx>
 #include <SelectMgr_Filter.hxx>
-#include <SelectMgr_ListIteratorOfListOfFilter.hxx>
 #include <SelectMgr_OrFilter.hxx>
-#include <SelectMgr_SelectableObject.hxx>
 #include <Standard_Type.hxx>
 
 IMPLEMENT_STANDARD_RTTIEXT(SelectMgr_OrFilter,SelectMgr_CompositionFilter)
@@ -30,28 +28,13 @@ SelectMgr_OrFilter::SelectMgr_OrFilter()
 {
 }
 
-//=============================================================================
-//function : SetDisabledObjects
-//purpose  :
-//=============================================================================
-void SelectMgr_OrFilter::SetDisabledObjects (const Handle(Graphic3d_NMapOfTransient)& theObjects)
-{
-  myDisabledObjects = theObjects;
-}
-
 //=============================================================================
 //function : IsOk
 //purpose  :
 //=============================================================================
 Standard_Boolean SelectMgr_OrFilter::IsOk (const Handle(SelectMgr_EntityOwner)& theObj) const
 {
-  const SelectMgr_SelectableObject* aSelectable = theObj->Selectable().operator->();
-  if (!myDisabledObjects.IsNull()
-    && myDisabledObjects->Contains (aSelectable))
-  {
-    return Standard_False;
-  }
-  else if (myFilters.IsEmpty())
+  if (myFilters.IsEmpty())
   {
     return Standard_True;
   }
index f4625740d37cf1cf5912aea2c3932977e40d8d64..192b7e0c9cf1f5219310e46bc705eb17bbb98f71 100644 (file)
@@ -20,7 +20,6 @@
 #include <Standard.hxx>
 #include <Standard_Type.hxx>
 
-#include <Graphic3d_NMapOfTransient.hxx>
 #include <SelectMgr_CompositionFilter.hxx>
 #include <Standard_Boolean.hxx>
 class SelectMgr_EntityOwner;
@@ -41,26 +40,11 @@ public:
   Standard_EXPORT SelectMgr_OrFilter();
   
   Standard_EXPORT Standard_Boolean IsOk (const Handle(SelectMgr_EntityOwner)& anobj) const Standard_OVERRIDE;
-  
-  //! Disable selection of specified objects.
-  Standard_EXPORT void SetDisabledObjects (const Handle(Graphic3d_NMapOfTransient)& theObjects);
-
-
-
 
   DEFINE_STANDARD_RTTIEXT(SelectMgr_OrFilter,SelectMgr_CompositionFilter)
 
 protected:
 
-
-
-
-private:
-
-
-  Handle(Graphic3d_NMapOfTransient) myDisabledObjects;
-
-
 };