typedef int QuadTreeIndex;
static const QuadTreeIndex QUADTREE_EMPTY = -1;
+ class Document;
enum QuadTreeNodeChildren
{
unsigned object_begin;
// Last object in the node.
unsigned object_end;
+ // Linked list of "extra" nodes
+ QuadTreeIndex next_overlay;
+ // First object which has not yet been propagated to extant children/parent.
+ unsigned object_dirty;
};
struct QuadTree
QuadTree() : root_id(QUADTREE_EMPTY) {}
QuadTreeIndex root_id;
std::vector<QuadTreeNode> nodes;
+
+ QuadTreeIndex GetNeighbour(QuadTreeIndex start, int xdir, int ydir, Document *doc) 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