]> git.nega.tv - josh/narcissus/commitdiff
Add trait for passing OS window information around
authorJoshua Simmons <josh@nega.tv>
Sat, 19 Nov 2022 23:21:20 +0000 (00:21 +0100)
committerJoshua Simmons <josh@nega.tv>
Sat, 19 Nov 2022 23:21:20 +0000 (00:21 +0100)
narcissus-core/src/lib.rs
narcissus-core/src/raw_window.rs [new file with mode: 0644]

index cb63fdd03fe90e7213f28accccba53215746d259..83653ac76e22e66159dc9fed60511062f7a41609 100644 (file)
@@ -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 (file)
index 0000000..eaa682f
--- /dev/null
@@ -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;
+}