e93a0f0fd839c496d92f39a765166b5d1c2712c1
[ipdf/code.git] / src / quadtree.cpp
1 #ifndef QUADTREE_REMOVED
2 #include "quadtree.h"
3
4 namespace IPDF {
5
6 Rect TransformToQuadChild(const Rect& src, QuadTreeNodeChildren child_type)
7 {
8         Rect dst = src;
9         dst.x *= 2;
10         dst.y *= 2;
11         dst.w *= 2;
12         dst.h *= 2;
13         if (child_type == QTC_BOTTOM_LEFT || child_type == QTC_BOTTOM_RIGHT)
14         {
15                 dst.x -= 1;
16         }
17         if (child_type == QTC_TOP_RIGHT || child_type == QTC_BOTTOM_RIGHT)
18         {
19                 dst.y -= 1;
20         }
21         return dst;
22 }
23
24 Rect TransformFromQuadChild(const Rect& src, QuadTreeNodeChildren child_type)
25 {
26         Rect dst = src;
27         dst.x *= 0.5;
28         dst.y *= 0.5;
29         dst.w *= 0.5;
30         dst.h *= 0.5;
31         if (child_type == QTC_BOTTOM_LEFT || child_type == QTC_BOTTOM_RIGHT)
32         {
33                 dst.x += 1;
34         }
35         if (child_type == QTC_TOP_RIGHT || child_type == QTC_BOTTOM_RIGHT)
36         {
37                 dst.y += 1;
38         }
39         return dst;
40 }
41
42 bool ContainedInQuadChild(const Rect& src, QuadTreeNodeChildren child_type)
43 {
44         Rect std = {0,0,1,1};
45         Rect dst = TransformFromQuadChild(std, child_type);
46         if (src.x + src.w < dst.x) return false;
47         if (src.y + src.h < dst.y) return false;
48         if (src.x > dst.x + dst.w) return false;
49         if (src.y > dst.y + dst.h) return false;
50         return true;
51 }
52
53 }
54
55 #endif

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