123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- #
- # $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"
-
- # * $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 TRotation
- TRotation* = cushort
- PSizeID* = ptr TSizeID
- TSizeID* = cushort
- PSubpixelOrder* = ptr TSubpixelOrder
- TSubpixelOrder* = 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
- type
- PXRRScreenSize* = ptr TXRRScreenSize
- TXRRScreenSize*{.final.} = object #
- # Events.
- #
- width*, height*: cint
- mwidth*, mheight*: cint
- TXRRScreenChangeNotifyEvent*{.final.} = object # internal representation is private to the library
- typ*: cint # event base
- serial*: culong # # of last request processed by server
- send_event*: TBool # true if this came from a SendEvent request
- display*: PDisplay # Display the event was read from
- window*: TWindow # window which selected for this event
- root*: TWindow # Root window for changed screen
- timestamp*: TTime # when the screen change occurred
- config_timestamp*: TTime # when the last configuration change
- size_index*: TSizeID
- subpixel_order*: TSubpixelOrder
- rotation*: TRotation
- width*: cint
- height*: cint
- mwidth*: cint
- mheight*: cint
- PXRRScreenConfiguration* = ptr TXRRScreenConfiguration
- TXRRScreenConfiguration*{.final.} = object
- proc XRRQueryExtension*(dpy: PDisplay, event_basep, error_basep: Pcint): TBool{.
- cdecl, dynlib: libXrandr, importc.}
- proc XRRQueryVersion*(dpy: PDisplay, major_versionp: Pcint,
- minor_versionp: Pcint): TStatus{.cdecl, dynlib: libXrandr,
- importc.}
- proc XRRGetScreenInfo*(dpy: PDisplay, draw: TDrawable): 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: TDrawable, size_index: cint, rotation: TRotation,
- timestamp: TTime): TStatus{.cdecl, dynlib: libXrandr,
- importc.}
- # added in v1.1, sorry for the lame name
- proc XRRSetScreenConfigAndRate*(dpy: PDisplay, config: PXRRScreenConfiguration,
- draw: TDrawable, size_index: cint,
- rotation: TRotation, rate: cshort,
- timestamp: TTime): TStatus{.cdecl,
- dynlib: libXrandr, importc.}
- proc XRRConfigRotations*(config: PXRRScreenConfiguration,
- current_rotation: PRotation): TRotation{.cdecl,
- dynlib: libXrandr, importc.}
- proc XRRConfigTimes*(config: PXRRScreenConfiguration, config_timestamp: PTime): TTime{.
- 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): TSizeID{.cdecl,
- dynlib: libXrandr, importc.}
- proc XRRConfigCurrentRate*(config: PXRRScreenConfiguration): cshort{.cdecl,
- dynlib: libXrandr, importc.}
- proc XRRRootToScreen*(dpy: PDisplay, root: TWindow): 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: TWindow, 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): TRotation{.
- 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): TTime{.
- 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
|