diff options
Diffstat (limited to 'X11/Xutil.h')
| -rw-r--r-- | X11/Xutil.h | 828 | 
1 files changed, 828 insertions, 0 deletions
| diff --git a/X11/Xutil.h b/X11/Xutil.h new file mode 100644 index 000000000..9f2ef6304 --- /dev/null +++ b/X11/Xutil.h @@ -0,0 +1,828 @@ +/* $Xorg: Xutil.h,v 1.8 2001/02/09 02:03:39 xorgcvs Exp $ */ + +/*********************************************************** + +Copyright 1987, 1998  The Open Group + +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. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + +                        All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its  +documentation for any purpose and without fee is hereby granted,  +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 Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission.   + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL 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. + +******************************************************************/ +/* $XFree86: xc/lib/X11/Xutil.h,v 3.6 2003/04/13 19:22:20 dawes Exp $ */ + +#ifndef _XUTIL_H_ +#define _XUTIL_H_ + +/* You must include <X11/Xlib.h> before including this file */ +#include <X11/Xlib.h> +#include <X11/keysym.h> + +/*  + * Bitmask returned by XParseGeometry().  Each bit tells if the corresponding + * value (x, y, width, height) was found in the parsed string. + */ +#define NoValue		0x0000 +#define XValue  	0x0001 +#define YValue		0x0002 +#define WidthValue  	0x0004 +#define HeightValue  	0x0008 +#define AllValues 	0x000F +#define XNegative 	0x0010 +#define YNegative 	0x0020 + +/* + * new version containing base_width, base_height, and win_gravity fields; + * used with WM_NORMAL_HINTS. + */ +typedef struct { +    	long flags;	/* marks which fields in this structure are defined */ +	int x, y;		/* obsolete for new window mgrs, but clients */ +	int width, height;	/* should set so old wm's don't mess up */ +	int min_width, min_height; +	int max_width, max_height; +    	int width_inc, height_inc; +	struct { +		int x;	/* numerator */ +		int y;	/* denominator */ +	} min_aspect, max_aspect; +	int base_width, base_height;		/* added by ICCCM version 1 */ +	int win_gravity;			/* added by ICCCM version 1 */ +} XSizeHints; + +/* + * The next block of definitions are for window manager properties that + * clients and applications use for communication. + */ + +/* flags argument in size hints */ +#define USPosition	(1L << 0) /* user specified x, y */ +#define USSize		(1L << 1) /* user specified width, height */ + +#define PPosition	(1L << 2) /* program specified position */ +#define PSize		(1L << 3) /* program specified size */ +#define PMinSize	(1L << 4) /* program specified minimum size */ +#define PMaxSize	(1L << 5) /* program specified maximum size */ +#define PResizeInc	(1L << 6) /* program specified resize increments */ +#define PAspect		(1L << 7) /* program specified min and max aspect ratios */ +#define PBaseSize	(1L << 8) /* program specified base for incrementing */ +#define PWinGravity	(1L << 9) /* program specified window gravity */ + +/* obsolete */ +#define PAllHints (PPosition|PSize|PMinSize|PMaxSize|PResizeInc|PAspect) + + + +typedef struct { +	long flags;	/* marks which fields in this structure are defined */ +	Bool input;	/* does this application rely on the window manager to +			get keyboard input? */ +	int initial_state;	/* see below */ +	Pixmap icon_pixmap;	/* pixmap to be used as icon */ +	Window icon_window; 	/* window to be used as icon */ +	int icon_x, icon_y; 	/* initial position of icon */ +	Pixmap icon_mask;	/* icon mask bitmap */ +	XID window_group;	/* id of related window group */ +	/* this structure may be extended in the future */ +} XWMHints; + +/* definition for flags of XWMHints */ + +#define InputHint 		(1L << 0) +#define StateHint 		(1L << 1) +#define IconPixmapHint		(1L << 2) +#define IconWindowHint		(1L << 3) +#define IconPositionHint 	(1L << 4) +#define IconMaskHint		(1L << 5) +#define WindowGroupHint		(1L << 6) +#define AllHints (InputHint|StateHint|IconPixmapHint|IconWindowHint| \ +IconPositionHint|IconMaskHint|WindowGroupHint) +#define XUrgencyHint		(1L << 8) + +/* definitions for initial window state */ +#define WithdrawnState 0	/* for windows that are not mapped */ +#define NormalState 1	/* most applications want to start this way */ +#define IconicState 3	/* application wants to start as an icon */ + +/* + * Obsolete states no longer defined by ICCCM + */ +#define DontCareState 0	/* don't know or care */ +#define ZoomState 2	/* application wants to start zoomed */ +#define InactiveState 4	/* application believes it is seldom used; */ +			/* some wm's may put it on inactive menu */ + + +/* + * new structure for manipulating TEXT properties; used with WM_NAME,  + * WM_ICON_NAME, WM_CLIENT_MACHINE, and WM_COMMAND. + */ +typedef struct { +    unsigned char *value;		/* same as Property routines */ +    Atom encoding;			/* prop type */ +    int format;				/* prop data format: 8, 16, or 32 */ +    unsigned long nitems;		/* number of data items in value */ +} XTextProperty; + +#define XNoMemory -1 +#define XLocaleNotSupported -2 +#define XConverterNotFound -3 + +typedef enum { +    XStringStyle,		/* STRING */ +    XCompoundTextStyle,		/* COMPOUND_TEXT */ +    XTextStyle,			/* text in owner's encoding (current locale)*/ +    XStdICCTextStyle,		/* STRING, else COMPOUND_TEXT */ +    /* The following is an XFree86 extension, introduced in November 2000 */ +    XUTF8StringStyle		/* UTF8_STRING */ +} XICCEncodingStyle; + +typedef struct { +	int min_width, min_height; +	int max_width, max_height; +	int width_inc, height_inc; +} XIconSize; + +typedef struct { +	char *res_name; +	char *res_class; +} XClassHint; + +#ifdef XUTIL_DEFINE_FUNCTIONS +extern int XDestroyImage( +        XImage *ximage); +extern unsigned long XGetPixel( +        XImage *ximage, +        int x, int y); +extern int XPutPixel( +        XImage *ximage, +        int x, int y, +        unsigned long pixel); +extern XImage *XSubImage( +        XImage *ximage, +        int x, int y, +        unsigned int width, unsigned int height); +extern int XAddPixel( +        XImage *ximage, +        long value); +#else +/* + * These macros are used to give some sugar to the image routines so that + * naive people are more comfortable with them. + */ +#define XDestroyImage(ximage) \ +	((*((ximage)->f.destroy_image))((ximage))) +#define XGetPixel(ximage, x, y) \ +	((*((ximage)->f.get_pixel))((ximage), (x), (y))) +#define XPutPixel(ximage, x, y, pixel) \ +	((*((ximage)->f.put_pixel))((ximage), (x), (y), (pixel))) +#define XSubImage(ximage, x, y, width, height)  \ +	((*((ximage)->f.sub_image))((ximage), (x), (y), (width), (height))) +#define XAddPixel(ximage, value) \ +	((*((ximage)->f.add_pixel))((ximage), (value))) +#endif + +/* + * Compose sequence status structure, used in calling XLookupString. + */ +typedef struct _XComposeStatus { +    XPointer compose_ptr;	/* state table pointer */ +    int chars_matched;		/* match state */ +} XComposeStatus; + +/* + * Keysym macros, used on Keysyms to test for classes of symbols + */ +#define IsKeypadKey(keysym) \ +  (((KeySym)(keysym) >= XK_KP_Space) && ((KeySym)(keysym) <= XK_KP_Equal)) + +#define IsPrivateKeypadKey(keysym) \ +  (((KeySym)(keysym) >= 0x11000000) && ((KeySym)(keysym) <= 0x1100FFFF)) + +#define IsCursorKey(keysym) \ +  (((KeySym)(keysym) >= XK_Home)     && ((KeySym)(keysym) <  XK_Select)) + +#define IsPFKey(keysym) \ +  (((KeySym)(keysym) >= XK_KP_F1)     && ((KeySym)(keysym) <= XK_KP_F4)) + +#define IsFunctionKey(keysym) \ +  (((KeySym)(keysym) >= XK_F1)       && ((KeySym)(keysym) <= XK_F35)) + +#define IsMiscFunctionKey(keysym) \ +  (((KeySym)(keysym) >= XK_Select)   && ((KeySym)(keysym) <= XK_Break)) + +#ifdef XK_XKB_KEYS +#define IsModifierKey(keysym) \ +  ((((KeySym)(keysym) >= XK_Shift_L) && ((KeySym)(keysym) <= XK_Hyper_R)) \ +   || (((KeySym)(keysym) >= XK_ISO_Lock) && \ +       ((KeySym)(keysym) <= XK_ISO_Last_Group_Lock)) \ +   || ((KeySym)(keysym) == XK_Mode_switch) \ +   || ((KeySym)(keysym) == XK_Num_Lock)) +#else +#define IsModifierKey(keysym) \ +  ((((KeySym)(keysym) >= XK_Shift_L) && ((KeySym)(keysym) <= XK_Hyper_R)) \ +   || ((KeySym)(keysym) == XK_Mode_switch) \ +   || ((KeySym)(keysym) == XK_Num_Lock)) +#endif +/* + * opaque reference to Region data type  + */ +typedef struct _XRegion *Region;  + +/* Return values from XRectInRegion() */ +  +#define RectangleOut 0 +#define RectangleIn  1 +#define RectanglePart 2 +  + +/* + * Information used by the visual utility routines to find desired visual + * type from the many visuals a display may support. + */ + +typedef struct { +  Visual *visual; +  VisualID visualid; +  int screen; +  int depth; +#if defined(__cplusplus) || defined(c_plusplus) +  int c_class;					/* C++ */ +#else +  int class; +#endif +  unsigned long red_mask; +  unsigned long green_mask; +  unsigned long blue_mask; +  int colormap_size; +  int bits_per_rgb; +} XVisualInfo; + +#define VisualNoMask		0x0 +#define VisualIDMask 		0x1 +#define VisualScreenMask	0x2 +#define VisualDepthMask		0x4 +#define VisualClassMask		0x8 +#define VisualRedMaskMask	0x10 +#define VisualGreenMaskMask	0x20 +#define VisualBlueMaskMask	0x40 +#define VisualColormapSizeMask	0x80 +#define VisualBitsPerRGBMask	0x100 +#define VisualAllMask		0x1FF + +/* + * This defines a window manager property that clients may use to + * share standard color maps of type RGB_COLOR_MAP: + */ +typedef struct { +	Colormap colormap; +	unsigned long red_max; +	unsigned long red_mult; +	unsigned long green_max; +	unsigned long green_mult; +	unsigned long blue_max; +	unsigned long blue_mult; +	unsigned long base_pixel; +	VisualID visualid;		/* added by ICCCM version 1 */ +	XID killid;			/* added by ICCCM version 1 */ +} XStandardColormap; + +#define ReleaseByFreeingColormap ((XID) 1L)  /* for killid field above */ + + +/* + * return codes for XReadBitmapFile and XWriteBitmapFile + */ +#define BitmapSuccess		0 +#define BitmapOpenFailed 	1 +#define BitmapFileInvalid 	2 +#define BitmapNoMemory		3 + +/**************************************************************** + * + * Context Management + * + ****************************************************************/ + + +/* Associative lookup table return codes */ + +#define XCSUCCESS 0	/* No error. */ +#define XCNOMEM   1    /* Out of memory */ +#define XCNOENT   2    /* No entry in table */ + +typedef int XContext; + +#define XUniqueContext()       ((XContext) XrmUniqueQuark()) +#define XStringToContext(string)   ((XContext) XrmStringToQuark(string)) + +_XFUNCPROTOBEGIN + +/* The following declarations are alphabetized. */ + +extern XClassHint *XAllocClassHint ( +    void +); + +extern XIconSize *XAllocIconSize ( +    void +); + +extern XSizeHints *XAllocSizeHints ( +    void +); + +extern XStandardColormap *XAllocStandardColormap ( +    void +); + +extern XWMHints *XAllocWMHints ( +    void +); + +extern int XClipBox( +    Region		/* r */, +    XRectangle*		/* rect_return */ +); + +extern Region XCreateRegion( +    void +); + +extern const char *XDefaultString (void); + +extern int XDeleteContext( +    Display*		/* display */, +    XID			/* rid */, +    XContext		/* context */ +); + +extern int XDestroyRegion( +    Region		/* r */ +); + +extern int XEmptyRegion( +    Region		/* r */ +); + +extern int XEqualRegion( +    Region		/* r1 */, +    Region		/* r2 */ +); + +extern int XFindContext( +    Display*		/* display */, +    XID			/* rid */, +    XContext		/* context */, +    XPointer*		/* data_return */ +); + +extern Status XGetClassHint( +    Display*		/* display */, +    Window		/* w */, +    XClassHint*		/* class_hints_return */ +); + +extern Status XGetIconSizes( +    Display*		/* display */, +    Window		/* w */, +    XIconSize**		/* size_list_return */, +    int*		/* count_return */ +); + +extern Status XGetNormalHints( +    Display*		/* display */, +    Window		/* w */, +    XSizeHints*		/* hints_return */ +); + +extern Status XGetRGBColormaps( +    Display*		/* display */, +    Window		/* w */, +    XStandardColormap** /* stdcmap_return */, +    int*		/* count_return */, +    Atom		/* property */ +); + +extern Status XGetSizeHints( +    Display*		/* display */, +    Window		/* w */, +    XSizeHints*		/* hints_return */, +    Atom		/* property */ +); + +extern Status XGetStandardColormap( +    Display*		/* display */, +    Window		/* w */, +    XStandardColormap*	/* colormap_return */, +    Atom		/* property */			     +); + +extern Status XGetTextProperty( +    Display*		/* display */, +    Window		/* window */, +    XTextProperty*	/* text_prop_return */, +    Atom		/* property */ +); + +extern XVisualInfo *XGetVisualInfo( +    Display*		/* display */, +    long		/* vinfo_mask */, +    XVisualInfo*	/* vinfo_template */, +    int*		/* nitems_return */ +); + +extern Status XGetWMClientMachine( +    Display*		/* display */, +    Window		/* w */, +    XTextProperty*	/* text_prop_return */ +); + +extern XWMHints *XGetWMHints( +    Display*		/* display */, +    Window		/* w */		       +); + +extern Status XGetWMIconName( +    Display*		/* display */, +    Window		/* w */, +    XTextProperty*	/* text_prop_return */ +); + +extern Status XGetWMName( +    Display*		/* display */, +    Window		/* w */, +    XTextProperty*	/* text_prop_return */ +); + +extern Status XGetWMNormalHints( +    Display*		/* display */, +    Window		/* w */, +    XSizeHints*		/* hints_return */, +    long*		/* supplied_return */  +); + +extern Status XGetWMSizeHints( +    Display*		/* display */, +    Window		/* w */, +    XSizeHints*		/* hints_return */, +    long*		/* supplied_return */, +    Atom		/* property */ +); + +extern Status XGetZoomHints( +    Display*		/* display */, +    Window		/* w */, +    XSizeHints*		/* zhints_return */ +); + +extern int XIntersectRegion( +    Region		/* sra */, +    Region		/* srb */, +    Region		/* dr_return */ +); + +extern void XConvertCase( +    KeySym		/* sym */, +    KeySym*		/* lower */, +    KeySym*		/* upper */ +); + +extern int XLookupString( +    XKeyEvent*		/* event_struct */, +    char*		/* buffer_return */, +    int			/* bytes_buffer */, +    KeySym*		/* keysym_return */, +    XComposeStatus*	/* status_in_out */ +); + +extern Status XMatchVisualInfo( +    Display*		/* display */, +    int			/* screen */, +    int			/* depth */, +    int			/* class */, +    XVisualInfo*	/* vinfo_return */ +); + +extern int XOffsetRegion( +    Region		/* r */, +    int			/* dx */, +    int			/* dy */ +); + +extern Bool XPointInRegion( +    Region		/* r */, +    int			/* x */, +    int			/* y */ +); + +extern Region XPolygonRegion( +    XPoint*		/* points */, +    int			/* n */, +    int			/* fill_rule */ +); + +extern int XRectInRegion( +    Region		/* r */, +    int			/* x */, +    int			/* y */, +    unsigned int	/* width */, +    unsigned int	/* height */ +); + +extern int XSaveContext( +    Display*		/* display */, +    XID			/* rid */, +    XContext		/* context */, +    _Xconst char*	/* data */ +); + +extern int XSetClassHint( +    Display*		/* display */, +    Window		/* w */, +    XClassHint*		/* class_hints */ +); + +extern int XSetIconSizes( +    Display*		/* display */, +    Window		/* w */, +    XIconSize*		/* size_list */, +    int			/* count */     +); + +extern int XSetNormalHints( +    Display*		/* display */, +    Window		/* w */, +    XSizeHints*		/* hints */ +); + +extern void XSetRGBColormaps( +    Display*		/* display */, +    Window		/* w */, +    XStandardColormap*	/* stdcmaps */, +    int			/* count */, +    Atom		/* property */ +); + +extern int XSetSizeHints( +    Display*		/* display */, +    Window		/* w */, +    XSizeHints*		/* hints */, +    Atom		/* property */ +); + +extern int XSetStandardProperties( +    Display*		/* display */, +    Window		/* w */, +    _Xconst char*	/* window_name */, +    _Xconst char*	/* icon_name */, +    Pixmap		/* icon_pixmap */, +    char**		/* argv */, +    int			/* argc */, +    XSizeHints*		/* hints */ +); + +extern void XSetTextProperty( +    Display*		/* display */, +    Window		/* w */, +    XTextProperty*	/* text_prop */, +    Atom		/* property */ +); + +extern void XSetWMClientMachine( +    Display*		/* display */, +    Window		/* w */, +    XTextProperty*	/* text_prop */ +); + +extern int XSetWMHints( +    Display*		/* display */, +    Window		/* w */, +    XWMHints*		/* wm_hints */ +); + +extern void XSetWMIconName( +    Display*		/* display */, +    Window		/* w */, +    XTextProperty*	/* text_prop */ +); + +extern void XSetWMName( +    Display*		/* display */, +    Window		/* w */, +    XTextProperty*	/* text_prop */ +); + +extern void XSetWMNormalHints( +    Display*		/* display */, +    Window		/* w */, +    XSizeHints*		/* hints */ +); + +extern void XSetWMProperties( +    Display*		/* display */, +    Window		/* w */, +    XTextProperty*	/* window_name */, +    XTextProperty*	/* icon_name */, +    char**		/* argv */, +    int			/* argc */, +    XSizeHints*		/* normal_hints */, +    XWMHints*		/* wm_hints */, +    XClassHint*		/* class_hints */ +); + +extern void XmbSetWMProperties( +    Display*		/* display */, +    Window		/* w */, +    _Xconst char*	/* window_name */, +    _Xconst char*	/* icon_name */, +    char**		/* argv */, +    int			/* argc */, +    XSizeHints*		/* normal_hints */, +    XWMHints*		/* wm_hints */, +    XClassHint*		/* class_hints */ +); + +extern void Xutf8SetWMProperties( +    Display*		/* display */, +    Window		/* w */, +    _Xconst char*	/* window_name */, +    _Xconst char*	/* icon_name */, +    char**		/* argv */, +    int			/* argc */, +    XSizeHints*		/* normal_hints */, +    XWMHints*		/* wm_hints */, +    XClassHint*		/* class_hints */ +); + +extern void XSetWMSizeHints( +    Display*		/* display */, +    Window		/* w */, +    XSizeHints*		/* hints */, +    Atom		/* property */ +); + +extern int XSetRegion( +    Display*		/* display */, +    GC			/* gc */, +    Region		/* r */ +); + +extern void XSetStandardColormap( +    Display*		/* display */, +    Window		/* w */, +    XStandardColormap*	/* colormap */, +    Atom		/* property */ +); + +extern int XSetZoomHints( +    Display*		/* display */, +    Window		/* w */, +    XSizeHints*		/* zhints */ +); + +extern int XShrinkRegion( +    Region		/* r */, +    int			/* dx */, +    int			/* dy */ +); + +extern Status XStringListToTextProperty( +    char**		/* list */, +    int			/* count */, +    XTextProperty*	/* text_prop_return */ +); + +extern int XSubtractRegion( +    Region		/* sra */, +    Region		/* srb */, +    Region		/* dr_return */ +); + +extern int XmbTextListToTextProperty( +    Display*		display, +    char**		list, +    int			count, +    XICCEncodingStyle	style, +    XTextProperty*	text_prop_return +); + +extern int XwcTextListToTextProperty( +    Display*		display, +    wchar_t**		list, +    int			count, +    XICCEncodingStyle	style, +    XTextProperty*	text_prop_return +); + +extern int Xutf8TextListToTextProperty( +    Display*		display, +    char**		list, +    int			count, +    XICCEncodingStyle	style, +    XTextProperty*	text_prop_return +); + +extern void XwcFreeStringList( +    wchar_t**		list +); + +extern Status XTextPropertyToStringList( +    XTextProperty*	/* text_prop */, +    char***		/* list_return */, +    int*		/* count_return */ +); + +extern int XmbTextPropertyToTextList( +    Display*		display, +    const XTextProperty* text_prop, +    char***		list_return, +    int*		count_return +); + +extern int XwcTextPropertyToTextList( +    Display*		display, +    const XTextProperty* text_prop, +    wchar_t***		list_return, +    int*		count_return +); + +extern int Xutf8TextPropertyToTextList( +    Display*		display, +    const XTextProperty* text_prop, +    char***		list_return, +    int*		count_return +); + +extern int XUnionRectWithRegion( +    XRectangle*		/* rectangle */, +    Region		/* src_region */, +    Region		/* dest_region_return */ +); + +extern int XUnionRegion( +    Region		/* sra */, +    Region		/* srb */, +    Region		/* dr_return */ +); + +extern int XWMGeometry( +    Display*		/* display */, +    int			/* screen_number */, +    _Xconst char*	/* user_geometry */, +    _Xconst char*	/* default_geometry */, +    unsigned int	/* border_width */, +    XSizeHints*		/* hints */, +    int*		/* x_return */, +    int*		/* y_return */, +    int*		/* width_return */, +    int*		/* height_return */, +    int*		/* gravity_return */ +); + +extern int XXorRegion( +    Region		/* sra */, +    Region		/* srb */, +    Region		/* dr_return */ +); + +_XFUNCPROTOEND + +#endif /* _XUTIL_H_ */ | 
