206 lines
5.0 KiB
Rust
206 lines
5.0 KiB
Rust
|
#![allow(non_camel_case_types)]
|
||
|
|
||
|
use libc::c_void;
|
||
|
|
||
|
#[link(name = "xcb")]
|
||
|
#[link(name = "xcb-shm")]
|
||
|
#[link(name = "xcb-randr")]
|
||
|
extern "C" {
|
||
|
pub fn xcb_connect(displayname: *const i8, screenp: *mut i32) -> *mut xcb_connection_t;
|
||
|
|
||
|
pub fn xcb_disconnect(c: *mut xcb_connection_t);
|
||
|
|
||
|
pub fn xcb_connection_has_error(c: *mut xcb_connection_t) -> i32;
|
||
|
|
||
|
pub fn xcb_get_setup(c: *mut xcb_connection_t) -> *const xcb_setup_t;
|
||
|
|
||
|
pub fn xcb_setup_roots_iterator(r: *const xcb_setup_t) -> xcb_screen_iterator_t;
|
||
|
|
||
|
pub fn xcb_screen_next(i: *mut xcb_screen_iterator_t);
|
||
|
|
||
|
pub fn xcb_generate_id(c: *mut xcb_connection_t) -> u32;
|
||
|
|
||
|
pub fn xcb_shm_attach(
|
||
|
c: *mut xcb_connection_t,
|
||
|
shmseg: xcb_shm_seg_t,
|
||
|
shmid: u32,
|
||
|
read_only: u8,
|
||
|
) -> xcb_void_cookie_t;
|
||
|
|
||
|
pub fn xcb_shm_detach(c: *mut xcb_connection_t, shmseg: xcb_shm_seg_t) -> xcb_void_cookie_t;
|
||
|
|
||
|
pub fn xcb_shm_get_image_unchecked(
|
||
|
c: *mut xcb_connection_t,
|
||
|
drawable: xcb_drawable_t,
|
||
|
x: i16,
|
||
|
y: i16,
|
||
|
width: u16,
|
||
|
height: u16,
|
||
|
plane_mask: u32,
|
||
|
format: u8,
|
||
|
shmseg: xcb_shm_seg_t,
|
||
|
offset: u32,
|
||
|
) -> xcb_shm_get_image_cookie_t;
|
||
|
|
||
|
pub fn xcb_shm_get_image_reply(
|
||
|
c: *mut xcb_connection_t,
|
||
|
cookie: xcb_shm_get_image_cookie_t,
|
||
|
e: *mut *mut xcb_generic_error_t,
|
||
|
) -> *mut xcb_shm_get_image_reply_t;
|
||
|
|
||
|
pub fn xcb_randr_get_monitors_unchecked(
|
||
|
c: *mut xcb_connection_t,
|
||
|
window: xcb_window_t,
|
||
|
get_active: u8,
|
||
|
) -> xcb_randr_get_monitors_cookie_t;
|
||
|
|
||
|
pub fn xcb_randr_get_monitors_reply(
|
||
|
c: *mut xcb_connection_t,
|
||
|
cookie: xcb_randr_get_monitors_cookie_t,
|
||
|
e: *mut *mut xcb_generic_error_t,
|
||
|
) -> *mut xcb_randr_get_monitors_reply_t;
|
||
|
|
||
|
pub fn xcb_randr_get_monitors_monitors_iterator(
|
||
|
r: *const xcb_randr_get_monitors_reply_t,
|
||
|
) -> xcb_randr_monitor_info_iterator_t;
|
||
|
|
||
|
pub fn xcb_randr_monitor_info_next(i: *mut xcb_randr_monitor_info_iterator_t);
|
||
|
}
|
||
|
|
||
|
pub const XCB_IMAGE_FORMAT_Z_PIXMAP: u8 = 2;
|
||
|
|
||
|
pub type xcb_atom_t = u32;
|
||
|
pub type xcb_connection_t = c_void;
|
||
|
pub type xcb_window_t = u32;
|
||
|
pub type xcb_keycode_t = u8;
|
||
|
pub type xcb_visualid_t = u32;
|
||
|
pub type xcb_timestamp_t = u32;
|
||
|
pub type xcb_colormap_t = u32;
|
||
|
pub type xcb_shm_seg_t = u32;
|
||
|
pub type xcb_drawable_t = u32;
|
||
|
|
||
|
#[repr(C)]
|
||
|
pub struct xcb_setup_t {
|
||
|
pub status: u8,
|
||
|
pub pad0: u8,
|
||
|
pub protocol_major_version: u16,
|
||
|
pub protocol_minor_version: u16,
|
||
|
pub length: u16,
|
||
|
pub release_number: u32,
|
||
|
pub resource_id_base: u32,
|
||
|
pub resource_id_mask: u32,
|
||
|
pub motion_buffer_size: u32,
|
||
|
pub vendor_len: u16,
|
||
|
pub maximum_request_length: u16,
|
||
|
pub roots_len: u8,
|
||
|
pub pixmap_formats_len: u8,
|
||
|
pub image_byte_order: u8,
|
||
|
pub bitmap_format_bit_order: u8,
|
||
|
pub bitmap_format_scanline_unit: u8,
|
||
|
pub bitmap_format_scanline_pad: u8,
|
||
|
pub min_keycode: xcb_keycode_t,
|
||
|
pub max_keycode: xcb_keycode_t,
|
||
|
pub pad1: [u8; 4],
|
||
|
}
|
||
|
|
||
|
#[repr(C)]
|
||
|
pub struct xcb_screen_iterator_t {
|
||
|
pub data: *mut xcb_screen_t,
|
||
|
pub rem: i32,
|
||
|
pub index: i32,
|
||
|
}
|
||
|
|
||
|
#[repr(C)]
|
||
|
pub struct xcb_screen_t {
|
||
|
pub root: xcb_window_t,
|
||
|
pub default_colormap: xcb_colormap_t,
|
||
|
pub white_pixel: u32,
|
||
|
pub black_pixel: u32,
|
||
|
pub current_input_masks: u32,
|
||
|
pub width_in_pixels: u16,
|
||
|
pub height_in_pixels: u16,
|
||
|
pub width_in_millimeters: u16,
|
||
|
pub height_in_millimeters: u16,
|
||
|
pub min_installed_maps: u16,
|
||
|
pub max_installed_maps: u16,
|
||
|
pub root_visual: xcb_visualid_t,
|
||
|
pub backing_stores: u8,
|
||
|
pub save_unders: u8,
|
||
|
pub root_depth: u8,
|
||
|
pub allowed_depths_len: u8,
|
||
|
}
|
||
|
|
||
|
#[repr(C)]
|
||
|
pub struct xcb_randr_monitor_info_iterator_t {
|
||
|
pub data: *mut xcb_randr_monitor_info_t,
|
||
|
pub rem: i32,
|
||
|
pub index: i32,
|
||
|
}
|
||
|
|
||
|
#[repr(C)]
|
||
|
pub struct xcb_randr_monitor_info_t {
|
||
|
pub name: xcb_atom_t,
|
||
|
pub primary: u8,
|
||
|
pub automatic: u8,
|
||
|
pub n_output: u16,
|
||
|
pub x: i16,
|
||
|
pub y: i16,
|
||
|
pub width: u16,
|
||
|
pub height: u16,
|
||
|
pub width_mm: u32,
|
||
|
pub height_mm: u32,
|
||
|
}
|
||
|
|
||
|
#[repr(C)]
|
||
|
#[derive(Clone, Copy)]
|
||
|
pub struct xcb_randr_get_monitors_cookie_t {
|
||
|
pub sequence: u32,
|
||
|
}
|
||
|
|
||
|
#[repr(C)]
|
||
|
#[derive(Clone, Copy)]
|
||
|
pub struct xcb_shm_get_image_cookie_t {
|
||
|
pub sequence: u32,
|
||
|
}
|
||
|
|
||
|
#[repr(C)]
|
||
|
#[derive(Clone, Copy)]
|
||
|
pub struct xcb_void_cookie_t {
|
||
|
pub sequence: u32,
|
||
|
}
|
||
|
|
||
|
#[repr(C)]
|
||
|
pub struct xcb_generic_error_t {
|
||
|
pub response_type: u8,
|
||
|
pub error_code: u8,
|
||
|
pub sequence: u16,
|
||
|
pub resource_id: u32,
|
||
|
pub minor_code: u16,
|
||
|
pub major_code: u8,
|
||
|
pub pad0: u8,
|
||
|
pub pad: [u32; 5],
|
||
|
pub full_sequence: u32,
|
||
|
}
|
||
|
|
||
|
#[repr(C)]
|
||
|
pub struct xcb_shm_get_image_reply_t {
|
||
|
pub response_type: u8,
|
||
|
pub depth: u8,
|
||
|
pub sequence: u16,
|
||
|
pub length: u32,
|
||
|
pub visual: xcb_visualid_t,
|
||
|
pub size: u32,
|
||
|
}
|
||
|
|
||
|
#[repr(C)]
|
||
|
pub struct xcb_randr_get_monitors_reply_t {
|
||
|
pub response_type: u8,
|
||
|
pub pad0: u8,
|
||
|
pub sequence: u16,
|
||
|
pub length: u32,
|
||
|
pub timestamp: xcb_timestamp_t,
|
||
|
pub n_monitors: u32,
|
||
|
pub n_outputs: u32,
|
||
|
pub pad1: [u8; 12],
|
||
|
}
|