wayland-headers 0.2.0+wayland-1.18.0-protocols-1.20

Minimalist Rust FFI bindings for Wayland
Documentation
use crate::prelude::*;

use super::wayland_client::*;

#[derive(Clone, Copy)]
#[repr(C)]
pub struct wl_cursor {
    pub image_count: c_uint,
    pub images: *mut *mut wl_cursor_image,
    pub name: *mut c_char,
}

#[derive(Clone, Copy)]
#[repr(C)]
pub struct wl_cursor_image {
    pub width: u32,
    pub height: u32,
    pub hotspot_x: u32,
    pub hotspot_y: u32,
    pub delay: u32,
}

#[repr(C)]
pub struct wl_cursor_theme {
    _data: (),
    _marker: PhantomData<(*mut u8, PhantomPinned)>,
}

unsafe extern "C" {
    pub fn wl_cursor_frame(cursor: *mut wl_cursor, time: u32) -> c_int;

    pub fn wl_cursor_frame_and_duration(
        cursor: *mut wl_cursor,
        time: u32,
        duration: *mut u32,
    ) -> c_int;

    pub fn wl_cursor_image_get_buffer(image: *mut wl_cursor_image) -> *mut wl_buffer;

    pub fn wl_cursor_theme_destroy(theme: *mut wl_cursor_theme);

    pub fn wl_cursor_theme_get_cursor(
        theme: *mut wl_cursor_theme,
        name: *const c_char,
    ) -> *mut wl_cursor;

    pub fn wl_cursor_theme_load(
        name: *const c_char,
        size: c_int,
        shm: *mut wl_shm,
    ) -> *mut wl_cursor_theme;
}