use std::{fmt, convert::{TryFrom, TryInto}};
use crate::NCurseswWinError;
#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct Origin {
pub y: u16,
pub x: u16
}
impl Default for Origin {
fn default() -> Self {
Self { y: 0, x: 0 }
}
}
impl TryInto<ncursesw::Origin> for Origin {
type Error = NCurseswWinError;
fn try_into(self) -> Result<ncursesw::Origin, Self::Error> {
Ok(ncursesw::Origin { y: u16::try_into(self.y)? , x: u16::try_into(self.x)? })
}
}
impl TryFrom<ncursesw::Origin> for Origin {
type Error = NCurseswWinError;
fn try_from(origin: ncursesw::Origin) -> Result<Self, Self::Error> {
Ok(Self { y: u16::try_from(origin.y)?, x: u16::try_from(origin.x)? })
}
}
impl fmt::Display for Origin {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "(y: {}, x: {})", self.y, self.x)
}
}