cpl_quad_tree.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef _CPL_QUAD_TREE_H_INCLUDED
00033 #define _CPL_QUAD_TREE_H_INCLUDED
00034
00035 #include "cpl_port.h"
00036
00048 CPL_C_START
00049
00050
00051
00052 typedef struct {
00053 double minx, miny, maxx, maxy;
00054 } CPLRectObj;
00055
00056 typedef struct _CPLQuadTree CPLQuadTree;
00057
00058 typedef void (*CPLQuadTreeGetBoundsFunc)(const void* hFeature, CPLRectObj* pBounds);
00059 typedef int (*CPLQuadTreeForeachFunc)(void* pElt, void* pUserData);
00060 typedef void (*CPLQuadTreeDumpFeatureFunc)(const void* hFeature, int nIndentLevel, void* pUserData);
00061
00062
00063
00064 CPLQuadTree CPL_DLL *CPLQuadTreeCreate(const CPLRectObj* pGlobalBounds,
00065 CPLQuadTreeGetBoundsFunc pfnGetBounds);
00066 void CPL_DLL CPLQuadTreeDestroy(CPLQuadTree *hQuadtree);
00067
00068 void CPL_DLL CPLQuadTreeSetBucketCapacity(CPLQuadTree *hQuadtree,
00069 int nBucketCapacity);
00070 int CPL_DLL CPLQuadTreeGetAdvisedMaxDepth(int nExpectedFeatures);
00071 void CPL_DLL CPLQuadTreeSetMaxDepth(CPLQuadTree *hQuadtree,
00072 int nMaxDepth);
00073
00074 void CPL_DLL CPLQuadTreeInsert(CPLQuadTree *hQuadtree,
00075 void* hFeature);
00076
00077 void CPL_DLL **CPLQuadTreeSearch(const CPLQuadTree *hQuadtree,
00078 const CPLRectObj* pAoi,
00079 int* pnFeatureCount);
00080
00081 void CPL_DLL CPLQuadTreeForeach(const CPLQuadTree *hQuadtree,
00082 CPLQuadTreeForeachFunc pfnForeach,
00083 void* pUserData);
00084
00085 void CPL_DLL CPLQuadTreeDump(const CPLQuadTree *hQuadtree,
00086 CPLQuadTreeDumpFeatureFunc pfnDumpFeatureFunc,
00087 void* pUserData);
00088 void CPL_DLL CPLQuadTreeGetStats(const CPLQuadTree *hQuadtree,
00089 int* pnFeatureCount,
00090 int* pnNodeCount,
00091 int* pnMaxDepth,
00092 int* pnMaxBucketCapacity);
00093
00094 CPL_C_END
00095
00096 #endif