From: Joshua Simmons Date: Sat, 19 Nov 2022 23:21:20 +0000 (+0100) Subject: Add trait for passing OS window information around X-Git-Url: https://git.nega.tv//gitweb.cgi?a=commitdiff_plain;h=4ba804832c7a779340694d2d23e940ae7fa92f47;p=josh%2Fnarcissus Add trait for passing OS window information around --- diff --git a/narcissus-core/src/lib.rs b/narcissus-core/src/lib.rs index cb63fdd..83653ac 100644 --- a/narcissus-core/src/lib.rs +++ b/narcissus-core/src/lib.rs @@ -7,6 +7,7 @@ mod mutex; pub mod obj; mod pool; pub mod rand; +pub mod raw_window; mod ref_count; pub mod slice; mod texture; diff --git a/narcissus-core/src/raw_window.rs b/narcissus-core/src/raw_window.rs new file mode 100644 index 0000000..eaa682f --- /dev/null +++ b/narcissus-core/src/raw_window.rs @@ -0,0 +1,30 @@ +use std::ffi::{c_int, c_void}; + +#[derive(Clone, Copy, PartialEq, Eq, Hash)] +pub struct XcbWindow { + pub connection: *mut c_void, + pub window: i32, +} + +#[derive(Clone, Copy, PartialEq, Eq, Hash)] +pub struct XlibWindow { + pub display: *mut c_void, + pub window: c_int, +} + +#[derive(Clone, Copy, PartialEq, Eq, Hash)] +pub struct WaylandWindow { + pub display: *mut c_void, + pub surface: *mut c_void, +} + +#[derive(Clone, Copy, PartialEq, Eq, Hash)] +pub enum RawWindow { + Xcb(XcbWindow), + Xlib(XlibWindow), + Wayland(WaylandWindow), +} + +pub trait AsRawWindow { + fn as_raw_window(&self) -> RawWindow; +}