X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fquadtree.h;h=1c1c0254c6441d289cbdde2daba561ec21057973;hp=671ee0fdf5e987d28143574914ebf7530aaa0599;hb=58a6719da2337b3e6e20b581885f170bbe5fc480;hpb=35e4687acd16a28fc923a75d254cdb4fd2fbc524 diff --git a/src/quadtree.h b/src/quadtree.h index 671ee0f..1c1c025 100644 --- a/src/quadtree.h +++ b/src/quadtree.h @@ -6,6 +6,7 @@ #include "common.h" +#include "ipdf.h" namespace IPDF { @@ -38,13 +39,24 @@ namespace IPDF unsigned object_begin; // Last object in the node. unsigned object_end; + // Linked list of "extra" nodes + QuadTreeIndex next_overlay; }; struct QuadTree { + QuadTree() : root_id(QUADTREE_EMPTY) {} QuadTreeIndex root_id; std::vector nodes; + + QuadTreeIndex GetNeighbour(QuadTreeIndex start, int xdir, int ydir) const; + }; + + Rect TransformToQuadChild(const Rect& src, QuadTreeNodeChildren child_type); + Rect TransformFromQuadChild(const Rect& src, QuadTreeNodeChildren child_type); + bool IntersectsQuadChild(const Rect& src, QuadTreeNodeChildren child_type); + bool ContainedInQuadChild(const Rect& src, QuadTreeNodeChildren child_type); } #else