summaryrefslogtreecommitdiffstats
path: root/src/coordinates.rs
blob: 5861f728b480b7c456a2fe5bc0e905dbfe81c5b0 (plain)
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
    }
}