/src/mupdf/thirdparty/extract/src/rect.c
Line | Count | Source |
1 | | #include "extract/extract.h" |
2 | | #include "document.h" |
3 | | |
4 | | static inline double |
5 | | mind(double a, double b) |
6 | 0 | { |
7 | 0 | return (a < b) ? a : b; |
8 | 0 | } |
9 | | |
10 | | static inline double |
11 | | maxd(double a, double b) |
12 | 0 | { |
13 | 0 | return (a > b) ? a : b; |
14 | 0 | } |
15 | | |
16 | | rect_t extract_rect_intersect(rect_t a, rect_t b) |
17 | 0 | { |
18 | 0 | rect_t r; |
19 | |
|
20 | 0 | r.min.x = maxd(a.min.x, b.min.x); |
21 | 0 | r.min.y = maxd(a.min.y, b.min.y); |
22 | 0 | r.max.x = mind(a.max.x, b.max.x); |
23 | 0 | r.max.y = mind(a.max.y, b.max.y); |
24 | |
|
25 | 0 | return r; |
26 | 0 | } |
27 | | |
28 | | rect_t extract_rect_union(rect_t a, rect_t b) |
29 | 0 | { |
30 | 0 | rect_t r; |
31 | |
|
32 | 0 | r.min.x = mind(a.min.x, b.min.x); |
33 | 0 | r.min.y = mind(a.min.y, b.min.y); |
34 | 0 | r.max.x = maxd(a.max.x, b.max.x); |
35 | 0 | r.max.y = maxd(a.max.y, b.max.y); |
36 | |
|
37 | 0 | return r; |
38 | 0 | } |
39 | | |
40 | | rect_t extract_rect_union_point(rect_t a, point_t b) |
41 | 0 | { |
42 | 0 | rect_t r; |
43 | |
|
44 | 0 | r.min.x = mind(a.min.x, b.x); |
45 | 0 | r.min.y = mind(a.min.y, b.y); |
46 | 0 | r.max.x = maxd(a.max.x, b.x); |
47 | 0 | r.max.y = maxd(a.max.y, b.y); |
48 | |
|
49 | 0 | return r; |
50 | 0 | } |
51 | | |
52 | | int extract_rect_contains_rect(rect_t a, rect_t b) |
53 | 0 | { |
54 | 0 | if (a.min.x > b.min.x) |
55 | 0 | return 0; |
56 | 0 | if (a.min.y > b.min.y) |
57 | 0 | return 0; |
58 | 0 | if (a.max.x < b.max.x) |
59 | 0 | return 0; |
60 | 0 | if (a.max.y < b.max.y) |
61 | 0 | return 0; |
62 | | |
63 | 0 | return 1; |
64 | 0 | } |
65 | | |
66 | | int extract_rect_valid(rect_t a) |
67 | 0 | { |
68 | 0 | return (a.min.x <= a.max.x && a.min.y <= a.max.y); |
69 | 0 | } |