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
74
75
76
77
78
79
80
81
82
83
84
|
#[derive(Debug, Clone, PartialEq)]
pub struct Size(pub (u16, u16));
#[derive(Debug, Clone, PartialEq)]
pub struct Position(pub (u16, u16));
#[derive(Debug, Clone, PartialEq)]
pub struct Coordinates {
pub size: Size,
pub position: Position,
}
impl Coordinates {
pub fn new() -> Coordinates {
Coordinates {
size: Size((crate::term::xsize(), crate::term::ysize())),
position: Position((1, 1)),
}
}
pub fn new_at(xsize: u16, ysize: u16, xpos: u16, ypos: u16 ) -> Coordinates {
Coordinates {
size: Size((xsize, ysize)),
position: Position((xpos, ypos))
}
}
// pub fn size(&self) -> &Size {
// &self.size
// }
pub fn xsize(&self) -> u16 {
self.size.xsize()
}
pub fn ysize(&self) -> u16 {
self.size.ysize()
}
pub fn position(&self) -> &Position {
&self.position
}
pub fn u16position(&self) -> (u16, u16) {
self.position.position()
}
pub fn size(&self) -> &Size {
&self.size
}
pub fn u16size(&self) -> (u16, u16) {
self.size.size()
}
pub fn top(&self) -> Position {
self.position().clone()
}
// pub fn left(&self) -> /
}
impl Size {
pub fn size(&self) -> (u16, u16) {
self.0
}
pub fn xsize(&self) -> u16 {
(self.0).0
}
pub fn ysize(&self) -> u16 {
(self.0).1
}
}
impl Position {
pub fn position(&self) -> (u16, u16) {
self.0
}
pub fn x(&self) -> u16 {
(self.0).0
}
pub fn y(&self) -> u16 {
(self.0).1
}
}
|