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
00033 #ifndef _CPL_QUAD_TREE_H_INCLUDED
00034 #define _CPL_QUAD_TREE_H_INCLUDED
00035
00036 #include "cpl_port.h"
00037
00049 CPL_C_START
00050
00051
00052
00053 typedef struct {
00054 double minx, miny, maxx, maxy;
00055 } CPLRectObj;
00056
00057 typedef struct _CPLQuadTree CPLQuadTree;
00058
00059 typedef void (*CPLQuadTreeGetBoundsFunc)(const void* hFeature, CPLRectObj* pBounds);
00060 typedef int (*CPLQuadTreeForeachFunc)(void* pElt, void* pUserData);
00061 typedef void (*CPLQuadTreeDumpFeatureFunc)(const void* hFeature, int nIndentLevel, void* pUserData);
00062
00063
00064
00065 CPLQuadTree CPL_DLL *CPLQuadTreeCreate(const CPLRectObj* pGlobalBounds,
00066 CPLQuadTreeGetBoundsFunc pfnGetBounds);
00067 void CPL_DLL CPLQuadTreeDestroy(CPLQuadTree *hQuadtree);
00068
00069 void CPL_DLL CPLQuadTreeSetBucketCapacity(CPLQuadTree *hQuadtree,
00070 int nBucketCapacity);
00071 int CPL_DLL CPLQuadTreeGetAdvisedMaxDepth(int nExpectedFeatures);
00072 void CPL_DLL CPLQuadTreeSetMaxDepth(CPLQuadTree *hQuadtree,
00073 int nMaxDepth);
00074
00075 void CPL_DLL CPLQuadTreeInsert(CPLQuadTree *hQuadtree,
00076 void* hFeature);
00077 void CPL_DLL CPLQuadTreeInsertWithBounds(CPLQuadTree *hQuadtree,
00078 void* hFeature,
00079 const CPLRectObj* psBounds);
00080
00081 void CPL_DLL **CPLQuadTreeSearch(const CPLQuadTree *hQuadtree,
00082 const CPLRectObj* pAoi,
00083 int* pnFeatureCount);
00084
00085 void CPL_DLL CPLQuadTreeForeach(const CPLQuadTree *hQuadtree,
00086 CPLQuadTreeForeachFunc pfnForeach,
00087 void* pUserData);
00088
00089 void CPL_DLL CPLQuadTreeDump(const CPLQuadTree *hQuadtree,
00090 CPLQuadTreeDumpFeatureFunc pfnDumpFeatureFunc,
00091 void* pUserData);
00092 void CPL_DLL CPLQuadTreeGetStats(const CPLQuadTree *hQuadtree,
00093 int* pnFeatureCount,
00094 int* pnNodeCount,
00095 int* pnMaxDepth,
00096 int* pnMaxBucketCapacity);
00097
00098 CPL_C_END
00099
00100 #endif