mirror of https://github.com/bobwen-dev/hunter
147 lines
3.1 KiB
Rust
147 lines
3.1 KiB
Rust
#[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 set_size(&mut self, x: u16, y: u16) {
|
|
self.size.0 = (x, y);
|
|
}
|
|
|
|
pub fn set_size_u(&mut self, x: usize, y: usize) {
|
|
self.size.0 = ((x+1) as u16, (y+1) as u16);
|
|
}
|
|
|
|
pub fn set_xsize(&mut self, x: u16) {
|
|
(self.size.0).0 = x;
|
|
}
|
|
|
|
pub fn set_ysize(&mut self, y: u16) {
|
|
(self.size.0).1 = y;
|
|
}
|
|
|
|
pub fn set_position(&mut self, x: u16, y: u16) {
|
|
self.position.0 = (x, y);
|
|
}
|
|
|
|
pub fn set_position_u(&mut self, x: usize, y: usize) {
|
|
self.position.0 = ((x+1) as u16, (y+1) as u16);
|
|
}
|
|
|
|
pub fn set_xpos(&mut self, x: u16) {
|
|
(self.position.0).0 = x;
|
|
}
|
|
|
|
pub fn set_ypos(&mut self, y: u16) {
|
|
(self.position.0).1 = y;
|
|
}
|
|
|
|
pub fn xsize_u(&self) -> usize {
|
|
self.size.size_u().0
|
|
}
|
|
|
|
pub fn xsize(&self) -> u16 {
|
|
self.size.xsize()
|
|
}
|
|
|
|
pub fn ysize(&self) -> u16 {
|
|
self.size.ysize()
|
|
}
|
|
|
|
pub fn xpos(&self) -> u16 {
|
|
self.position.position().0
|
|
}
|
|
|
|
pub fn ypos(&self) -> u16 {
|
|
self.position.position().1
|
|
}
|
|
|
|
pub fn position(&self) -> &Position {
|
|
&self.position
|
|
}
|
|
|
|
pub fn u16position(&self) -> (u16, u16) {
|
|
self.position.position()
|
|
}
|
|
|
|
pub fn position_u(&self) -> (usize, usize) {
|
|
let (xpos, ypos) = self.u16position();
|
|
((xpos-1) as usize, (ypos-1) as usize)
|
|
}
|
|
|
|
pub fn size(&self) -> &Size {
|
|
&self.size
|
|
}
|
|
|
|
pub fn u16size(&self) -> (u16, u16) {
|
|
self.size.size()
|
|
}
|
|
|
|
pub fn size_u(&self) -> (usize, usize) {
|
|
let (xsize, ysize) = self.u16size();
|
|
((xsize-1) as usize, (ysize-1) as usize)
|
|
}
|
|
|
|
pub fn top(&self) -> Position {
|
|
self.position().clone()
|
|
}
|
|
|
|
// pub fn left(&self) -> /
|
|
}
|
|
|
|
impl Size {
|
|
pub fn size(&self) -> (u16, u16) {
|
|
self.0
|
|
}
|
|
pub fn size_u(&self) -> (usize, usize) {
|
|
let (xsize, ysize) = self.0;
|
|
((xsize-1) as usize, (ysize-1) as usize)
|
|
}
|
|
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 position_u(&self) -> (usize, usize) {
|
|
let (xpos, ypos) = self.0;
|
|
((xpos-1) as usize, (ypos-1) as usize)
|
|
}
|
|
pub fn x(&self) -> u16 {
|
|
(self.0).0
|
|
}
|
|
pub fn y(&self) -> u16 {
|
|
(self.0).1
|
|
}
|
|
}
|