#![allow(clippy::new_ret_no_self)]
use std::{convert::TryInto, os::unix::io::AsRawFd, io::Read};
use ncursesw::WINDOW;
use crate::{Screen, Origin, Size, Window, NCurseswWinError, gen::{HasHandle, IsWindow}};
pub trait NCurseswWindow: HasHandle<WINDOW> + IsWindow {
fn new(size: Size, origin: Origin) -> result!(Window) {
Ok(Window::_from(None, ncursesw::newwin(size.try_into()?, origin.try_into()?)?, true))
}
#[deprecated(since = "0.3.1", note = "Use Window::new() instead")]
fn newwin(size: Size, origin: Origin) -> result!(Window) {
Self::new(size, origin)
}
fn new_sp(screen: &Screen, size: Size, origin: Origin) -> result!(Window) {
Ok(Window::_from(Some(screen._handle()), ncursesw::newwin_sp(screen._handle(), size.try_into()?, origin.try_into()?)?, true))
}
#[deprecated(since = "0.5.0", note = "Use Window::new_sp() instead")]
fn newwin_sp(screen: &Screen, size: Size, origin: Origin) -> result!(Window) {
Self::new_sp(screen, size, origin)
}
fn copywin(
&self,
dstwin: &Window,
smin: Origin,
dmin: Origin,
dmax: Origin,
overlay: bool) -> result!(())
{
Ok(ncursesw::copywin(self._handle(), dstwin._handle(), smin.try_into()?, dmin.try_into()?, dmax.try_into()?, overlay)?)
}
fn dupwin(&self) -> result!(Window) {
Ok(Window::_from(self._screen(), ncursesw::dupwin(self._handle())?, true))
}
fn getwin<I: AsRawFd + Read>(file: &I) -> result!(Window) {
Ok(Window::_from(None, ncursesw::getwin(file)?, true))
}
fn overlay(&self, srcwin: &Window) -> result!(()) {
Ok(ncursesw::overlay(srcwin._handle(), self._handle())?)
}
fn overwrite(&self, srcwin: &Window) -> result!(()) {
Ok(ncursesw::overwrite(srcwin._handle(), self._handle())?)
}
fn refresh(&self) -> result!(()) {
Ok(ncursesw::wrefresh(self._handle())?)
}
}