use raw_window_handle::{
HasRawDisplayHandle, HasRawWindowHandle, RawDisplayHandle, RawWindowHandle,
};
#[cfg(feature = "winit")]
use winit;
pub trait WindowSize {
fn width(&self) -> u32;
fn height(&self) -> u32;
}
pub struct HeadlessWindowInterface;
unsafe impl HasRawWindowHandle for HeadlessWindowInterface {
fn raw_window_handle(&self) -> RawWindowHandle {
panic!("Called raw_window_handle() on headless window context.");
}
}
unsafe impl HasRawDisplayHandle for HeadlessWindowInterface {
fn raw_display_handle(&self) -> RawDisplayHandle {
panic!("Called raw_display_handle() on headless window context.");
}
}
impl WindowSize for HeadlessWindowInterface {
fn width(&self) -> u32 {
panic!("called width() on headless window context.");
}
fn height(&self) -> u32 {
panic!("Called height() on headless window context");
}
}
#[cfg(feature = "winit")]
impl WindowSize for winit::window::Window {
fn width(&self) -> u32 {
self.inner_size().width
}
fn height(&self) -> u32 {
self.inner_size().height
}
}
pub trait WindowInterface: HasRawWindowHandle + HasRawDisplayHandle + WindowSize {}
impl<T: HasRawWindowHandle + HasRawDisplayHandle + WindowSize> WindowInterface for T {}