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