123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587 |
- /*
- * Copyright © 2000 Compaq Computer Corporation, Inc.
- * Copyright © 2002 Hewlett-Packard Company, Inc.
- * Copyright © 2006 Intel Corporation
- * Copyright © 2008 Red Hat, 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 the copyright holders not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. The copyright holders make no representations
- * about the suitability of this software for any purpose. It is provided "as
- * is" without express or implied warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THE COPYRIGHT HOLDERS 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.
- * Keith Packard, Intel Corporation
- */
- #ifndef _XRANDR_H_
- #define _XRANDR_H_
- #include <X11/extensions/randr.h>
- #include <X11/extensions/Xrender.h>
- #include <X11/Xfuncproto.h>
- _XFUNCPROTOBEGIN
- typedef XID RROutput;
- typedef XID RRCrtc;
- typedef XID RRMode;
- typedef XID RRProvider;
- typedef struct {
- int width, height;
- int mwidth, mheight;
- } XRRScreenSize;
- /*
- * Events.
- */
- typedef struct {
- int type; /* event base */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* window which selected for this event */
- Window root; /* Root window for changed screen */
- Time timestamp; /* when the screen change occurred */
- Time config_timestamp; /* when the last configuration change */
- SizeID size_index;
- SubpixelOrder subpixel_order;
- Rotation rotation;
- int width;
- int height;
- int mwidth;
- int mheight;
- } XRRScreenChangeNotifyEvent;
- typedef struct {
- int type; /* event base */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* window which selected for this event */
- int subtype; /* RRNotify_ subtype */
- } XRRNotifyEvent;
- typedef struct {
- int type; /* event base */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* window which selected for this event */
- int subtype; /* RRNotify_OutputChange */
- RROutput output; /* affected output */
- RRCrtc crtc; /* current crtc (or None) */
- RRMode mode; /* current mode (or None) */
- Rotation rotation; /* current rotation of associated crtc */
- Connection connection; /* current connection status */
- SubpixelOrder subpixel_order;
- } XRROutputChangeNotifyEvent;
- typedef struct {
- int type; /* event base */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* window which selected for this event */
- int subtype; /* RRNotify_CrtcChange */
- RRCrtc crtc; /* current crtc (or None) */
- RRMode mode; /* current mode (or None) */
- Rotation rotation; /* current rotation of associated crtc */
- int x, y; /* position */
- unsigned int width, height; /* size */
- } XRRCrtcChangeNotifyEvent;
- typedef struct {
- int type; /* event base */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* window which selected for this event */
- int subtype; /* RRNotify_OutputProperty */
- RROutput output; /* related output */
- Atom property; /* changed property */
- Time timestamp; /* time of change */
- int state; /* NewValue, Deleted */
- } XRROutputPropertyNotifyEvent;
- typedef struct {
- int type; /* event base */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* window which selected for this event */
- int subtype; /* RRNotify_ProviderChange */
- RRProvider provider; /* current provider (or None) */
- Time timestamp; /* time of change */
- unsigned int current_role;
- } XRRProviderChangeNotifyEvent;
- typedef struct {
- int type; /* event base */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* window which selected for this event */
- int subtype; /* RRNotify_ProviderProperty */
- RRProvider provider; /* related provider */
- Atom property; /* changed property */
- Time timestamp; /* time of change */
- int state; /* NewValue, Deleted */
- } XRRProviderPropertyNotifyEvent;
- typedef struct {
- int type; /* event base */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* window which selected for this event */
- int subtype; /* RRNotify_ResourceChange */
- Time timestamp; /* time of change */
- } XRRResourceChangeNotifyEvent;
- /* internal representation is private to the library */
- typedef struct _XRRScreenConfiguration XRRScreenConfiguration;
- Bool XRRQueryExtension (Display *dpy,
- int *event_base_return,
- int *error_base_return);
- Status XRRQueryVersion (Display *dpy,
- int *major_version_return,
- int *minor_version_return);
- XRRScreenConfiguration *XRRGetScreenInfo (Display *dpy,
- Window window);
- void XRRFreeScreenConfigInfo (XRRScreenConfiguration *config);
- /*
- * 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.
- */
- Status XRRSetScreenConfig (Display *dpy,
- XRRScreenConfiguration *config,
- Drawable draw,
- int size_index,
- Rotation rotation,
- Time timestamp);
- /* added in v1.1, sorry for the lame name */
- Status XRRSetScreenConfigAndRate (Display *dpy,
- XRRScreenConfiguration *config,
- Drawable draw,
- int size_index,
- Rotation rotation,
- short rate,
- Time timestamp);
- Rotation XRRConfigRotations(XRRScreenConfiguration *config, Rotation *current_rotation);
- Time XRRConfigTimes (XRRScreenConfiguration *config, Time *config_timestamp);
- XRRScreenSize *XRRConfigSizes(XRRScreenConfiguration *config, int *nsizes);
- short *XRRConfigRates (XRRScreenConfiguration *config, int sizeID, int *nrates);
- SizeID XRRConfigCurrentConfiguration (XRRScreenConfiguration *config,
- Rotation *rotation);
- short XRRConfigCurrentRate (XRRScreenConfiguration *config);
- int XRRRootToScreen(Display *dpy, Window root);
- /*
- * 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.
- */
- void XRRSelectInput(Display *dpy, Window window, int mask);
- /*
- * the following are always safe to call, even if RandR is not implemented
- * on a screen
- */
- Rotation XRRRotations(Display *dpy, int screen, Rotation *current_rotation);
- XRRScreenSize *XRRSizes(Display *dpy, int screen, int *nsizes);
- short *XRRRates (Display *dpy, int screen, int sizeID, int *nrates);
- Time XRRTimes (Display *dpy, int screen, Time *config_timestamp);
- /* Version 1.2 additions */
- /* despite returning a Status, this returns 1 for success */
- Status
- XRRGetScreenSizeRange (Display *dpy, Window window,
- int *minWidth, int *minHeight,
- int *maxWidth, int *maxHeight);
- void
- XRRSetScreenSize (Display *dpy, Window window,
- int width, int height,
- int mmWidth, int mmHeight);
- typedef unsigned long XRRModeFlags;
- typedef struct _XRRModeInfo {
- RRMode id;
- unsigned int width;
- unsigned int height;
- unsigned long dotClock;
- unsigned int hSyncStart;
- unsigned int hSyncEnd;
- unsigned int hTotal;
- unsigned int hSkew;
- unsigned int vSyncStart;
- unsigned int vSyncEnd;
- unsigned int vTotal;
- char *name;
- unsigned int nameLength;
- XRRModeFlags modeFlags;
- } XRRModeInfo;
- typedef struct _XRRScreenResources {
- Time timestamp;
- Time configTimestamp;
- int ncrtc;
- RRCrtc *crtcs;
- int noutput;
- RROutput *outputs;
- int nmode;
- XRRModeInfo *modes;
- } XRRScreenResources;
- XRRScreenResources *
- XRRGetScreenResources (Display *dpy, Window window);
- void
- XRRFreeScreenResources (XRRScreenResources *resources);
- typedef struct _XRROutputInfo {
- Time timestamp;
- RRCrtc crtc;
- char *name;
- int nameLen;
- unsigned long mm_width;
- unsigned long mm_height;
- Connection connection;
- SubpixelOrder subpixel_order;
- int ncrtc;
- RRCrtc *crtcs;
- int nclone;
- RROutput *clones;
- int nmode;
- int npreferred;
- RRMode *modes;
- } XRROutputInfo;
- XRROutputInfo *
- XRRGetOutputInfo (Display *dpy, XRRScreenResources *resources, RROutput output);
- void
- XRRFreeOutputInfo (XRROutputInfo *outputInfo);
- Atom *
- XRRListOutputProperties (Display *dpy, RROutput output, int *nprop);
- typedef struct {
- Bool pending;
- Bool range;
- Bool immutable;
- int num_values;
- long *values;
- } XRRPropertyInfo;
- XRRPropertyInfo *
- XRRQueryOutputProperty (Display *dpy, RROutput output, Atom property);
- void
- XRRConfigureOutputProperty (Display *dpy, RROutput output, Atom property,
- Bool pending, Bool range, int num_values,
- long *values);
- void
- XRRChangeOutputProperty (Display *dpy, RROutput output,
- Atom property, Atom type,
- int format, int mode,
- _Xconst unsigned char *data, int nelements);
- void
- XRRDeleteOutputProperty (Display *dpy, RROutput output, Atom property);
- int
- XRRGetOutputProperty (Display *dpy, RROutput output,
- Atom property, long offset, long length,
- Bool _delete, Bool pending, Atom req_type,
- Atom *actual_type, int *actual_format,
- unsigned long *nitems, unsigned long *bytes_after,
- unsigned char **prop);
- XRRModeInfo *
- XRRAllocModeInfo (_Xconst char *name, int nameLength);
- RRMode
- XRRCreateMode (Display *dpy, Window window, XRRModeInfo *modeInfo);
- void
- XRRDestroyMode (Display *dpy, RRMode mode);
- void
- XRRAddOutputMode (Display *dpy, RROutput output, RRMode mode);
- void
- XRRDeleteOutputMode (Display *dpy, RROutput output, RRMode mode);
- void
- XRRFreeModeInfo (XRRModeInfo *modeInfo);
- typedef struct _XRRCrtcInfo {
- Time timestamp;
- int x, y;
- unsigned int width, height;
- RRMode mode;
- Rotation rotation;
- int noutput;
- RROutput *outputs;
- Rotation rotations;
- int npossible;
- RROutput *possible;
- } XRRCrtcInfo;
- XRRCrtcInfo *
- XRRGetCrtcInfo (Display *dpy, XRRScreenResources *resources, RRCrtc crtc);
- void
- XRRFreeCrtcInfo (XRRCrtcInfo *crtcInfo);
- Status
- XRRSetCrtcConfig (Display *dpy,
- XRRScreenResources *resources,
- RRCrtc crtc,
- Time timestamp,
- int x, int y,
- RRMode mode,
- Rotation rotation,
- RROutput *outputs,
- int noutputs);
- int
- XRRGetCrtcGammaSize (Display *dpy, RRCrtc crtc);
- typedef struct _XRRCrtcGamma {
- int size;
- unsigned short *red;
- unsigned short *green;
- unsigned short *blue;
- } XRRCrtcGamma;
- XRRCrtcGamma *
- XRRGetCrtcGamma (Display *dpy, RRCrtc crtc);
- XRRCrtcGamma *
- XRRAllocGamma (int size);
- void
- XRRSetCrtcGamma (Display *dpy, RRCrtc crtc, XRRCrtcGamma *gamma);
- void
- XRRFreeGamma (XRRCrtcGamma *gamma);
- /* Version 1.3 additions */
- XRRScreenResources *
- XRRGetScreenResourcesCurrent (Display *dpy, Window window);
- void
- XRRSetCrtcTransform (Display *dpy,
- RRCrtc crtc,
- XTransform *transform,
- _Xconst char *filter,
- XFixed *params,
- int nparams);
- typedef struct _XRRCrtcTransformAttributes {
- XTransform pendingTransform;
- char *pendingFilter;
- int pendingNparams;
- XFixed *pendingParams;
- XTransform currentTransform;
- char *currentFilter;
- int currentNparams;
- XFixed *currentParams;
- } XRRCrtcTransformAttributes;
- /*
- * Get current crtc transforms and filters.
- * Pass *attributes to XFree to free
- */
- Status
- XRRGetCrtcTransform (Display *dpy,
- RRCrtc crtc,
- XRRCrtcTransformAttributes **attributes);
- /*
- * intended to take RRScreenChangeNotify, or
- * ConfigureNotify (on the root window)
- * returns 1 if it is an event type it understands, 0 if not
- */
- int XRRUpdateConfiguration(XEvent *event);
- typedef struct _XRRPanning {
- Time timestamp;
- unsigned int left;
- unsigned int top;
- unsigned int width;
- unsigned int height;
- unsigned int track_left;
- unsigned int track_top;
- unsigned int track_width;
- unsigned int track_height;
- int border_left;
- int border_top;
- int border_right;
- int border_bottom;
- } XRRPanning;
- XRRPanning *
- XRRGetPanning (Display *dpy, XRRScreenResources *resources, RRCrtc crtc);
- void
- XRRFreePanning (XRRPanning *panning);
- Status
- XRRSetPanning (Display *dpy,
- XRRScreenResources *resources,
- RRCrtc crtc,
- XRRPanning *panning);
- void
- XRRSetOutputPrimary(Display *dpy,
- Window window,
- RROutput output);
- RROutput
- XRRGetOutputPrimary(Display *dpy,
- Window window);
- typedef struct _XRRProviderResources {
- Time timestamp;
- int nproviders;
- RRProvider *providers;
- } XRRProviderResources;
- XRRProviderResources *
- XRRGetProviderResources(Display *dpy, Window window);
- void
- XRRFreeProviderResources(XRRProviderResources *resources);
- typedef struct _XRRProviderInfo {
- unsigned int capabilities;
- int ncrtcs;
- RRCrtc *crtcs;
- int noutputs;
- RROutput *outputs;
- char *name;
- int nassociatedproviders;
- RRProvider *associated_providers;
- unsigned int *associated_capability;
- int nameLen;
- } XRRProviderInfo;
-
- XRRProviderInfo *
- XRRGetProviderInfo(Display *dpy, XRRScreenResources *resources, RRProvider provider);
- void
- XRRFreeProviderInfo(XRRProviderInfo *provider);
- int
- XRRSetProviderOutputSource(Display *dpy, XID provider, XID source_provider);
- int
- XRRSetProviderOffloadSink(Display *dpy, XID provider, XID sink_provider);
- Atom *
- XRRListProviderProperties (Display *dpy, RRProvider provider, int *nprop);
- XRRPropertyInfo *
- XRRQueryProviderProperty (Display *dpy, RRProvider provider, Atom property);
- void
- XRRConfigureProviderProperty (Display *dpy, RRProvider provider, Atom property,
- Bool pending, Bool range, int num_values,
- long *values);
-
- void
- XRRChangeProviderProperty (Display *dpy, RRProvider provider,
- Atom property, Atom type,
- int format, int mode,
- _Xconst unsigned char *data, int nelements);
- void
- XRRDeleteProviderProperty (Display *dpy, RRProvider provider, Atom property);
- int
- XRRGetProviderProperty (Display *dpy, RRProvider provider,
- Atom property, long offset, long length,
- Bool _delete, Bool pending, Atom req_type,
- Atom *actual_type, int *actual_format,
- unsigned long *nitems, unsigned long *bytes_after,
- unsigned char **prop);
- typedef struct _XRRMonitorInfo {
- Atom name;
- Bool primary;
- Bool automatic;
- int noutput;
- int x;
- int y;
- int width;
- int height;
- int mwidth;
- int mheight;
- RROutput *outputs;
- } XRRMonitorInfo;
- XRRMonitorInfo *
- XRRAllocateMonitor(Display *dpy, int noutput);
- XRRMonitorInfo *
- XRRGetMonitors(Display *dpy, Window window, Bool get_active, int *nmonitors);
- void
- XRRSetMonitor(Display *dpy, Window window, XRRMonitorInfo *monitor);
- void
- XRRDeleteMonitor(Display *dpy, Window window, Atom name);
- void
- XRRFreeMonitors(XRRMonitorInfo *monitors);
- _XFUNCPROTOEND
- #endif /* _XRANDR_H_ */
|