Make bezier control point coordinates relative
[ipdf/code.git] / src / quadtree.cpp
index 04630b7..2aace7a 100644 (file)
@@ -24,10 +24,6 @@ Rect TransformToQuadChild(const Rect& src, QuadTreeNodeChildren child_type)
 Rect TransformFromQuadChild(const Rect& src, QuadTreeNodeChildren child_type)
 {
        Rect dst = src;
-       dst.x *= 0.5;
-       dst.y *= 0.5;
-       dst.w *= 0.5;
-       dst.h *= 0.5;
        if (child_type == QTC_BOTTOM_LEFT || child_type == QTC_BOTTOM_RIGHT)
        {
                dst.y += 1;
@@ -36,10 +32,14 @@ Rect TransformFromQuadChild(const Rect& src, QuadTreeNodeChildren child_type)
        {
                dst.x += 1;
        }
+       dst.x *= 0.5;
+       dst.y *= 0.5;
+       dst.w *= 0.5;
+       dst.h *= 0.5;
        return dst;
 }
 
-bool ContainedInQuadChild(const Rect& src, QuadTreeNodeChildren child_type)
+bool IntersectsQuadChild(const Rect& src, QuadTreeNodeChildren child_type)
 {
        Rect std = {0,0,1,1};
        Rect dst = TransformFromQuadChild(std, child_type);
@@ -47,6 +47,19 @@ bool ContainedInQuadChild(const Rect& src, QuadTreeNodeChildren child_type)
        if (src.y + src.h < dst.y) return false;
        if (src.x > dst.x + dst.w) return false;
        if (src.y > dst.y + dst.h) return false;
+       Debug("%s is contained in %s\n", src.Str().c_str(), dst.Str().c_str());
+       return true;
+}
+
+bool ContainedInQuadChild(const Rect& src, QuadTreeNodeChildren child_type)
+{
+       Rect std = {0,0,1,1};
+       Rect dst = TransformFromQuadChild(std, child_type);
+       if (src.x < dst.x) return false;
+       if (src.y < dst.y) return false;
+       if (src.x + src.w > dst.x + dst.w) return false;
+       if (src.y + src.h > dst.y + dst.h) return false;
+       Debug("%s is contained in %s... \n", src.Str().c_str(), dst.Str().c_str());
        return true;
 }
 

UCC git Repository :: git.ucc.asn.au