1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-29 14:00:49 +03:00

0026146: Visualization, Select3D_ISensitivePointSet - eliminate crash when clearing selections [only with TBB]

Remove classes Select3D_ISensitivePointSet and Select3D_BoundarySensitivePointSet; use Select3D_SensitivePoly directly for boundary selection.
Make last argument in Select3D_SensitiveFace non-default to ensure that value is always explicitly specified by the caller.
Inherit SelectMgr_FrustumBuilder from Standard_Transient to use normal Handle instead of NCollection_Handle.

Add test case bugs/vis/bug26146.
This commit is contained in:
abv
2015-05-07 08:53:38 +03:00
parent 2157d6ac63
commit bf3977c9f9
18 changed files with 64 additions and 287 deletions

View 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>
@@ -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; }
@@ -142,7 +141,7 @@ 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