]> OCCT Git - occt.git/commitdiff
0032632: Visualization, AIS_ViewCube - the class AIS_ViewCubeSensitive is hidden...
authorvro <vro@opencascade.com>
Tue, 19 Oct 2021 15:57:23 +0000 (18:57 +0300)
committersmoskvin <smoskvin@opencascade.com>
Fri, 22 Oct 2021 16:58:16 +0000 (19:58 +0300)
src/AIS/AIS_ViewCube.cxx
src/AIS/AIS_ViewCube.hxx

index 756f6226a3838c95713317443af7bf735304ae1a..1e405cb44f304fbb23862bd94933a0bad7430886 100644 (file)
 #include <Prs3d_Text.hxx>
 #include <Prs3d_ToolDisk.hxx>
 #include <Prs3d_ToolSphere.hxx>
-#include <Select3D_SensitivePrimitiveArray.hxx>
 #include <SelectMgr_SequenceOfOwner.hxx>
 #include <V3d.hxx>
 #include <V3d_View.hxx>
 
 IMPLEMENT_STANDARD_RTTIEXT(AIS_ViewCube, AIS_InteractiveObject)
 IMPLEMENT_STANDARD_RTTIEXT(AIS_ViewCubeOwner, SelectMgr_EntityOwner)
+IMPLEMENT_STANDARD_RTTIEXT(AIS_ViewCubeSensitive, Select3D_SensitivePrimitiveArray)
 
 namespace
 {
@@ -56,46 +56,48 @@ namespace
   }
 }
 
-//! Simple sensitive element for picking by point only.
-class AIS_ViewCubeSensitive : public Select3D_SensitivePrimitiveArray
+//=======================================================================
+//function : AIS_ViewCubeSensitive
+//purpose  :
+//=======================================================================
+AIS_ViewCubeSensitive::AIS_ViewCubeSensitive (const Handle(SelectMgr_EntityOwner)& theOwner,
+                                              const Handle(Graphic3d_ArrayOfTriangles)& theTris)
+: Select3D_SensitivePrimitiveArray (theOwner)
 {
-  DEFINE_STANDARD_RTTI_INLINE(AIS_ViewCubeSensitive, Select3D_SensitivePrimitiveArray)
-public:
-  //! Constructor.
-  AIS_ViewCubeSensitive (const Handle(SelectMgr_EntityOwner)& theOwner,
-                         const Handle(Graphic3d_ArrayOfTriangles)& theTris)
-  : Select3D_SensitivePrimitiveArray (theOwner)
-  {
-    InitTriangulation (theTris->Attributes(), theTris->Indices(), TopLoc_Location());
-  }
+  InitTriangulation (theTris->Attributes(), theTris->Indices(), TopLoc_Location());
+}
+
+//=======================================================================
+//function : Matches
+//purpose  :
+//=======================================================================
+Standard_Boolean AIS_ViewCubeSensitive::Matches (SelectBasics_SelectingVolumeManager& theMgr,
+                                                 SelectBasics_PickResult& thePickResult)
+{
+  return isValidRay (theMgr) && Select3D_SensitivePrimitiveArray::Matches (theMgr, thePickResult);
+}
 
-  //! Checks whether element overlaps current selecting volume.
-  virtual Standard_Boolean Matches (SelectBasics_SelectingVolumeManager& theMgr,
-                                    SelectBasics_PickResult& thePickResult) Standard_OVERRIDE
+//=======================================================================
+//function : isValidRay
+//purpose  :
+//=======================================================================
+bool AIS_ViewCubeSensitive::isValidRay (const SelectBasics_SelectingVolumeManager& theMgr) const
+{
+  if (theMgr.GetActiveSelectionType() != SelectMgr_SelectionType_Point)
   {
-    return isValidRay (theMgr)
-        && Select3D_SensitivePrimitiveArray::Matches (theMgr, thePickResult);
+    // disallow rectangular selection
+    return false;
   }
 
-  //! Checks if picking ray can be used for detection.
-  bool isValidRay (const SelectBasics_SelectingVolumeManager& theMgr) const
+  if (AIS_ViewCubeOwner* anOwner = dynamic_cast<AIS_ViewCubeOwner* >(myOwnerId.get()))
   {
-    if (theMgr.GetActiveSelectionType() != SelectMgr_SelectionType_Point)
-    {
-      // disallow rectangular selection
-      return false;
-    }
-
-    if (AIS_ViewCubeOwner* anOwner = dynamic_cast<AIS_ViewCubeOwner* >(myOwnerId.get()))
-    {
-      const Standard_Real anAngleToler = 10.0 * M_PI / 180.0;
-      const gp_Dir aRay = theMgr.GetViewRayDirection();
-      const gp_Dir aDir = V3d::GetProjAxis (anOwner->MainOrientation());
-      return !aRay.IsNormal (aDir, anAngleToler);
-    }
-    return true;
+    const Standard_Real anAngleToler = 10.0 * M_PI / 180.0;
+    const gp_Dir aRay = theMgr.GetViewRayDirection();
+    const gp_Dir aDir = V3d::GetProjAxis (anOwner->MainOrientation());
+    return !aRay.IsNormal (aDir, anAngleToler);
   }
-};
+  return true;
+}
 
 //=======================================================================
 //function : IsBoxSide
index 4da9de27f95326bd2d685a42ca44b808b22cc4e9..32428cf04f6aac8612020e3f8f204a1ff96ab9ab 100644 (file)
@@ -24,6 +24,7 @@
 #include <Prs3d_TextAspect.hxx>
 #include <SelectMgr_EntityOwner.hxx>
 #include <V3d_TypeOfOrientation.hxx>
+#include <Select3D_SensitivePrimitiveArray.hxx>
 
 class AIS_AnimationCamera;
 class AIS_ViewCubeOwner;
@@ -724,4 +725,25 @@ protected:
 
 };
 
+//! Simple sensitive element for picking by point only.
+class AIS_ViewCubeSensitive : public Select3D_SensitivePrimitiveArray
+{
+  DEFINE_STANDARD_RTTIEXT(AIS_ViewCubeSensitive, Select3D_SensitivePrimitiveArray)
+public:
+
+  //! Constructor.
+  Standard_EXPORT AIS_ViewCubeSensitive (const Handle(SelectMgr_EntityOwner)& theOwner,
+                                         const Handle(Graphic3d_ArrayOfTriangles)& theTris);
+
+  //! Checks whether element overlaps current selecting volume.
+  Standard_EXPORT virtual Standard_Boolean Matches (SelectBasics_SelectingVolumeManager& theMgr,
+                                                    SelectBasics_PickResult& thePickResult) Standard_OVERRIDE;
+
+protected:
+
+  //! Checks if picking ray can be used for detection.
+  Standard_EXPORT bool isValidRay (const SelectBasics_SelectingVolumeManager& theMgr) const;
+
+};
+
 #endif // _AIS_ViewCube_HeaderFile