use std::fmt;
#[repr(C)]
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum LogType {
Info,
Warn,
Error,
Wayland
}
#[repr(C)]
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum BackendType {
None,
DRM,
X11
}
bitflags! {
#[repr(C)]
pub flags EventBit: u32 {
const EVENT_READABLE = 1,
const EVENT_WRITEABLE = 2,
const EVENT_HANGUP = 4,
const EVENT_ERROR = 8
}
}
bitflags! {
#[repr(C)]
pub flags ViewState: u32 {
const VIEW_MAXIMIZED = 1,
const VIEW_FULLSCREEN = 2,
const VIEW_RESIZING = 4,
const VIEW_MOVING = 8,
const VIEW_ACTIVATED = 16
}
}
bitflags! {
#[repr(C)]
pub flags ViewType: u32 {
const VIEW_BIT_OVERRIDE_REDIRECT = 1,
const VIEW_BIT_UNMANAGED = 2,
const VIEW_BIT_SPLASH = 4,
const VIEW_BIT_MODAL = 8,
const VIEW_BIT_POPUP = 16
}
}
bitflags! {
#[repr(C)]
pub flags ResizeEdge: u32 {
const EDGE_NONE = 0,
const RESIZE_TOP = 1,
const RESIZE_BOTTOM = 2,
const RESIZE_LEFT = 4,
const RESIZE_TOPLEFT = 5,
const RESIZE_BOTTOMLEFT = 6,
const RESIZE_RIGHT = 8,
const RESIZE_TOPRIGHT = 9,
const RESIZE_BOTTOMRIGHT = 10
}
}
bitflags! {
#[repr(C)]
pub flags KeyMod: u32 {
const MOD_NONE = 0,
const MOD_SHIFT = 1,
const MOD_CAPS = 2,
const MOD_CTRL = 4,
const MOD_ALT = 8,
const MOD_MOD2 = 16,
const MOD_MOD3 = 32,
const MOD_MOD4 = 64,
const MOD_MOD5 = 128
}
}
bitflags! {
#[repr(C)]
pub flags KeyboardLed: u32 {
const NUM_LOCK = 1,
const CAPS_LOCK = 2,
const SCROL_LLOCK = 4,
const SCROLL_LOCK = 4
}
}
#[repr(C)]
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum KeyState {
Released = 0,
Pressed = 1
}
#[repr(C)]
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum ButtonState {
Released = 0,
Pressed = 1
}
#[repr(C)]
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ScrollAxis {
None = 0,
Vertical = 1,
Horizontal = 2,
Both = 3
}
#[repr(C)]
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum TouchType {
Down,
Up,
Motion,
Frame,
Cancel
}
#[repr(C)]
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct KeyboardModifiers {
pub leds: KeyboardLed,
pub mods: KeyMod
}
#[repr(C)]
#[derive(Debug, Eq, PartialEq, Clone, Hash)]
pub struct Point {
pub x: i32,
pub y: i32
}
impl fmt::Display for Point {
fn fmt(&self, format: &mut fmt::Formatter) -> fmt::Result {
write!(format, "({}, {})", self.x, self.y)
}
}
#[repr(C)]
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Size {
pub w: u32,
pub h: u32
}
impl fmt::Display for Size {
fn fmt(&self, format: &mut fmt::Formatter) -> fmt::Result {
write!(format, "{} x {}", self.w, self.h)
}
}
#[repr(C)]
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Geometry {
pub origin: Point,
pub size: Size
}
impl fmt::Display for Geometry {
fn fmt(&self, format: &mut fmt::Formatter) -> fmt::Result {
write!(format, "[{} at {}]", self.size, self.origin)
}
}
#[repr(C)]
pub struct LibinputDevice;