*in progress*
[winnie] / src / geom.cc
1 #include "geom.h"
2
3 static inline int min(int x, int y)
4 {
5         return x < y ? x : y;
6 }
7
8 static inline int max(int x, int y)
9 {
10         return x > y ? x : y;
11 }
12
13 Rect rect_union(const Rect &a, const Rect &b)
14 {
15         Rect uni;
16         uni.x = min(a.x, b.x);
17         uni.y = min(a.y, b.y);
18         uni.width = max(a.x + a.width, b.x + b.width) - uni.x;
19         uni.height = max(a.y + a.height, b.y + b.height) - uni.y;
20
21         return uni;
22 }
23
24 Rect rect_intersection(const Rect &a, const Rect &b)
25 {
26         Rect intersect;
27         intersect.x = max(a.x, b.x);
28         intersect.y = max(a.y, b.y);
29         intersect.width = max(min(a.x + a.width, b.x + b.width) - intersect.x, 0);
30         intersect.height = max(min(a.y + a.height, b.y + b.height) - intersect.y, 0);
31
32         return intersect;
33 }