#include "common.h"
+#include "ipdf.h"
namespace IPDF
{
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;
};
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