Mercurial > games > semicongine
diff semiconginev2/thirdparty/x11/xrandr.nim @ 1218:56781cc0fc7c compiletime-tests
did: renamge main package
author | sam <sam@basx.dev> |
---|---|
date | Wed, 17 Jul 2024 21:01:37 +0700 |
parents | semicongine/old/thirdparty/x11/xrandr.nim@239adab121a3 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/semiconginev2/thirdparty/x11/xrandr.nim Wed Jul 17 21:01:37 2024 +0700 @@ -0,0 +1,273 @@ +# +# $XFree86: xc/lib/Xrandr/Xrandr.h,v 1.9 2002/09/29 23:39:44 keithp Exp $ +# +# Copyright (C) 2000 Compaq Computer Corporation, Inc. +# Copyright (C) 2002 Hewlett-Packard Company, Inc. +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of Compaq not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. HP makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL COMPAQ +# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# +# Author: Jim Gettys, HP Labs, HP. +# + +import + x, xlib + +const + libXrandr* = "libXrandr.so(.2|)" + +# * $XFree86: xc/include/extensions/randr.h,v 1.4 2001/11/24 07:24:58 keithp Exp $ +# * +# * Copyright (C) 2000, Compaq Computer Corporation, +# * Copyright (C) 2002, Hewlett Packard, Inc. +# * +# * Permission to use, copy, modify, distribute, and sell this software and its +# * documentation for any purpose is hereby granted without fee, provided that +# * the above copyright notice appear in all copies and that both that +# * copyright notice and this permission notice appear in supporting +# * documentation, and that the name of Compaq or HP not be used in advertising +# * or publicity pertaining to distribution of the software without specific, +# * written prior permission. HP makes no representations about the +# * suitability of this software for any purpose. It is provided "as is" +# * without express or implied warranty. +# * +# * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL +# * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL HP +# * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +# * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +# * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# * +# * Author: Jim Gettys, HP Labs, Hewlett-Packard, Inc. +# * + +type + PRotation* = ptr Rotation + Rotation* = cushort + + PSizeID* = ptr SizeID + SizeID* = cushort + + PSubpixelOrder* = ptr SubpixelOrder + SubpixelOrder* = cushort + + PRRCrtc* = ptr RRCrtc + RRCrtc* = XID + + PRROutput* = ptr RROutput + RROutput* = XID + + PRRMode* = ptr RRMode + RRMode* = XID + + PXRRModeFlags* = ptr XRRModeFlags + XRRModeFlags* = culong + + PConnection* = ptr Connection + Connection* = cushort + +const + RANDR_NAME* = "RANDR" + RANDR_MAJOR* = 1 + RANDR_MINOR* = 1 + RRNumberErrors* = 0 + RRNumberEvents* = 1 + constX_RRQueryVersion* = 0 # we skip 1 to make old clients fail pretty immediately + X_RROldGetScreenInfo* = 1 + X_RR1_0SetScreenConfig* = 2 # V1.0 apps share the same set screen config request id + constX_RRSetScreenConfig* = 2 + X_RROldScreenChangeSelectInput* = 3 # 3 used to be ScreenChangeSelectInput; deprecated + constX_RRSelectInput* = 4 + constX_RRGetScreenInfo* = 5 # used in XRRSelectInput + RRScreenChangeNotifyMask* = 1 shl 0 + RRScreenChangeNotify* = 0 # used in the rotation field; rotation and reflection in 0.1 proto. + RR_Rotate_0* = 1 + RR_Rotate_90* = 2 + RR_Rotate_180* = 4 + RR_Rotate_270* = 8 # new in 1.0 protocol, to allow reflection of screen + RR_Reflect_X* = 16 + RR_Reflect_Y* = 32 + RRSetConfigSuccess* = 0 + RRSetConfigInvalidConfigTime* = 1 + RRSetConfigInvalidTime* = 2 + RRSetConfigFailed* = 3 + RR_Connected* = 0 + RR_Disconnected* = 1 + RR_UnknownConnection* = 2 + +type + PXRRScreenSize* = ptr XRRScreenSize + XRRScreenSize*{.final.} = object # + # Events. + # + width*, height*: cint + mwidth*, mheight*: cint + + XRRScreenChangeNotifyEvent*{.final.} = object # internal representation is private to the library + typ*: cint # event base + serial*: culong # # of last request processed by server + send_event*: XBool # true if this came from a SendEvent request + display*: PDisplay # Display the event was read from + window*: Window # window which selected for this event + root*: Window # Root window for changed screen + timestamp*: Time # when the screen change occurred + config_timestamp*: Time # when the last configuration change + size_index*: SizeID + subpixel_order*: SubpixelOrder + rotation*: Rotation + width*: cint + height*: cint + mwidth*: cint + mheight*: cint + + PXRRScreenConfiguration* = ptr XRRScreenConfiguration + XRRScreenConfiguration* {.final.} = object + + PXRRModeInfo* = ptr XRRModeInfo + XRRModeInfo* {.final.} = object + id*: RRMode + width*, height*: cuint + dotClock*: culong + hSyncStart*, hSyncEnd*, hTotal*, hSkew*: cuint + vSyncStart*, vSyncEnd*, vTotal*: cuint + name*: cstring + nameLength*: cuint + modeFlags*: XRRModeFlags + + PXRRScreenResources* = ptr XRRScreenResources + XRRScreenResources* {.final.} = object + timestamp*, configTimestamp*: Time + ncrtc*: cint + crtcs*: ptr UncheckedArray[RRCrtc] + noutput*: cint + outputs*: ptr UncheckedArray[RROutput] + nmode*: cint + modes*: ptr UncheckedArray[XRRModeInfo] + + PXRROutputInfo* = ptr XRROutputInfo + XRROutputInfo* {.final.} = object + timestamp*: Time + crtc*: RRCrtc + name*: cstring + nameLen*: cint + mmWidth*, mmHeight*: culong + connection*: Connection + subpixelOrder*: SubpixelOrder + ncrtc*: cint + crtcs*: ptr UncheckedArray[RRCrtc] + nclone*: cint + clones*: ptr UncheckedArray[RROutput] + nmode*, npreferred*: cint + modes*: ptr UncheckedArray[RRMode] + + PXRRPropertyInfo* = ptr XRRPropertyInfo + XRRPropertyInfo* {.final.} = object + pending, range, immutable: bool + numValues: cint + values: ptr UncheckedArray[clong] + + RandrFormat* = enum + randrFormat16bit = 16, randrFormat32bit = 32 + +proc XRRQueryExtension*(dpy: PDisplay, event_basep, error_basep: Pcint): XBool{. + cdecl, dynlib: libXrandr, importc.} +proc XRRQueryVersion*(dpy: PDisplay, major_versionp: Pcint, + minor_versionp: Pcint): Status{.cdecl, dynlib: libXrandr, + importc.} +proc XRRQueryOutputProperty*(dpy: PDisplay, output: RROutput, property: Atom): + PXRRPropertyInfo {.cdecl, dynlib: libXrandr, importc.} +proc XRRChangeOutputProperty*(dpy: PDisplay, output: RROutput, + property, kind: Atom, format, mode: cint, data: ptr cuchar, nelements: cint) {. + cdecl, dynlib: libXrandr, importc.} +proc XRRGetScreenInfo*(dpy: PDisplay, draw: Drawable): PXRRScreenConfiguration{. + cdecl, dynlib: libXrandr, importc.} +proc XRRFreeScreenConfigInfo*(config: PXRRScreenConfiguration){.cdecl, + dynlib: libXrandr, importc.} + # + # Note that screen configuration changes are only permitted if the client can + # prove it has up to date configuration information. We are trying to + # insist that it become possible for screens to change dynamically, so + # we want to ensure the client knows what it is talking about when requesting + # changes. + # +proc XRRSetScreenConfig*(dpy: PDisplay, config: PXRRScreenConfiguration, + draw: Drawable, size_index: cint, rotation: Rotation, + timestamp: Time): Status{.cdecl, dynlib: libXrandr, + importc.} + # added in v1.1, sorry for the lame name +proc XRRSetScreenConfigAndRate*(dpy: PDisplay, config: PXRRScreenConfiguration, + draw: Drawable, size_index: cint, + rotation: Rotation, rate: cshort, + timestamp: Time): Status{.cdecl, + dynlib: libXrandr, importc.} +proc XRRConfigRotations*(config: PXRRScreenConfiguration, + current_rotation: PRotation): Rotation{.cdecl, + dynlib: libXrandr, importc.} +proc XRRConfigTimes*(config: PXRRScreenConfiguration, config_timestamp: PTime): Time{. + cdecl, dynlib: libXrandr, importc.} +proc XRRConfigSizes*(config: PXRRScreenConfiguration, nsizes: Pcint): PXRRScreenSize{. + cdecl, dynlib: libXrandr, importc.} +proc XRRConfigRates*(config: PXRRScreenConfiguration, sizeID: cint, + nrates: Pcint): ptr int16{.cdecl, dynlib: libXrandr, importc.} +proc XRRConfigCurrentConfiguration*(config: PXRRScreenConfiguration, + rotation: PRotation): SizeID{.cdecl, + dynlib: libXrandr, importc.} +proc XRRConfigCurrentRate*(config: PXRRScreenConfiguration): cshort{.cdecl, + dynlib: libXrandr, importc.} +proc XRRRootToScreen*(dpy: PDisplay, root: Window): cint{.cdecl, + dynlib: libXrandr, importc.} + # + # returns the screen configuration for the specified screen; does a lazy + # evalution to delay getting the information, and caches the result. + # These routines should be used in preference to XRRGetScreenInfo + # to avoid unneeded round trips to the X server. These are new + # in protocol version 0.1. + # +proc XRRScreenConfig*(dpy: PDisplay, screen: cint): PXRRScreenConfiguration{. + cdecl, dynlib: libXrandr, importc.} +proc XRRConfig*(screen: PScreen): PXRRScreenConfiguration{.cdecl, + dynlib: libXrandr, importc.} +proc XRRSelectInput*(dpy: PDisplay, window: Window, mask: cint){.cdecl, + dynlib: libXrandr, importc.} + # + # the following are always safe to call, even if RandR is not implemented + # on a screen + # +proc XRRRotations*(dpy: PDisplay, screen: cint, current_rotation: PRotation): Rotation{. + cdecl, dynlib: libXrandr, importc.} +proc XRRSizes*(dpy: PDisplay, screen: cint, nsizes: Pcint): PXRRScreenSize{. + cdecl, dynlib: libXrandr, importc.} +proc XRRRates*(dpy: PDisplay, screen: cint, sizeID: cint, nrates: Pcint): ptr int16{. + cdecl, dynlib: libXrandr, importc.} +proc XRRTimes*(dpy: PDisplay, screen: cint, config_timestamp: PTime): Time{. + cdecl, dynlib: libXrandr, importc.} + # + # intended to take RRScreenChangeNotify, or + # ConfigureNotify (on the root window) + # returns 1 if it is an event type it understands, 0 if not + # +proc XRRUpdateConfiguration*(event: PXEvent): cint{.cdecl, dynlib: libXrandr, + importc.} +# implementation +proc XRRGetScreenResourcesCurrent*(dpy: PDisplay, win: Window): + PXRRScreenResources {.cdecl, dynlib: libXrandr, importc.} +proc XRRFreeScreenResources*(res: PXRRScreenResources) {.cdecl, + dynlib: libXrandr, importc.} +proc XRRGetOutputInfo*(dpy: PDisplay, res: PXRRScreenResources, ret: RROutput): + PXRROutputInfo {.cdecl, dynlib: libXrandr, importc.} +proc XRRFreeOutputInfo*(info: PXRROutputInfo) {.cdecl, dynlib: libXrandr, + importc.}