use std::{fmt, convert::{TryFrom, TryInto}};
use crate::{Size, Origin, NCurseswWinError};
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
pub struct FieldParameters {
size: Size,
origin: Origin,
offscreen: u16,
nbuffers: u8
}
impl FieldParameters {
pub fn new(size: Size, origin: Origin, offscreen: u16, nbuffers: u8) -> Self {
Self { size, origin, offscreen, nbuffers }
}
pub fn size(&self) -> Size {
self.size
}
pub fn origin(&self) -> Origin {
self.origin
}
pub fn offscreen(&self) -> u16 {
self.offscreen
}
pub fn nbuffers(&self) -> u8 {
self.nbuffers
}
}
impl TryInto<ncursesw::form::FieldParameters> for FieldParameters {
type Error = NCurseswWinError;
fn try_into(self) -> Result<ncursesw::form::FieldParameters, Self::Error> {
Ok(ncursesw::form::FieldParameters::new(self.size().try_into()?, self.origin().try_into()?, u16::try_into(self.offscreen)?, u8::try_into(self.nbuffers)?))
}
}
impl TryFrom<ncursesw::form::FieldParameters> for FieldParameters {
type Error = NCurseswWinError;
fn try_from(parameters: ncursesw::form::FieldParameters) -> Result<Self, Self::Error> {
Ok(Self { size: parameters.size().try_into()?, origin: parameters.origin().try_into()?, offscreen: u16::try_from(parameters.offscreen())?, nbuffers: u8::try_from(parameters.nbuffers())? })
}
}
impl fmt::Display for FieldParameters {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "(size: {}, origin: {}, offscreen: {}, nbuffers: {})", self.size, self.origin, self.offscreen, self.nbuffers)
}
}