From 4ba804832c7a779340694d2d23e940ae7fa92f47 Mon Sep 17 00:00:00 2001 From: Joshua Simmons Date: Sun, 20 Nov 2022 00:21:20 +0100 Subject: [PATCH] Add trait for passing OS window information around --- narcissus-core/src/lib.rs | 1 + narcissus-core/src/raw_window.rs | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 narcissus-core/src/raw_window.rs 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; +} -- 2.49.0