32 #ifndef _CPL_QUAD_TREE_H_INCLUDED
33 #define _CPL_QUAD_TREE_H_INCLUDED
53 double minx, miny, maxx, maxy;
56 typedef struct _CPLQuadTree CPLQuadTree;
58 typedef void (*CPLQuadTreeGetBoundsFunc)(
const void* hFeature,
CPLRectObj* pBounds);
59 typedef int (*CPLQuadTreeForeachFunc)(
void* pElt,
void* pUserData);
60 typedef void (*CPLQuadTreeDumpFeatureFunc)(
const void* hFeature,
int nIndentLevel,
void* pUserData);
64 CPLQuadTree CPL_DLL *CPLQuadTreeCreate(
const CPLRectObj* pGlobalBounds,
65 CPLQuadTreeGetBoundsFunc pfnGetBounds);
66 void CPL_DLL CPLQuadTreeDestroy(CPLQuadTree *hQuadtree);
68 void CPL_DLL CPLQuadTreeSetBucketCapacity(CPLQuadTree *hQuadtree,
70 int CPL_DLL CPLQuadTreeGetAdvisedMaxDepth(
int nExpectedFeatures);
71 void CPL_DLL CPLQuadTreeSetMaxDepth(CPLQuadTree *hQuadtree,
74 void CPL_DLL CPLQuadTreeInsert(CPLQuadTree *hQuadtree,
77 void CPL_DLL **CPLQuadTreeSearch(
const CPLQuadTree *hQuadtree,
81 void CPL_DLL CPLQuadTreeForeach(
const CPLQuadTree *hQuadtree,
82 CPLQuadTreeForeachFunc pfnForeach,
85 void CPL_DLL CPLQuadTreeDump(
const CPLQuadTree *hQuadtree,
86 CPLQuadTreeDumpFeatureFunc pfnDumpFeatureFunc,
88 void CPL_DLL CPLQuadTreeGetStats(
const CPLQuadTree *hQuadtree,
92 int* pnMaxBucketCapacity);