mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-09-13 14:27:08 +03:00
0022554: Application hangs on selection
This commit is contained in:
105
src/Select3D/Select3D_PointData.hxx
Normal file
105
src/Select3D/Select3D_PointData.hxx
Normal file
@@ -0,0 +1,105 @@
|
||||
#ifndef _Select3D_PointData_HeaderFile
|
||||
#define _Select3D_PointData_HeaderFile
|
||||
|
||||
#include <Select3D_Pnt.hxx>
|
||||
#include <Select3D_Pnt2d.hxx>
|
||||
|
||||
// A framework for safe management of Select3D_SensitivePoly polygons of 3D and 2D points
|
||||
class Select3D_PointData {
|
||||
|
||||
public:
|
||||
|
||||
// Constructs internal arrays of 2D and 3D points defined
|
||||
// by number of points theNbPoints
|
||||
Select3D_PointData (const Standard_Integer theNbPoints)
|
||||
{
|
||||
if (theNbPoints <= 0)
|
||||
Standard_ConstructionError::Raise("Select3D_PointData");
|
||||
|
||||
mynbpoints = theNbPoints;
|
||||
mypolyg3d = new Select3D_Pnt[mynbpoints];
|
||||
mypolyg2d = new Select3D_Pnt2d[mynbpoints];
|
||||
}
|
||||
|
||||
// Destructor
|
||||
~Select3D_PointData ()
|
||||
{
|
||||
delete [] mypolyg3d;
|
||||
delete [] mypolyg2d;
|
||||
}
|
||||
|
||||
// Sets Select3D_Pnt to internal array
|
||||
// of 3D points if theIndex is valid
|
||||
void SetPnt (const Standard_Integer theIndex,
|
||||
const Select3D_Pnt& theValue)
|
||||
{
|
||||
if (theIndex < 0 || theIndex >= mynbpoints)
|
||||
Standard_OutOfRange::Raise("Select3D_PointData::SetPnt");
|
||||
mypolyg3d[theIndex] = theValue;
|
||||
}
|
||||
|
||||
// Sets gp_Pnt to internal array
|
||||
// of 3D points if theIndex is valid
|
||||
void SetPnt (const Standard_Integer theIndex,
|
||||
const gp_Pnt& theValue)
|
||||
{
|
||||
if (theIndex < 0 || theIndex >= mynbpoints)
|
||||
Standard_OutOfRange::Raise("Select3D_PointData::SetPnt");
|
||||
mypolyg3d[theIndex] = theValue;
|
||||
}
|
||||
|
||||
// Sets Select3D_Pnt2d to internal array
|
||||
// of 2D points if theIndex is valid
|
||||
void SetPnt2d (const Standard_Integer theIndex,
|
||||
const Select3D_Pnt2d& theValue)
|
||||
{
|
||||
if (theIndex < 0 || theIndex >= mynbpoints)
|
||||
Standard_OutOfRange::Raise("Select3D_PointData::SetPnt2d");
|
||||
mypolyg2d[theIndex] = theValue;
|
||||
}
|
||||
|
||||
// Sets gp_Pnt2d to internal array
|
||||
// of 2D points if theIndex is valid
|
||||
void SetPnt2d (const Standard_Integer theIndex,
|
||||
const gp_Pnt2d& theValue)
|
||||
{
|
||||
if (theIndex < 0 || theIndex >= mynbpoints)
|
||||
Standard_OutOfRange::Raise("Select3D_PointData::SetPnt2d");
|
||||
mypolyg2d[theIndex] = theValue;
|
||||
}
|
||||
|
||||
// Returns 3D point from internal array
|
||||
// if theIndex is valid
|
||||
Select3D_Pnt Pnt (const Standard_Integer theIndex) const
|
||||
{
|
||||
if (theIndex < 0 || theIndex >= mynbpoints)
|
||||
Standard_OutOfRange::Raise("Select3D_PointData::Pnt");
|
||||
return mypolyg3d[theIndex];
|
||||
}
|
||||
|
||||
// Returns 2D point from internal array
|
||||
// if theIndex is valid
|
||||
Select3D_Pnt2d Pnt2d (const Standard_Integer theIndex) const
|
||||
{
|
||||
if (theIndex < 0 || theIndex >= mynbpoints)
|
||||
Standard_OutOfRange::Raise("Select3D_PointData::Pnt2d");
|
||||
return mypolyg2d[theIndex];
|
||||
}
|
||||
|
||||
// Returns size of internal arrays
|
||||
const Standard_Integer Size () const
|
||||
{
|
||||
return mynbpoints;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
// Default constructor
|
||||
Select3D_PointData () {};
|
||||
|
||||
Select3D_Pnt* mypolyg3d;
|
||||
Select3D_Pnt2d* mypolyg2d;
|
||||
Standard_Integer mynbpoints;
|
||||
};
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user