jpayne@69: /* jpayne@69: * Copyright (c) 2006, Oracle and/or its affiliates. jpayne@69: * Copyright 2011, 2021 Red Hat, Inc. jpayne@69: * jpayne@69: * Permission is hereby granted, free of charge, to any person obtaining a jpayne@69: * copy of this software and associated documentation files (the "Software"), jpayne@69: * to deal in the Software without restriction, including without limitation jpayne@69: * the rights to use, copy, modify, merge, publish, distribute, sublicense, jpayne@69: * and/or sell copies of the Software, and to permit persons to whom the jpayne@69: * Software is furnished to do so, subject to the following conditions: jpayne@69: * jpayne@69: * The above copyright notice and this permission notice (including the next jpayne@69: * paragraph) shall be included in all copies or substantial portions of the jpayne@69: * Software. jpayne@69: * jpayne@69: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR jpayne@69: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, jpayne@69: * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL jpayne@69: * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER jpayne@69: * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING jpayne@69: * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER jpayne@69: * DEALINGS IN THE SOFTWARE. jpayne@69: */ jpayne@69: /* jpayne@69: * Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc. jpayne@69: * jpayne@69: * Permission to use, copy, modify, distribute, and sell this software and its jpayne@69: * documentation for any purpose is hereby granted without fee, provided that jpayne@69: * the above copyright notice appear in all copies and that both that jpayne@69: * copyright notice and this permission notice appear in supporting jpayne@69: * documentation, and that the name of Keith Packard not be used in jpayne@69: * advertising or publicity pertaining to distribution of the software without jpayne@69: * specific, written prior permission. Keith Packard makes no jpayne@69: * representations about the suitability of this software for any purpose. It jpayne@69: * is provided "as is" without express or implied warranty. jpayne@69: * jpayne@69: * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, jpayne@69: * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO jpayne@69: * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR jpayne@69: * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, jpayne@69: * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER jpayne@69: * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR jpayne@69: * PERFORMANCE OF THIS SOFTWARE. jpayne@69: */ jpayne@69: jpayne@69: #ifndef _XFIXES_H_ jpayne@69: #define _XFIXES_H_ jpayne@69: jpayne@69: #include jpayne@69: jpayne@69: #include jpayne@69: #include jpayne@69: jpayne@69: /* jpayne@69: * This revision number also appears in configure.ac, they have jpayne@69: * to be manually synchronized jpayne@69: */ jpayne@69: #define XFIXES_REVISION 1 jpayne@69: #define XFIXES_VERSION ((XFIXES_MAJOR * 10000) + (XFIXES_MINOR * 100) + (XFIXES_REVISION)) jpayne@69: jpayne@69: typedef struct { jpayne@69: int type; /* event base */ jpayne@69: unsigned long serial; jpayne@69: Bool send_event; jpayne@69: Display *display; jpayne@69: Window window; jpayne@69: int subtype; jpayne@69: Window owner; jpayne@69: Atom selection; jpayne@69: Time timestamp; jpayne@69: Time selection_timestamp; jpayne@69: } XFixesSelectionNotifyEvent; jpayne@69: jpayne@69: typedef struct { jpayne@69: int type; /* event base */ jpayne@69: unsigned long serial; jpayne@69: Bool send_event; jpayne@69: Display *display; jpayne@69: Window window; jpayne@69: int subtype; jpayne@69: unsigned long cursor_serial; jpayne@69: Time timestamp; jpayne@69: Atom cursor_name; jpayne@69: } XFixesCursorNotifyEvent; jpayne@69: jpayne@69: typedef struct { jpayne@69: short x, y; jpayne@69: unsigned short width, height; jpayne@69: unsigned short xhot, yhot; jpayne@69: unsigned long cursor_serial; jpayne@69: unsigned long *pixels; jpayne@69: #if XFIXES_MAJOR >= 2 jpayne@69: Atom atom; /* Version >= 2 only */ jpayne@69: const char *name; /* Version >= 2 only */ jpayne@69: #endif jpayne@69: } XFixesCursorImage; jpayne@69: jpayne@69: #if XFIXES_MAJOR >= 2 jpayne@69: /* Version 2 types */ jpayne@69: jpayne@69: typedef XID XserverRegion; jpayne@69: jpayne@69: typedef struct { jpayne@69: short x, y; jpayne@69: unsigned short width, height; jpayne@69: unsigned short xhot, yhot; jpayne@69: unsigned long cursor_serial; jpayne@69: unsigned long *pixels; jpayne@69: Atom atom; jpayne@69: const char *name; jpayne@69: } XFixesCursorImageAndName; jpayne@69: jpayne@69: #endif jpayne@69: jpayne@69: _XFUNCPROTOBEGIN jpayne@69: jpayne@69: Bool XFixesQueryExtension (Display *dpy, jpayne@69: int *event_base_return, jpayne@69: int *error_base_return); jpayne@69: Status XFixesQueryVersion (Display *dpy, jpayne@69: int *major_version_return, jpayne@69: int *minor_version_return); jpayne@69: jpayne@69: int XFixesVersion (void); jpayne@69: jpayne@69: void jpayne@69: XFixesChangeSaveSet (Display *dpy, jpayne@69: Window win, jpayne@69: int mode, jpayne@69: int target, jpayne@69: int map); jpayne@69: jpayne@69: void jpayne@69: XFixesSelectSelectionInput (Display *dpy, jpayne@69: Window win, jpayne@69: Atom selection, jpayne@69: unsigned long eventMask); jpayne@69: jpayne@69: void jpayne@69: XFixesSelectCursorInput (Display *dpy, jpayne@69: Window win, jpayne@69: unsigned long eventMask); jpayne@69: jpayne@69: XFixesCursorImage * jpayne@69: XFixesGetCursorImage (Display *dpy); jpayne@69: jpayne@69: #if XFIXES_MAJOR >= 2 jpayne@69: /* Version 2 functions */ jpayne@69: jpayne@69: XserverRegion jpayne@69: XFixesCreateRegion (Display *dpy, XRectangle *rectangles, int nrectangles); jpayne@69: jpayne@69: XserverRegion jpayne@69: XFixesCreateRegionFromBitmap (Display *dpy, Pixmap bitmap); jpayne@69: jpayne@69: XserverRegion jpayne@69: XFixesCreateRegionFromWindow (Display *dpy, Window window, int kind); jpayne@69: jpayne@69: XserverRegion jpayne@69: XFixesCreateRegionFromGC (Display *dpy, GC gc); jpayne@69: jpayne@69: XserverRegion jpayne@69: XFixesCreateRegionFromPicture (Display *dpy, XID picture); jpayne@69: jpayne@69: void jpayne@69: XFixesDestroyRegion (Display *dpy, XserverRegion region); jpayne@69: jpayne@69: void jpayne@69: XFixesSetRegion (Display *dpy, XserverRegion region, jpayne@69: XRectangle *rectangles, int nrectangles); jpayne@69: jpayne@69: void jpayne@69: XFixesCopyRegion (Display *dpy, XserverRegion dst, XserverRegion src); jpayne@69: jpayne@69: void jpayne@69: XFixesUnionRegion (Display *dpy, XserverRegion dst, jpayne@69: XserverRegion src1, XserverRegion src2); jpayne@69: jpayne@69: void jpayne@69: XFixesIntersectRegion (Display *dpy, XserverRegion dst, jpayne@69: XserverRegion src1, XserverRegion src2); jpayne@69: jpayne@69: void jpayne@69: XFixesSubtractRegion (Display *dpy, XserverRegion dst, jpayne@69: XserverRegion src1, XserverRegion src2); jpayne@69: jpayne@69: void jpayne@69: XFixesInvertRegion (Display *dpy, XserverRegion dst, jpayne@69: XRectangle *rect, XserverRegion src); jpayne@69: jpayne@69: void jpayne@69: XFixesTranslateRegion (Display *dpy, XserverRegion region, int dx, int dy); jpayne@69: jpayne@69: void jpayne@69: XFixesRegionExtents (Display *dpy, XserverRegion dst, XserverRegion src); jpayne@69: jpayne@69: XRectangle * jpayne@69: XFixesFetchRegion (Display *dpy, XserverRegion region, int *nrectanglesRet); jpayne@69: jpayne@69: XRectangle * jpayne@69: XFixesFetchRegionAndBounds (Display *dpy, XserverRegion region, jpayne@69: int *nrectanglesRet, jpayne@69: XRectangle *bounds); jpayne@69: jpayne@69: void jpayne@69: XFixesSetGCClipRegion (Display *dpy, GC gc, jpayne@69: int clip_x_origin, int clip_y_origin, jpayne@69: XserverRegion region); jpayne@69: jpayne@69: void jpayne@69: XFixesSetWindowShapeRegion (Display *dpy, Window win, int shape_kind, jpayne@69: int x_off, int y_off, XserverRegion region); jpayne@69: jpayne@69: void jpayne@69: XFixesSetPictureClipRegion (Display *dpy, XID picture, jpayne@69: int clip_x_origin, int clip_y_origin, jpayne@69: XserverRegion region); jpayne@69: jpayne@69: void jpayne@69: XFixesSetCursorName (Display *dpy, Cursor cursor, const char *name); jpayne@69: jpayne@69: const char * jpayne@69: XFixesGetCursorName (Display *dpy, Cursor cursor, Atom *atom); jpayne@69: jpayne@69: void jpayne@69: XFixesChangeCursor (Display *dpy, Cursor source, Cursor destination); jpayne@69: jpayne@69: void jpayne@69: XFixesChangeCursorByName (Display *dpy, Cursor source, const char *name); jpayne@69: jpayne@69: #endif /* XFIXES_MAJOR >= 2 */ jpayne@69: jpayne@69: #if XFIXES_MAJOR >= 3 jpayne@69: jpayne@69: void jpayne@69: XFixesExpandRegion (Display *dpy, XserverRegion dst, XserverRegion src, jpayne@69: unsigned left, unsigned right, jpayne@69: unsigned top, unsigned bottom); jpayne@69: jpayne@69: #endif /* XFIXES_MAJOR >= 3 */ jpayne@69: jpayne@69: #if XFIXES_MAJOR >= 4 jpayne@69: /* Version 4.0 externs */ jpayne@69: jpayne@69: void jpayne@69: XFixesHideCursor (Display *dpy, Window win); jpayne@69: jpayne@69: void jpayne@69: XFixesShowCursor (Display *dpy, Window win); jpayne@69: jpayne@69: #endif /* XFIXES_MAJOR >= 4 */ jpayne@69: jpayne@69: #if XFIXES_MAJOR >= 5 jpayne@69: jpayne@69: typedef XID PointerBarrier; jpayne@69: jpayne@69: PointerBarrier jpayne@69: XFixesCreatePointerBarrier(Display *dpy, Window w, int x1, int y1, jpayne@69: int x2, int y2, int directions, jpayne@69: int num_devices, int *devices); jpayne@69: jpayne@69: void jpayne@69: XFixesDestroyPointerBarrier(Display *dpy, PointerBarrier b); jpayne@69: jpayne@69: #endif /* XFIXES_MAJOR >= 5 */ jpayne@69: jpayne@69: #if XFIXES_MAJOR >= 6 jpayne@69: jpayne@69: void jpayne@69: XFixesSetClientDisconnectMode(Display *dpy, int disconnect_mode); jpayne@69: jpayne@69: int jpayne@69: XFixesGetClientDisconnectMode(Display *dpy); jpayne@69: jpayne@69: #endif /* XFIXES_MAJOR >= 6 */ jpayne@69: jpayne@69: _XFUNCPROTOEND jpayne@69: jpayne@69: #endif /* _XFIXES_H_ */