diff options
Diffstat (limited to 'src/window')
-rw-r--r-- | src/window/x11.rs | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/src/window/x11.rs b/src/window/x11.rs deleted file mode 100644 index d4bcbe4..0000000 --- a/src/window/x11.rs +++ /dev/null @@ -1,66 +0,0 @@ -use crate::window::GraphicsContext; -use buffer::Buffer; -use geometry::HasDimensions; -use raw_window_handle::XlibHandle; -use std::os::raw::{c_char, c_uint}; -use x11_dl::xlib::{Display, Visual, Xlib, ZPixmap, GC}; - -pub struct X11GraphicsContext { - handle: XlibHandle, - lib: Xlib, - gc: GC, - visual: *mut Visual, - depth: i32, -} - -impl X11GraphicsContext { - pub unsafe fn new(handle: XlibHandle) -> Self { - let lib = match Xlib::open() { - Ok(lib) => lib, - Err(e) => panic!("{:?}", e), - }; - let screen = (lib.XDefaultScreen)(handle.display as *mut Display); - let gc = (lib.XDefaultGC)(handle.display as *mut Display, screen); - let visual = (lib.XDefaultVisual)(handle.display as *mut Display, screen); - let depth = (lib.XDefaultDepth)(handle.display as *mut Display, screen); - - Self { handle, lib, gc, visual, depth } - } -} - -impl GraphicsContext for X11GraphicsContext { - unsafe fn blit(&mut self, buffer: &Buffer) { - let array = buffer.as_u32_slice(); - let dimensions = buffer.dimensions(); - //create image - let image = (self.lib.XCreateImage)( - self.handle.display as *mut Display, - self.visual, - self.depth as u32, - ZPixmap, - 0, - (array.as_ptr()) as *mut c_char, - dimensions.width as u32, - dimensions.height as u32, - 32, - (dimensions.width * 4) as i32, - ); - - //push image to window - (self.lib.XPutImage)( - self.handle.display as *mut Display, - self.handle.window, - self.gc, - image, - 0, - 0, - 0, - 0, - dimensions.width as c_uint, - dimensions.height as c_uint, - ); - - (*image).data = std::ptr::null_mut(); - (self.lib.XDestroyImage)(image); - } -} |