1 // x11-rs: Rust bindings for X11 libraries 2 // The X11 libraries are available under the MIT license. 3 // These bindings are public domain. 4 5 use std::os::raw::{ 6 c_char, 7 c_int, 8 c_long, 9 c_uchar, 10 c_uint, 11 c_ulong, 12 c_void, 13 }; 14 use libc::FILE; 15 16 use ::xlib::{ 17 Cursor, 18 Display, 19 XColor, 20 XImage, 21 }; 22 23 24 // 25 // functions 26 // 27 28 29 x11_link! { Xcursor, xcursor, ["libXcursor.so.1", "libXcursor.so"], 59, 30 pub fn XcursorAnimateCreate (_1: *mut XcursorCursors) -> *mut XcursorAnimate, 31 pub fn XcursorAnimateDestroy (_1: *mut XcursorAnimate) -> (), 32 pub fn XcursorAnimateNext (_1: *mut XcursorAnimate) -> c_ulong, 33 pub fn XcursorCommentCreate (_2: c_uint, _1: c_int) -> *mut XcursorComment, 34 pub fn XcursorCommentDestroy (_1: *mut XcursorComment) -> (), 35 pub fn XcursorCommentsCreate (_1: c_int) -> *mut XcursorComments, 36 pub fn XcursorCommentsDestroy (_1: *mut XcursorComments) -> (), 37 pub fn XcursorCursorsCreate (_2: *mut Display, _1: c_int) -> *mut XcursorCursors, 38 pub fn XcursorCursorsDestroy (_1: *mut XcursorCursors) -> (), 39 pub fn XcursorFileLoad (_3: *mut FILE, _2: *mut *mut XcursorComments, _1: *mut *mut XcursorImages) -> c_int, 40 pub fn XcursorFileLoadAllImages (_1: *mut FILE) -> *mut XcursorImages, 41 pub fn XcursorFileLoadImage (_2: *mut FILE, _1: c_int) -> *mut XcursorImage, 42 pub fn XcursorFileLoadImages (_2: *mut FILE, _1: c_int) -> *mut XcursorImages, 43 pub fn XcursorFilenameLoad (_3: *const c_char, _2: *mut *mut XcursorComments, _1: *mut *mut XcursorImages) -> c_int, 44 pub fn XcursorFilenameLoadAllImages (_1: *const c_char) -> *mut XcursorImages, 45 pub fn XcursorFilenameLoadCursor (_2: *mut Display, _1: *const c_char) -> c_ulong, 46 pub fn XcursorFilenameLoadCursors (_2: *mut Display, _1: *const c_char) -> *mut XcursorCursors, 47 pub fn XcursorFilenameLoadImage (_2: *const c_char, _1: c_int) -> *mut XcursorImage, 48 pub fn XcursorFilenameLoadImages (_2: *const c_char, _1: c_int) -> *mut XcursorImages, 49 pub fn XcursorFilenameSave (_3: *const c_char, _2: *const XcursorComments, _1: *const XcursorImages) -> c_int, 50 pub fn XcursorFilenameSaveImages (_2: *const c_char, _1: *const XcursorImages) -> c_int, 51 pub fn XcursorFileSave (_3: *mut FILE, _2: *const XcursorComments, _1: *const XcursorImages) -> c_int, 52 pub fn XcursorFileSaveImages (_2: *mut FILE, _1: *const XcursorImages) -> c_int, 53 pub fn XcursorGetDefaultSize (_1: *mut Display) -> c_int, 54 pub fn XcursorGetTheme (_1: *mut Display) -> *mut c_char, 55 pub fn XcursorGetThemeCore (_1: *mut Display) -> c_int, 56 pub fn XcursorImageCreate (_2: c_int, _1: c_int) -> *mut XcursorImage, 57 pub fn XcursorImageDestroy (_1: *mut XcursorImage) -> (), 58 pub fn XcursorImageHash (_2: *mut XImage, _1: *mut c_uchar) -> (), 59 pub fn XcursorImageLoadCursor (_2: *mut Display, _1: *const XcursorImage) -> c_ulong, 60 pub fn XcursorImagesCreate (_1: c_int) -> *mut XcursorImages, 61 pub fn XcursorImagesDestroy (_1: *mut XcursorImages) -> (), 62 pub fn XcursorImagesLoadCursor (_2: *mut Display, _1: *const XcursorImages) -> c_ulong, 63 pub fn XcursorImagesLoadCursors (_2: *mut Display, _1: *const XcursorImages) -> *mut XcursorCursors, 64 pub fn XcursorImagesSetName (_2: *mut XcursorImages, _1: *const c_char) -> (), 65 pub fn XcursorLibraryLoadCursor (_2: *mut Display, _1: *const c_char) -> c_ulong, 66 pub fn XcursorLibraryLoadCursors (_2: *mut Display, _1: *const c_char) -> *mut XcursorCursors, 67 pub fn XcursorLibraryLoadImage (_3: *const c_char, _2: *const c_char, _1: c_int) -> *mut XcursorImage, 68 pub fn XcursorLibraryLoadImages (_3: *const c_char, _2: *const c_char, _1: c_int) -> *mut XcursorImages, 69 pub fn XcursorLibraryPath () -> *const c_char, 70 pub fn XcursorLibraryShape (_1: *const c_char) -> c_int, 71 pub fn XcursorNoticeCreateBitmap (_4: *mut Display, _3: c_ulong, _2: c_uint, _1: c_uint) -> (), 72 pub fn XcursorNoticePutBitmap (_3: *mut Display, _2: c_ulong, _1: *mut XImage) -> (), 73 pub fn XcursorSetDefaultSize (_2: *mut Display, _1: c_int) -> c_int, 74 pub fn XcursorSetTheme (_2: *mut Display, _1: *const c_char) -> c_int, 75 pub fn XcursorSetThemeCore (_2: *mut Display, _1: c_int) -> c_int, 76 pub fn XcursorShapeLoadCursor (_2: *mut Display, _1: c_uint) -> c_ulong, 77 pub fn XcursorShapeLoadCursors (_2: *mut Display, _1: c_uint) -> *mut XcursorCursors, 78 pub fn XcursorShapeLoadImage (_3: c_uint, _2: *const c_char, _1: c_int) -> *mut XcursorImage, 79 pub fn XcursorShapeLoadImages (_3: c_uint, _2: *const c_char, _1: c_int) -> *mut XcursorImages, 80 pub fn XcursorSupportsAnim (_1: *mut Display) -> c_int, 81 pub fn XcursorSupportsARGB (_1: *mut Display) -> c_int, 82 pub fn XcursorTryShapeBitmapCursor (_7: *mut Display, _6: c_ulong, _5: c_ulong, _4: *mut XColor, _3: *mut XColor, _2: c_uint, _1: c_uint) -> c_ulong, 83 pub fn XcursorTryShapeCursor (_7: *mut Display, _6: c_ulong, _5: c_ulong, _4: c_uint, _3: c_uint, _2: *const XColor, _1: *const XColor) -> c_ulong, 84 pub fn XcursorXcFileLoad (_3: *mut XcursorFile, _2: *mut *mut XcursorComments, _1: *mut *mut XcursorImages) -> c_int, 85 pub fn XcursorXcFileLoadAllImages (_1: *mut XcursorFile) -> *mut XcursorImages, 86 pub fn XcursorXcFileLoadImage (_2: *mut XcursorFile, _1: c_int) -> *mut XcursorImage, 87 pub fn XcursorXcFileLoadImages (_2: *mut XcursorFile, _1: c_int) -> *mut XcursorImages, 88 pub fn XcursorXcFileSave (_3: *mut XcursorFile, _2: *const XcursorComments, _1: *const XcursorImages) -> c_int, 89 variadic: 90 globals: 91 } 92 93 94 // 95 // types 96 // 97 98 99 pub type XcursorBool = c_int; 100 pub type XcursorDim = XcursorUInt; 101 pub type XcursorPixel = XcursorUInt; 102 pub type XcursorUInt = c_uint; 103 104 #[derive(Debug, Clone, Copy)] 105 #[repr(C)] 106 pub struct _XcursorAnimate { 107 pub cursors: *mut XcursorCursors, 108 pub sequence: c_int, 109 } 110 pub type XcursorAnimate = _XcursorAnimate; 111 112 #[derive(Debug, Clone, Copy)] 113 #[repr(C)] 114 pub struct _XcursorChunkHeader { 115 pub header: XcursorUInt, 116 pub type_: XcursorUInt, 117 pub subtype: XcursorUInt, 118 pub version: XcursorUInt, 119 } 120 pub type XcursorChunkHeader = _XcursorChunkHeader; 121 122 #[derive(Debug, Clone, Copy)] 123 #[repr(C)] 124 pub struct _XcursorComment { 125 pub version: XcursorUInt, 126 pub comment_type: XcursorUInt, 127 pub comment: *mut c_char, 128 } 129 pub type XcursorComment = _XcursorComment; 130 131 #[derive(Debug, Clone, Copy)] 132 #[repr(C)] 133 pub struct _XcursorComments { 134 pub ncomment: c_int, 135 pub comments: *mut *mut XcursorComment, 136 } 137 pub type XcursorComments = _XcursorComments; 138 139 #[derive(Debug, Clone, Copy)] 140 #[repr(C)] 141 pub struct _XcursorCursors { 142 pub dpy: *mut Display, 143 pub ref_: c_int, 144 pub ncursor: c_int, 145 pub cursors: *mut Cursor, 146 } 147 pub type XcursorCursors = _XcursorCursors; 148 149 #[derive(Debug, Copy)] 150 #[repr(C)] 151 pub struct _XcursorFile { 152 pub closure: *mut c_void, 153 pub read: Option<unsafe extern "C" fn (*mut XcursorFile, *mut c_uchar, c_int) -> c_int>, 154 pub write: Option<unsafe extern "C" fn (*mut XcursorFile, *mut c_uchar, c_int) -> c_int>, 155 pub seek: Option<unsafe extern "C" fn (*mut XcursorFile, c_long, c_int) -> c_int>, 156 } 157 pub type XcursorFile = _XcursorFile; 158 159 impl Clone for _XcursorFile { clone(&self) -> _XcursorFile160 fn clone (&self) -> _XcursorFile { 161 _XcursorFile { 162 closure: self.closure, 163 read: self.read, 164 write: self.write, 165 seek: self.seek, 166 } 167 } 168 } 169 170 #[derive(Debug, Clone, Copy)] 171 #[repr(C)] 172 pub struct _XcursorFileHeader { 173 pub magic: XcursorUInt, 174 pub header: XcursorUInt, 175 pub version: XcursorUInt, 176 pub ntoc: XcursorUInt, 177 pub tocs: *mut XcursorFileToc, 178 } 179 pub type XcursorFileHeader = _XcursorFileHeader; 180 181 #[derive(Debug, Clone, Copy)] 182 #[repr(C)] 183 pub struct _XcursorFileToc { 184 pub type_: XcursorUInt, 185 pub subtype: XcursorUInt, 186 pub position: XcursorUInt, 187 } 188 pub type XcursorFileToc = _XcursorFileToc; 189 190 #[derive(Debug, Clone, Copy)] 191 #[repr(C)] 192 pub struct _XcursorImage { 193 pub version: XcursorUInt, 194 pub size: XcursorDim, 195 pub width: XcursorDim, 196 pub height: XcursorDim, 197 pub xhot: XcursorDim, 198 pub yhot: XcursorDim, 199 pub delay: XcursorUInt, 200 pub pixels: *mut XcursorPixel, 201 } 202 pub type XcursorImage = _XcursorImage; 203 204 #[derive(Debug, Clone, Copy)] 205 #[repr(C)] 206 pub struct _XcursorImages { 207 pub nimage: c_int, 208 pub images: *mut *mut XcursorImage, 209 pub name: *mut c_char, 210 } 211 pub type XcursorImages = _XcursorImages; 212