5 #ifndef QUADTREE_REMOVED
14 typedef int QuadTreeIndex;
15 static const QuadTreeIndex QUADTREE_EMPTY = -1;
17 enum QuadTreeNodeChildren
26 // Represents a single node in a quadtree.
29 // Indices of children nodes, QUADTREE_EMPTY if no such child.
30 QuadTreeIndex top_left;
31 QuadTreeIndex top_right;
32 QuadTreeIndex bottom_left;
33 QuadTreeIndex bottom_right;
34 // Parent node id. QUADTREE_EMPTY if root.
37 QuadTreeNodeChildren child_type;
38 // First object in the node.
39 unsigned object_begin;
40 // Last object in the node.
46 QuadTree() : root_id(QUADTREE_EMPTY) {}
47 QuadTreeIndex root_id;
48 std::vector<QuadTreeNode> nodes;
51 Rect TransformToQuadChild(const Rect& src, QuadTreeNodeChildren child_type);
52 Rect TransformFromQuadChild(const Rect& src, QuadTreeNodeChildren child_type);
53 bool IntersectsQuadChild(const Rect& src, QuadTreeNodeChildren child_type);
54 bool ContainedInQuadChild(const Rect& src, QuadTreeNodeChildren child_type);
58 #define QUADTREE_DISABLED