#include <opennurbs_subd.h>
|
| ON_SubD_FixedSizeHeap ()=default |
|
| ~ON_SubD_FixedSizeHeap () |
|
const ON_SubDEdgePtr | AllocateEdge (bool bUseFindOrAllocatEdge, ON_SubDVertex *v0, double v0_sector_coefficient, ON_SubDVertex *v1, double v1_sector_coefficient) |
|
const ON_SubDEdgePtr | AllocateEdge (ON_SubDVertex *v0, double v0_sector_coefficient, ON_SubDVertex *v1, double v1_sector_coefficient) |
|
ON_SubDVertex * | AllocateEdgeSubdivisionVertex (bool bUseFindOrAllocate, const ON_SubDEdge *edge0) |
|
ON__UINT_PTR * | AllocatePtrArray (unsigned int capacity, bool bZeroMemory) |
|
ON_SubDFace * | AllocateQuad (unsigned int zero_face_id, unsigned int parent_face_id, const ON_SubDEdgePtr eptrs[4]) |
|
ON_SubDFace * | AllocateQuad (unsigned int zero_face_id, unsigned int parent_face_id, ON_SubDEdgePtr e0, ON_SubDEdgePtr e1, ON_SubDEdgePtr e2, ON_SubDEdgePtr e3) |
|
ON_SubDVertex * | AllocateSectorFaceVertex (const ON_SubDFace *sector_face0) |
|
ON_SubDVertex * | AllocateVertex (const double vertexP[3], unsigned int edge_capacity) |
|
ON_SubDVertex * | AllocateVertex (const ON_SubDEdge *edge0) |
|
ON_SubDVertex * | AllocateVertex (const ON_SubDVertex *vertex0, unsigned int edge_capacity) |
|
void | Destroy () |
|
const ON_SubDEdgePtr | FindOrAllocateEdge (ON_SubDVertex *v0, double v0_sector_coefficient, ON_SubDVertex *v1, double v1_sector_coefficient) |
|
ON_SubDVertex * | FindOrAllocateVertex (const ON_SubDEdge *edge0) |
|
ON_SubDVertex * | FindOrAllocateVertex (const ON_SubDFace *face0) |
|
bool | InUse () const |
|
bool | ReserveSubDWorkspace (const ON_SubDFace *center_face0) |
|
bool | ReserveSubDWorkspace (unsigned int sector_edge_count) |
|
void | Reset () |
|
bool | ReturnPtrArray (void *p, unsigned int capacity) |
|
|
const unsigned int | m_sn = ++m__sn_factory |
| The serial number is used for debugging purposes. More...
|
|
ON_SubD_FixedSizeHeap Description: A ON_SubD_FixedSizeHeap is used to manage heap used for a local subdivision.
◆ ON_SubD_FixedSizeHeap()
ON_SubD_FixedSizeHeap::ON_SubD_FixedSizeHeap |
( |
| ) |
|
|
default |
◆ ~ON_SubD_FixedSizeHeap()
ON_SubD_FixedSizeHeap::~ON_SubD_FixedSizeHeap |
( |
| ) |
|
◆ AllocateEdge() [1/2]
◆ AllocateEdge() [2/2]
◆ AllocateEdgeSubdivisionVertex()
ON_SubDVertex* ON_SubD_FixedSizeHeap::AllocateEdgeSubdivisionVertex |
( |
bool |
bUseFindOrAllocate, |
|
|
const ON_SubDEdge * |
edge0 |
|
) |
| |
Description: Allocate a vertex located at the edge0 subdivision point. The vertex will have an edge and face capacity of 4. Parameters: edge0 - [in]
◆ AllocatePtrArray()
ON__UINT_PTR* ON_SubD_FixedSizeHeap::AllocatePtrArray |
( |
unsigned int |
capacity, |
|
|
bool |
bZeroMemory |
|
) |
| |
Parameters: capacity - [in] desired array size bZeroMemory - [in] If true, all array element values are zero. If false, array element values are undefined. Returns: An array of capacity ON__UINT_PTR pointers.
◆ AllocateQuad() [1/2]
ON_SubDFace* ON_SubD_FixedSizeHeap::AllocateQuad |
( |
unsigned int |
zero_face_id, |
|
|
unsigned int |
parent_face_id, |
|
|
const ON_SubDEdgePtr |
eptrs[4] |
|
) |
| |
◆ AllocateQuad() [2/2]
◆ AllocateSectorFaceVertex()
Description: Allocate a vertex located at the sector_face0 subdivision point. The vertex will have an edge and face capacity of 3. Parameters: sector_face0 - [in] A face in a vertex sector.
◆ AllocateVertex() [1/3]
ON_SubDVertex* ON_SubD_FixedSizeHeap::AllocateVertex |
( |
const double |
vertexP[3], |
|
|
unsigned int |
edge_capacity |
|
) |
| |
◆ AllocateVertex() [2/3]
Description: Allocate a vertex located at the edge0 subdivision point. The vertex will have an edge and face capacity of 4. Parameters: edge0 - [in]
◆ AllocateVertex() [3/3]
Description: Allocate a vertex located at the vertex0 subdivision point.
Parameters: vertex0 - [in] edge_capacity - [in] If the returned vertex will be interior in a local subdivision, then pass vertex0->EdgeCount(). If the returned vertex will be an outer ring vertex in a local subdivision, then pass 3.
◆ Destroy()
void ON_SubD_FixedSizeHeap::Destroy |
( |
| ) |
|
Description: Deallocate all reserved heap.
◆ FindOrAllocateEdge()
◆ FindOrAllocateVertex() [1/2]
Description: Find or allocate a vertex located at the edge0 subdivision point. The vertex will have an edge and face capacity of 4. Parameters: edge0 - [in] Remarks: In order for FindOrAllocateVertex() to find a vertex, that vertex must have been created by an earlier call to FindOrAllocateVertex(). Typically, AllocateVertex(edge0) is used for center face boundary edges and FindOrAllocateVertex(edge0) is used for ring edges.
◆ FindOrAllocateVertex() [2/2]
Description: Find or allocate a vertex and the face subdivision point. The vertex will have an edge and face capacity of face0->EdgeCount(). Parameters: face0 - [in] outer face in a local subdivision situation Remarks: In order for FindOrAllocateVertex() to find a vertex, that vertex must have been created by an earlier call to FindOrAllocateVertex(). Typically, AllocateVertex(edge0) is used for the center face and and FindOrAllocateVertex(edge0) is used for ring faces.
◆ InUse()
bool ON_SubD_FixedSizeHeap::InUse |
( |
| ) |
const |
◆ ReserveSubDWorkspace() [1/2]
bool ON_SubD_FixedSizeHeap::ReserveSubDWorkspace |
( |
const ON_SubDFace * |
center_face0 | ) |
|
Description: Reserve enough room for a local subdivide the neighborhood of center_face. Parameters: center_face0 - [in]
◆ ReserveSubDWorkspace() [2/2]
bool ON_SubD_FixedSizeHeap::ReserveSubDWorkspace |
( |
unsigned int |
sector_edge_count | ) |
|
Description: Reserve enough room to for a subdivision of a vertex sector. Parameters: sector_edge_count - [in] Number of edges in the sector.
◆ Reset()
void ON_SubD_FixedSizeHeap::Reset |
( |
| ) |
|
◆ ReturnPtrArray()
bool ON_SubD_FixedSizeHeap::ReturnPtrArray |
( |
void * |
p, |
|
|
unsigned int |
capacity |
|
) |
| |
Description: Return the most recent array obtained from AllocatePtrArray(). so it can be reused.
Returns: True: Success. False: Failure. The array was not the most recent array obtained from AllocatePtrArray().
◆ m_sn
const unsigned int ON_SubD_FixedSizeHeap::m_sn = ++m__sn_factory |
The serial number is used for debugging purposes.