0024023: Revamp the OCCT Handle -- general
[occt.git] / src / SelectMgr / SelectMgr_BaseFrustum.hxx
index 83ce1e6..e2e466e 100644 (file)
@@ -25,7 +25,6 @@
 #include <Graphic3d_ClipPlane.hxx>
 #include <Graphic3d_SequenceOfHClipPlane.hxx>
 
-#include <NCollection_Handle.hxx>
 #include <TColgp_HArray1OfPnt.hxx>
 #include <TColgp_Array1OfPnt2d.hxx>
 
@@ -39,7 +38,7 @@
 //! selection. It contains signatures of functions for detection of
 //! overlap by sensitive entity and initializes some data for building
 //! the selecting frustum
-class SelectMgr_BaseFrustum
+class SelectMgr_BaseFrustum : public Standard_Transient
 {
 public:
 
@@ -47,7 +46,7 @@ public:
   //! orthographic camera and empty frustum builder
   SelectMgr_BaseFrustum();
 
-  virtual ~SelectMgr_BaseFrustum() {};
+  virtual ~SelectMgr_BaseFrustum() {}
 
   //! Passes camera projection and orientation matrices to builder
   void SetCamera (const Handle(Graphic3d_Camera)& theCamera);
@@ -68,23 +67,23 @@ public:
                     const Standard_Real theHeight);
 
   //! Nullifies the builder created in the constructor and copies the pointer given
-  void SetBuilder (const NCollection_Handle<SelectMgr_FrustumBuilder>& theBuilder);
+  void SetBuilder (const Handle(SelectMgr_FrustumBuilder)& theBuilder);
 
 
   //! Builds volume according to the point and given pixel tolerance
-  virtual void Build (const gp_Pnt2d& /*thePoint*/) {};
+  virtual void Build (const gp_Pnt2d& /*thePoint*/) {}
 
   //! Builds volume according to the selected rectangle
   virtual void Build (const gp_Pnt2d& /*theMinPt*/,
-                      const gp_Pnt2d& /*theMaxPt*/) {};
+                      const gp_Pnt2d& /*theMaxPt*/) {}
 
   //! Builds volume according to the triangle given
   virtual void Build (const gp_Pnt2d& /*theP1*/,
                       const gp_Pnt2d& /*theP2*/,
-                      const gp_Pnt2d& /*theP3*/) {};
+                      const gp_Pnt2d& /*theP3*/) {}
 
   //! Builds selecting volumes set according to polyline points
-  virtual void Build (const TColgp_Array1OfPnt2d& /*thePoints*/) {};
+  virtual void Build (const TColgp_Array1OfPnt2d& /*thePoints*/) {}
 
   virtual NCollection_Handle<SelectMgr_BaseFrustum> Transform (const gp_Trsf& /*theTrsf*/) { return NULL; }
 
@@ -98,8 +97,9 @@ public:
 
   //! Returns true if selecting volume is overlapped by axis-aligned bounding box
   //! with minimum corner at point theMinPt and maximum at point theMaxPt
-  virtual Standard_Boolean Overlaps (const SelectMgr_Vec3& theMinPt,
-                                     const SelectMgr_Vec3& theMaxPt);
+  virtual Standard_Boolean Overlaps (const SelectMgr_Vec3& theBoxMin,
+                                     const SelectMgr_Vec3& theBoxMax,
+                                     Standard_Boolean*     theInside = NULL);
 
   //! Intersection test between defined volume and given point
   virtual Standard_Boolean Overlaps (const gp_Pnt& thePt,
@@ -137,11 +137,13 @@ public:
   virtual Standard_Boolean IsClipped (const Graphic3d_SequenceOfHClipPlane& thePlanes,
                                       const Standard_Real theDepth);
 
+  DEFINE_STANDARD_RTTI(SelectMgr_BaseFrustum, Standard_Transient)
+
 protected:
   Standard_Real    myPixelTolerance;      //!< Pixel tolerance
   Standard_Boolean myIsOrthographic;      //!< Defines if current camera is orthographic
 
-  NCollection_Handle<SelectMgr_FrustumBuilder> myBuilder;      //!< A tool implementing methods for volume build
+  Handle(SelectMgr_FrustumBuilder) myBuilder; //!< A tool implementing methods for volume build
 };
 
 #endif // _SelectMgr_BaseFrustum_HeaderFile