Mercurial > games > semicongine
view semiconginev2/thirdparty/x11/xrandr.nim @ 1226:c8e3037aca66 compiletime-tests
add: contrib stuff
author | sam <sam@basx.dev> |
---|---|
date | Wed, 17 Jul 2024 23:41:51 +0700 |
parents | 56781cc0fc7c |
children |
line wrap: on
line source
# # $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.}