1191
|
1 #
|
|
2 # $XFree86: xc/lib/Xrandr/Xrandr.h,v 1.9 2002/09/29 23:39:44 keithp Exp $
|
|
3 #
|
|
4 # Copyright (C) 2000 Compaq Computer Corporation, Inc.
|
|
5 # Copyright (C) 2002 Hewlett-Packard Company, Inc.
|
|
6 #
|
|
7 # Permission to use, copy, modify, distribute, and sell this software and its
|
|
8 # documentation for any purpose is hereby granted without fee, provided that
|
|
9 # the above copyright notice appear in all copies and that both that
|
|
10 # copyright notice and this permission notice appear in supporting
|
|
11 # documentation, and that the name of Compaq not be used in advertising or
|
|
12 # publicity pertaining to distribution of the software without specific,
|
|
13 # written prior permission. HP makes no representations about the
|
|
14 # suitability of this software for any purpose. It is provided "as is"
|
|
15 # without express or implied warranty.
|
|
16 #
|
|
17 # HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
|
|
18 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL COMPAQ
|
|
19 # BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
20 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
|
21 # OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
|
22 # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
23 #
|
|
24 # Author: Jim Gettys, HP Labs, HP.
|
|
25 #
|
|
26
|
|
27 import
|
|
28 x, xlib
|
|
29
|
|
30 const
|
|
31 libXrandr* = "libXrandr.so(.2|)"
|
|
32
|
|
33 # * $XFree86: xc/include/extensions/randr.h,v 1.4 2001/11/24 07:24:58 keithp Exp $
|
|
34 # *
|
|
35 # * Copyright (C) 2000, Compaq Computer Corporation,
|
|
36 # * Copyright (C) 2002, Hewlett Packard, Inc.
|
|
37 # *
|
|
38 # * Permission to use, copy, modify, distribute, and sell this software and its
|
|
39 # * documentation for any purpose is hereby granted without fee, provided that
|
|
40 # * the above copyright notice appear in all copies and that both that
|
|
41 # * copyright notice and this permission notice appear in supporting
|
|
42 # * documentation, and that the name of Compaq or HP not be used in advertising
|
|
43 # * or publicity pertaining to distribution of the software without specific,
|
|
44 # * written prior permission. HP makes no representations about the
|
|
45 # * suitability of this software for any purpose. It is provided "as is"
|
|
46 # * without express or implied warranty.
|
|
47 # *
|
|
48 # * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
|
|
49 # * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL HP
|
|
50 # * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
51 # * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
|
52 # * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
|
53 # * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
54 # *
|
|
55 # * Author: Jim Gettys, HP Labs, Hewlett-Packard, Inc.
|
|
56 # *
|
|
57
|
|
58 type
|
|
59 PRotation* = ptr Rotation
|
|
60 Rotation* = cushort
|
|
61
|
|
62 PSizeID* = ptr SizeID
|
|
63 SizeID* = cushort
|
|
64
|
|
65 PSubpixelOrder* = ptr SubpixelOrder
|
|
66 SubpixelOrder* = cushort
|
|
67
|
|
68 PRRCrtc* = ptr RRCrtc
|
|
69 RRCrtc* = XID
|
|
70
|
|
71 PRROutput* = ptr RROutput
|
|
72 RROutput* = XID
|
|
73
|
|
74 PRRMode* = ptr RRMode
|
|
75 RRMode* = XID
|
|
76
|
|
77 PXRRModeFlags* = ptr XRRModeFlags
|
|
78 XRRModeFlags* = culong
|
|
79
|
|
80 PConnection* = ptr Connection
|
|
81 Connection* = cushort
|
|
82
|
|
83 const
|
|
84 RANDR_NAME* = "RANDR"
|
|
85 RANDR_MAJOR* = 1
|
|
86 RANDR_MINOR* = 1
|
|
87 RRNumberErrors* = 0
|
|
88 RRNumberEvents* = 1
|
|
89 constX_RRQueryVersion* = 0 # we skip 1 to make old clients fail pretty immediately
|
|
90 X_RROldGetScreenInfo* = 1
|
|
91 X_RR1_0SetScreenConfig* = 2 # V1.0 apps share the same set screen config request id
|
|
92 constX_RRSetScreenConfig* = 2
|
|
93 X_RROldScreenChangeSelectInput* = 3 # 3 used to be ScreenChangeSelectInput; deprecated
|
|
94 constX_RRSelectInput* = 4
|
|
95 constX_RRGetScreenInfo* = 5 # used in XRRSelectInput
|
|
96 RRScreenChangeNotifyMask* = 1 shl 0
|
|
97 RRScreenChangeNotify* = 0 # used in the rotation field; rotation and reflection in 0.1 proto.
|
|
98 RR_Rotate_0* = 1
|
|
99 RR_Rotate_90* = 2
|
|
100 RR_Rotate_180* = 4
|
|
101 RR_Rotate_270* = 8 # new in 1.0 protocol, to allow reflection of screen
|
|
102 RR_Reflect_X* = 16
|
|
103 RR_Reflect_Y* = 32
|
|
104 RRSetConfigSuccess* = 0
|
|
105 RRSetConfigInvalidConfigTime* = 1
|
|
106 RRSetConfigInvalidTime* = 2
|
|
107 RRSetConfigFailed* = 3
|
|
108 RR_Connected* = 0
|
|
109 RR_Disconnected* = 1
|
|
110 RR_UnknownConnection* = 2
|
|
111
|
|
112 type
|
|
113 PXRRScreenSize* = ptr XRRScreenSize
|
|
114 XRRScreenSize*{.final.} = object #
|
|
115 # Events.
|
|
116 #
|
|
117 width*, height*: cint
|
|
118 mwidth*, mheight*: cint
|
|
119
|
|
120 XRRScreenChangeNotifyEvent*{.final.} = object # internal representation is private to the library
|
|
121 typ*: cint # event base
|
|
122 serial*: culong # # of last request processed by server
|
|
123 send_event*: XBool # true if this came from a SendEvent request
|
|
124 display*: PDisplay # Display the event was read from
|
|
125 window*: Window # window which selected for this event
|
|
126 root*: Window # Root window for changed screen
|
|
127 timestamp*: Time # when the screen change occurred
|
|
128 config_timestamp*: Time # when the last configuration change
|
|
129 size_index*: SizeID
|
|
130 subpixel_order*: SubpixelOrder
|
|
131 rotation*: Rotation
|
|
132 width*: cint
|
|
133 height*: cint
|
|
134 mwidth*: cint
|
|
135 mheight*: cint
|
|
136
|
|
137 PXRRScreenConfiguration* = ptr XRRScreenConfiguration
|
|
138 XRRScreenConfiguration* {.final.} = object
|
|
139
|
|
140 PXRRModeInfo* = ptr XRRModeInfo
|
|
141 XRRModeInfo* {.final.} = object
|
|
142 id*: RRMode
|
|
143 width*, height*: cuint
|
|
144 dotClock*: culong
|
|
145 hSyncStart*, hSyncEnd*, hTotal*, hSkew*: cuint
|
|
146 vSyncStart*, vSyncEnd*, vTotal*: cuint
|
|
147 name*: cstring
|
|
148 nameLength*: cuint
|
|
149 modeFlags*: XRRModeFlags
|
|
150
|
|
151 PXRRScreenResources* = ptr XRRScreenResources
|
|
152 XRRScreenResources* {.final.} = object
|
|
153 timestamp*, configTimestamp*: Time
|
|
154 ncrtc*: cint
|
|
155 crtcs*: ptr UncheckedArray[RRCrtc]
|
|
156 noutput*: cint
|
|
157 outputs*: ptr UncheckedArray[RROutput]
|
|
158 nmode*: cint
|
|
159 modes*: ptr UncheckedArray[XRRModeInfo]
|
|
160
|
|
161 PXRROutputInfo* = ptr XRROutputInfo
|
|
162 XRROutputInfo* {.final.} = object
|
|
163 timestamp*: Time
|
|
164 crtc*: RRCrtc
|
|
165 name*: cstring
|
|
166 nameLen*: cint
|
|
167 mmWidth*, mmHeight*: culong
|
|
168 connection*: Connection
|
|
169 subpixelOrder*: SubpixelOrder
|
|
170 ncrtc*: cint
|
|
171 crtcs*: ptr UncheckedArray[RRCrtc]
|
|
172 nclone*: cint
|
|
173 clones*: ptr UncheckedArray[RROutput]
|
|
174 nmode*, npreferred*: cint
|
|
175 modes*: ptr UncheckedArray[RRMode]
|
|
176
|
|
177 PXRRPropertyInfo* = ptr XRRPropertyInfo
|
|
178 XRRPropertyInfo* {.final.} = object
|
|
179 pending, range, immutable: bool
|
|
180 numValues: cint
|
|
181 values: ptr UncheckedArray[clong]
|
|
182
|
|
183 RandrFormat* = enum
|
|
184 randrFormat16bit = 16, randrFormat32bit = 32
|
|
185
|
|
186 proc XRRQueryExtension*(dpy: PDisplay, event_basep, error_basep: Pcint): XBool{.
|
|
187 cdecl, dynlib: libXrandr, importc.}
|
|
188 proc XRRQueryVersion*(dpy: PDisplay, major_versionp: Pcint,
|
|
189 minor_versionp: Pcint): Status{.cdecl, dynlib: libXrandr,
|
|
190 importc.}
|
|
191 proc XRRQueryOutputProperty*(dpy: PDisplay, output: RROutput, property: Atom):
|
|
192 PXRRPropertyInfo {.cdecl, dynlib: libXrandr, importc.}
|
|
193 proc XRRChangeOutputProperty*(dpy: PDisplay, output: RROutput,
|
|
194 property, kind: Atom, format, mode: cint, data: ptr cuchar, nelements: cint) {.
|
|
195 cdecl, dynlib: libXrandr, importc.}
|
|
196 proc XRRGetScreenInfo*(dpy: PDisplay, draw: Drawable): PXRRScreenConfiguration{.
|
|
197 cdecl, dynlib: libXrandr, importc.}
|
|
198 proc XRRFreeScreenConfigInfo*(config: PXRRScreenConfiguration){.cdecl,
|
|
199 dynlib: libXrandr, importc.}
|
|
200 #
|
|
201 # Note that screen configuration changes are only permitted if the client can
|
|
202 # prove it has up to date configuration information. We are trying to
|
|
203 # insist that it become possible for screens to change dynamically, so
|
|
204 # we want to ensure the client knows what it is talking about when requesting
|
|
205 # changes.
|
|
206 #
|
|
207 proc XRRSetScreenConfig*(dpy: PDisplay, config: PXRRScreenConfiguration,
|
|
208 draw: Drawable, size_index: cint, rotation: Rotation,
|
|
209 timestamp: Time): Status{.cdecl, dynlib: libXrandr,
|
|
210 importc.}
|
|
211 # added in v1.1, sorry for the lame name
|
|
212 proc XRRSetScreenConfigAndRate*(dpy: PDisplay, config: PXRRScreenConfiguration,
|
|
213 draw: Drawable, size_index: cint,
|
|
214 rotation: Rotation, rate: cshort,
|
|
215 timestamp: Time): Status{.cdecl,
|
|
216 dynlib: libXrandr, importc.}
|
|
217 proc XRRConfigRotations*(config: PXRRScreenConfiguration,
|
|
218 current_rotation: PRotation): Rotation{.cdecl,
|
|
219 dynlib: libXrandr, importc.}
|
|
220 proc XRRConfigTimes*(config: PXRRScreenConfiguration, config_timestamp: PTime): Time{.
|
|
221 cdecl, dynlib: libXrandr, importc.}
|
|
222 proc XRRConfigSizes*(config: PXRRScreenConfiguration, nsizes: Pcint): PXRRScreenSize{.
|
|
223 cdecl, dynlib: libXrandr, importc.}
|
|
224 proc XRRConfigRates*(config: PXRRScreenConfiguration, sizeID: cint,
|
|
225 nrates: Pcint): ptr int16{.cdecl, dynlib: libXrandr, importc.}
|
|
226 proc XRRConfigCurrentConfiguration*(config: PXRRScreenConfiguration,
|
|
227 rotation: PRotation): SizeID{.cdecl,
|
|
228 dynlib: libXrandr, importc.}
|
|
229 proc XRRConfigCurrentRate*(config: PXRRScreenConfiguration): cshort{.cdecl,
|
|
230 dynlib: libXrandr, importc.}
|
|
231 proc XRRRootToScreen*(dpy: PDisplay, root: Window): cint{.cdecl,
|
|
232 dynlib: libXrandr, importc.}
|
|
233 #
|
|
234 # returns the screen configuration for the specified screen; does a lazy
|
|
235 # evalution to delay getting the information, and caches the result.
|
|
236 # These routines should be used in preference to XRRGetScreenInfo
|
|
237 # to avoid unneeded round trips to the X server. These are new
|
|
238 # in protocol version 0.1.
|
|
239 #
|
|
240 proc XRRScreenConfig*(dpy: PDisplay, screen: cint): PXRRScreenConfiguration{.
|
|
241 cdecl, dynlib: libXrandr, importc.}
|
|
242 proc XRRConfig*(screen: PScreen): PXRRScreenConfiguration{.cdecl,
|
|
243 dynlib: libXrandr, importc.}
|
|
244 proc XRRSelectInput*(dpy: PDisplay, window: Window, mask: cint){.cdecl,
|
|
245 dynlib: libXrandr, importc.}
|
|
246 #
|
|
247 # the following are always safe to call, even if RandR is not implemented
|
|
248 # on a screen
|
|
249 #
|
|
250 proc XRRRotations*(dpy: PDisplay, screen: cint, current_rotation: PRotation): Rotation{.
|
|
251 cdecl, dynlib: libXrandr, importc.}
|
|
252 proc XRRSizes*(dpy: PDisplay, screen: cint, nsizes: Pcint): PXRRScreenSize{.
|
|
253 cdecl, dynlib: libXrandr, importc.}
|
|
254 proc XRRRates*(dpy: PDisplay, screen: cint, sizeID: cint, nrates: Pcint): ptr int16{.
|
|
255 cdecl, dynlib: libXrandr, importc.}
|
|
256 proc XRRTimes*(dpy: PDisplay, screen: cint, config_timestamp: PTime): Time{.
|
|
257 cdecl, dynlib: libXrandr, importc.}
|
|
258 #
|
|
259 # intended to take RRScreenChangeNotify, or
|
|
260 # ConfigureNotify (on the root window)
|
|
261 # returns 1 if it is an event type it understands, 0 if not
|
|
262 #
|
|
263 proc XRRUpdateConfiguration*(event: PXEvent): cint{.cdecl, dynlib: libXrandr,
|
|
264 importc.}
|
|
265 # implementation
|
|
266 proc XRRGetScreenResourcesCurrent*(dpy: PDisplay, win: Window):
|
|
267 PXRRScreenResources {.cdecl, dynlib: libXrandr, importc.}
|
|
268 proc XRRFreeScreenResources*(res: PXRRScreenResources) {.cdecl,
|
|
269 dynlib: libXrandr, importc.}
|
|
270 proc XRRGetOutputInfo*(dpy: PDisplay, res: PXRRScreenResources, ret: RROutput):
|
|
271 PXRROutputInfo {.cdecl, dynlib: libXrandr, importc.}
|
|
272 proc XRRFreeOutputInfo*(info: PXRROutputInfo) {.cdecl, dynlib: libXrandr,
|
|
273 importc.}
|