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
5use std::os::raw::{c_char, c_float, c_int, c_uchar, c_uint, c_ulong, c_ushort};
6
7use super::xlib::{Bool, Display, Time, Window, XEvent};
8
9//
10// functions
11//
12
13x11_link! { Xf86vmode, xxf86vm, ["libXxf86vm.so.1", "libXxf86vm.so"], 22,
14 pub fn XF86VidModeAddModeLine (_4: *mut Display, _3: c_int, _2: *mut XF86VidModeModeInfo, _1: *mut XF86VidModeModeInfo) -> c_int,
15 pub fn XF86VidModeDeleteModeLine (_3: *mut Display, _2: c_int, _1: *mut XF86VidModeModeInfo) -> c_int,
16 pub fn XF86VidModeGetAllModeLines (_4: *mut Display, _3: c_int, _2: *mut c_int, _1: *mut *mut *mut XF86VidModeModeInfo) -> c_int,
17 pub fn XF86VidModeGetDotClocks (_6: *mut Display, _5: c_int, _4: *mut c_int, _3: *mut c_int, _2: *mut c_int, _1: *mut *mut c_int) -> c_int,
18 pub fn XF86VidModeGetGamma (_3: *mut Display, _2: c_int, _1: *mut XF86VidModeGamma) -> c_int,
19 pub fn XF86VidModeGetGammaRamp (_6: *mut Display, _5: c_int, _4: c_int, _3: *mut c_ushort, _2: *mut c_ushort, _1: *mut c_ushort) -> c_int,
20 pub fn XF86VidModeGetGammaRampSize (_3: *mut Display, _2: c_int, _1: *mut c_int) -> c_int,
21 pub fn XF86VidModeGetModeLine (_4: *mut Display, _3: c_int, _2: *mut c_int, _1: *mut XF86VidModeModeLine) -> c_int,
22 pub fn XF86VidModeGetMonitor (_3: *mut Display, _2: c_int, _1: *mut XF86VidModeMonitor) -> c_int,
23 pub fn XF86VidModeGetPermissions (_3: *mut Display, _2: c_int, _1: *mut c_int) -> c_int,
24 pub fn XF86VidModeGetViewPort (_4: *mut Display, _3: c_int, _2: *mut c_int, _1: *mut c_int) -> c_int,
25 pub fn XF86VidModeLockModeSwitch (_3: *mut Display, _2: c_int, _1: c_int) -> c_int,
26 pub fn XF86VidModeModModeLine (_3: *mut Display, _2: c_int, _1: *mut XF86VidModeModeLine) -> c_int,
27 pub fn XF86VidModeQueryExtension (_3: *mut Display, _2: *mut c_int, _1: *mut c_int) -> c_int,
28 pub fn XF86VidModeQueryVersion (_3: *mut Display, _2: *mut c_int, _1: *mut c_int) -> c_int,
29 pub fn XF86VidModeSetClientVersion (_1: *mut Display) -> c_int,
30 pub fn XF86VidModeSetGamma (_3: *mut Display, _2: c_int, _1: *mut XF86VidModeGamma) -> c_int,
31 pub fn XF86VidModeSetGammaRamp (_6: *mut Display, _5: c_int, _4: c_int, _3: *mut c_ushort, _2: *mut c_ushort, _1: *mut c_ushort) -> c_int,
32 pub fn XF86VidModeSetViewPort (_4: *mut Display, _3: c_int, _2: c_int, _1: c_int) -> c_int,
33 pub fn XF86VidModeSwitchMode (_3: *mut Display, _2: c_int, _1: c_int) -> c_int,
34 pub fn XF86VidModeSwitchToMode (_3: *mut Display, _2: c_int, _1: *mut XF86VidModeModeInfo) -> c_int,
35 pub fn XF86VidModeValidateModeLine (_3: *mut Display, _2: c_int, _1: *mut XF86VidModeModeInfo) -> c_int,
36variadic:
37globals:
38}
39
40//
41// types
42//
43
44#[derive(Debug, Clone, Copy)]
45#[repr(C)]
46pub struct XF86VidModeGamma {
47 pub red: c_float,
48 pub green: c_float,
49 pub blue: c_float,
50}
51
52#[derive(Debug, Clone, Copy, PartialEq)]
53#[repr(C)]
54pub struct XF86VidModeModeInfo {
55 pub dotclock: c_uint,
56 pub hdisplay: c_ushort,
57 pub hsyncstart: c_ushort,
58 pub hsyncend: c_ushort,
59 pub htotal: c_ushort,
60 pub hskew: c_ushort,
61 pub vdisplay: c_ushort,
62 pub vsyncstart: c_ushort,
63 pub vsyncend: c_ushort,
64 pub vtotal: c_ushort,
65 pub flags: c_uint,
66 pub privsize: c_int,
67 pub private: *mut i32,
68}
69
70#[derive(Debug, Clone, Copy)]
71#[repr(C)]
72pub struct XF86VidModeModeLine {
73 pub hdisplay: c_ushort,
74 pub hsyncstart: c_ushort,
75 pub hsyncend: c_ushort,
76 pub htotal: c_ushort,
77 pub hskew: c_ushort,
78 pub vdisplay: c_ushort,
79 pub vsyncstart: c_ushort,
80 pub vsyncend: c_ushort,
81 pub vtotal: c_ushort,
82 pub flags: c_uint,
83 pub privsize: c_int,
84 pub private: *mut i32,
85}
86
87#[derive(Debug, Clone, Copy)]
88#[repr(C)]
89pub struct XF86VidModeMonitor {
90 pub vendor: *mut c_char,
91 pub model: *mut c_char,
92 pub EMPTY: c_float,
93 pub nhsync: c_uchar,
94 pub hsync: *mut XF86VidModeSyncRange,
95 pub nvsync: c_uchar,
96 pub vsync: *mut XF86VidModeSyncRange,
97}
98
99#[derive(Debug, Clone, Copy)]
100#[repr(C)]
101pub struct XF86VidModeSyncRange {
102 pub hi: c_float,
103 pub lo: c_float,
104}
105
106//
107// event structures
108//
109
110#[derive(Debug, Clone, Copy)]
111#[repr(C)]
112pub struct XF86VidModeNotifyEvent {
113 pub type_: c_int,
114 pub serial: c_ulong,
115 pub send_event: Bool,
116 pub display: *mut Display,
117 pub root: Window,
118 pub state: c_int,
119 pub kind: c_int,
120 pub forced: Bool,
121 pub time: Time,
122}
123
124event_conversions_and_tests! {
125 xf86vm_notify: XF86VidModeNotifyEvent,
126}
127