Source file lTerm_geom.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
type size = {
rows : int;
cols : int;
}
let rows size = size.rows
let cols size = size.cols
let string_of_size size =
Printf.sprintf "{ rows = %d; cols = %d }" size.rows size.cols
type coord = {
row : int;
col : int;
}
let row size = size.row
let col size = size.col
let string_of_coord coord =
Printf.sprintf "{ row = %d; col = %d }" coord.row coord.col
type rect = {
row1 : int;
col1 : int;
row2 : int;
col2 : int;
}
let row1 rect = rect.row1
let col1 rect = rect.col1
let row2 rect = rect.row2
let col2 rect = rect.col2
let size_of_rect rect = { rows = rect.row2 - rect.row1; cols = rect.col2 - rect.col1 }
let string_of_rect rect =
Printf.sprintf
"{ row1 = %d; col1 = %d; row2 = %d; col2 = %d }"
rect.row1 rect.col1 rect.row2 rect.col2
let in_rect rect coord =
coord.col >= rect.col1 &&
coord.col < rect.col2 &&
coord.row >= rect.row1 &&
coord.row < rect.row2
type horz_alignment =
| H_align_left
| H_align_center
| H_align_right
type vert_alignment =
| V_align_top
| V_align_center
| V_align_bottom
type 'a directions = {
left : 'a;
right : 'a;
up : 'a;
down : 'a;
}