use crate::UniversalUI_Base::general::*;
use crate::UniversalUI_Base::debug::*;
use crate::UniversalUI_Base::geometry::*;
extern crate x11;
use crate::libc::*;
use x11::xlib;
use x11::xlib::*;
use std::ptr;
pub fn create_window(title: *const c_char, size: uSize) -> uID {
let display = unsafe {
match crate::init::DISPLAY {
Some(disp) => disp,
None => {
debug_critical("Failed to unwrap X11 display");
panic!();
}
}
};
let root_window = unsafe {
xlib::XRootWindow(display, 0)
};
let window = unsafe {
xlib::XCreateSimpleWindow(
display,
root_window,
0, 0, 800, 600, 0, 0, 0x00ff00ff, )
};
unsafe {
xlib::XStoreName(display, window, title);
}
unsafe {
let result = unsafe { xlib::XMapWindow(display, window) };
if result == 0 {
debug_critical("Failed to map X11 display");
panic!();
}
xlib::XSelectInput(display, window,
KeyPressMask |
ButtonPressMask |
ButtonReleaseMask |
EnterWindowMask |
LeaveWindowMask |
FocusChangeMask |
StructureNotifyMask |
ExposureMask
);
}
return window.try_into().unwrap();
}
pub fn destroy_window(id: uID) {
let display = unsafe {
match crate::init::DISPLAY {
Some(disp) => disp,
None => {
debug_critical("Failed to unwrap X11 display");
panic!();
}
}
};
unsafe {
xlib::XDestroyWindow(display, id.try_into().unwrap());
}
}