Home | History | Annotate | Download | only in X11
      1 /* $Xorg: Xutil.h,v 1.8 2001/02/09 02:03:39 xorgcvs Exp $ */
      2 
      3 /***********************************************************
      4 
      5 Copyright 1987, 1998  The Open Group
      6 
      7 Permission to use, copy, modify, distribute, and sell this software and its
      8 documentation for any purpose is hereby granted without fee, provided that
      9 the above copyright notice appear in all copies and that both that
     10 copyright notice and this permission notice appear in supporting
     11 documentation.
     12 
     13 The above copyright notice and this permission notice shall be included in
     14 all copies or substantial portions of the Software.
     15 
     16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
     19 OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
     20 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
     21 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     22 
     23 Except as contained in this notice, the name of The Open Group shall not be
     24 used in advertising or otherwise to promote the sale, use or other dealings
     25 in this Software without prior written authorization from The Open Group.
     26 
     27 
     28 Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
     29 
     30                         All Rights Reserved
     31 
     32 Permission to use, copy, modify, and distribute this software and its
     33 documentation for any purpose and without fee is hereby granted,
     34 provided that the above copyright notice appear in all copies and that
     35 both that copyright notice and this permission notice appear in
     36 supporting documentation, and that the name of Digital not be
     37 used in advertising or publicity pertaining to distribution of the
     38 software without specific, written prior permission.
     39 
     40 DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
     41 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
     42 DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
     43 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
     44 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
     45 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
     46 SOFTWARE.
     47 
     48 ******************************************************************/
     49 /* $XFree86: xc/lib/X11/Xutil.h,v 3.6 2003/04/13 19:22:20 dawes Exp $ */
     50 
     51 #ifndef _XUTIL_H_
     52 #define _XUTIL_H_
     53 
     54 /* You must include <X11/Xlib.h> before including this file */
     55 #include <X11/Xlib.h>
     56 #include <X11/keysym.h>
     57 
     58 /*
     59  * Bitmask returned by XParseGeometry().  Each bit tells if the corresponding
     60  * value (x, y, width, height) was found in the parsed string.
     61  */
     62 #define NoValue		0x0000
     63 #define XValue  	0x0001
     64 #define YValue		0x0002
     65 #define WidthValue  	0x0004
     66 #define HeightValue  	0x0008
     67 #define AllValues 	0x000F
     68 #define XNegative 	0x0010
     69 #define YNegative 	0x0020
     70 
     71 /*
     72  * new version containing base_width, base_height, and win_gravity fields;
     73  * used with WM_NORMAL_HINTS.
     74  */
     75 typedef struct {
     76     	long flags;	/* marks which fields in this structure are defined */
     77 	int x, y;		/* obsolete for new window mgrs, but clients */
     78 	int width, height;	/* should set so old wm's don't mess up */
     79 	int min_width, min_height;
     80 	int max_width, max_height;
     81     	int width_inc, height_inc;
     82 	struct {
     83 		int x;	/* numerator */
     84 		int y;	/* denominator */
     85 	} min_aspect, max_aspect;
     86 	int base_width, base_height;		/* added by ICCCM version 1 */
     87 	int win_gravity;			/* added by ICCCM version 1 */
     88 } XSizeHints;
     89 
     90 /*
     91  * The next block of definitions are for window manager properties that
     92  * clients and applications use for communication.
     93  */
     94 
     95 /* flags argument in size hints */
     96 #define USPosition	(1L << 0) /* user specified x, y */
     97 #define USSize		(1L << 1) /* user specified width, height */
     98 
     99 #define PPosition	(1L << 2) /* program specified position */
    100 #define PSize		(1L << 3) /* program specified size */
    101 #define PMinSize	(1L << 4) /* program specified minimum size */
    102 #define PMaxSize	(1L << 5) /* program specified maximum size */
    103 #define PResizeInc	(1L << 6) /* program specified resize increments */
    104 #define PAspect		(1L << 7) /* program specified min and max aspect ratios */
    105 #define PBaseSize	(1L << 8) /* program specified base for incrementing */
    106 #define PWinGravity	(1L << 9) /* program specified window gravity */
    107 
    108 /* obsolete */
    109 #define PAllHints (PPosition|PSize|PMinSize|PMaxSize|PResizeInc|PAspect)
    110 
    111 
    112 
    113 typedef struct {
    114 	long flags;	/* marks which fields in this structure are defined */
    115 	Bool input;	/* does this application rely on the window manager to
    116 			get keyboard input? */
    117 	int initial_state;	/* see below */
    118 	Pixmap icon_pixmap;	/* pixmap to be used as icon */
    119 	Window icon_window; 	/* window to be used as icon */
    120 	int icon_x, icon_y; 	/* initial position of icon */
    121 	Pixmap icon_mask;	/* icon mask bitmap */
    122 	XID window_group;	/* id of related window group */
    123 	/* this structure may be extended in the future */
    124 } XWMHints;
    125 
    126 /* definition for flags of XWMHints */
    127 
    128 #define InputHint 		(1L << 0)
    129 #define StateHint 		(1L << 1)
    130 #define IconPixmapHint		(1L << 2)
    131 #define IconWindowHint		(1L << 3)
    132 #define IconPositionHint 	(1L << 4)
    133 #define IconMaskHint		(1L << 5)
    134 #define WindowGroupHint		(1L << 6)
    135 #define AllHints (InputHint|StateHint|IconPixmapHint|IconWindowHint| \
    136 IconPositionHint|IconMaskHint|WindowGroupHint)
    137 #define XUrgencyHint		(1L << 8)
    138 
    139 /* definitions for initial window state */
    140 #define WithdrawnState 0	/* for windows that are not mapped */
    141 #define NormalState 1	/* most applications want to start this way */
    142 #define IconicState 3	/* application wants to start as an icon */
    143 
    144 /*
    145  * Obsolete states no longer defined by ICCCM
    146  */
    147 #define DontCareState 0	/* don't know or care */
    148 #define ZoomState 2	/* application wants to start zoomed */
    149 #define InactiveState 4	/* application believes it is seldom used; */
    150 			/* some wm's may put it on inactive menu */
    151 
    152 
    153 /*
    154  * new structure for manipulating TEXT properties; used with WM_NAME,
    155  * WM_ICON_NAME, WM_CLIENT_MACHINE, and WM_COMMAND.
    156  */
    157 typedef struct {
    158     unsigned char *value;		/* same as Property routines */
    159     Atom encoding;			/* prop type */
    160     int format;				/* prop data format: 8, 16, or 32 */
    161     unsigned long nitems;		/* number of data items in value */
    162 } XTextProperty;
    163 
    164 #define XNoMemory -1
    165 #define XLocaleNotSupported -2
    166 #define XConverterNotFound -3
    167 
    168 typedef enum {
    169     XStringStyle,		/* STRING */
    170     XCompoundTextStyle,		/* COMPOUND_TEXT */
    171     XTextStyle,			/* text in owner's encoding (current locale)*/
    172     XStdICCTextStyle,		/* STRING, else COMPOUND_TEXT */
    173     /* The following is an XFree86 extension, introduced in November 2000 */
    174     XUTF8StringStyle		/* UTF8_STRING */
    175 } XICCEncodingStyle;
    176 
    177 typedef struct {
    178 	int min_width, min_height;
    179 	int max_width, max_height;
    180 	int width_inc, height_inc;
    181 } XIconSize;
    182 
    183 typedef struct {
    184 	char *res_name;
    185 	char *res_class;
    186 } XClassHint;
    187 
    188 #ifdef XUTIL_DEFINE_FUNCTIONS
    189 extern int XDestroyImage(
    190         XImage *ximage);
    191 extern unsigned long XGetPixel(
    192         XImage *ximage,
    193         int x, int y);
    194 extern int XPutPixel(
    195         XImage *ximage,
    196         int x, int y,
    197         unsigned long pixel);
    198 extern XImage *XSubImage(
    199         XImage *ximage,
    200         int x, int y,
    201         unsigned int width, unsigned int height);
    202 extern int XAddPixel(
    203         XImage *ximage,
    204         long value);
    205 #else
    206 /*
    207  * These macros are used to give some sugar to the image routines so that
    208  * naive people are more comfortable with them.
    209  */
    210 #define XDestroyImage(ximage) \
    211 	((*((ximage)->f.destroy_image))((ximage)))
    212 #define XGetPixel(ximage, x, y) \
    213 	((*((ximage)->f.get_pixel))((ximage), (x), (y)))
    214 #define XPutPixel(ximage, x, y, pixel) \
    215 	((*((ximage)->f.put_pixel))((ximage), (x), (y), (pixel)))
    216 #define XSubImage(ximage, x, y, width, height)  \
    217 	((*((ximage)->f.sub_image))((ximage), (x), (y), (width), (height)))
    218 #define XAddPixel(ximage, value) \
    219 	((*((ximage)->f.add_pixel))((ximage), (value)))
    220 #endif
    221 
    222 /*
    223  * Compose sequence status structure, used in calling XLookupString.
    224  */
    225 typedef struct _XComposeStatus {
    226     XPointer compose_ptr;	/* state table pointer */
    227     int chars_matched;		/* match state */
    228 } XComposeStatus;
    229 
    230 /*
    231  * Keysym macros, used on Keysyms to test for classes of symbols
    232  */
    233 #define IsKeypadKey(keysym) \
    234   (((KeySym)(keysym) >= XK_KP_Space) && ((KeySym)(keysym) <= XK_KP_Equal))
    235 
    236 #define IsPrivateKeypadKey(keysym) \
    237   (((KeySym)(keysym) >= 0x11000000) && ((KeySym)(keysym) <= 0x1100FFFF))
    238 
    239 #define IsCursorKey(keysym) \
    240   (((KeySym)(keysym) >= XK_Home)     && ((KeySym)(keysym) <  XK_Select))
    241 
    242 #define IsPFKey(keysym) \
    243   (((KeySym)(keysym) >= XK_KP_F1)     && ((KeySym)(keysym) <= XK_KP_F4))
    244 
    245 #define IsFunctionKey(keysym) \
    246   (((KeySym)(keysym) >= XK_F1)       && ((KeySym)(keysym) <= XK_F35))
    247 
    248 #define IsMiscFunctionKey(keysym) \
    249   (((KeySym)(keysym) >= XK_Select)   && ((KeySym)(keysym) <= XK_Break))
    250 
    251 #ifdef XK_XKB_KEYS
    252 #define IsModifierKey(keysym) \
    253   ((((KeySym)(keysym) >= XK_Shift_L) && ((KeySym)(keysym) <= XK_Hyper_R)) \
    254    || (((KeySym)(keysym) >= XK_ISO_Lock) && \
    255        ((KeySym)(keysym) <= XK_ISO_Last_Group_Lock)) \
    256    || ((KeySym)(keysym) == XK_Mode_switch) \
    257    || ((KeySym)(keysym) == XK_Num_Lock))
    258 #else
    259 #define IsModifierKey(keysym) \
    260   ((((KeySym)(keysym) >= XK_Shift_L) && ((KeySym)(keysym) <= XK_Hyper_R)) \
    261    || ((KeySym)(keysym) == XK_Mode_switch) \
    262    || ((KeySym)(keysym) == XK_Num_Lock))
    263 #endif
    264 /*
    265  * opaque reference to Region data type
    266  */
    267 typedef struct _XRegion *Region;
    268 
    269 /* Return values from XRectInRegion() */
    270 
    271 #define RectangleOut 0
    272 #define RectangleIn  1
    273 #define RectanglePart 2
    274 
    275 
    276 /*
    277  * Information used by the visual utility routines to find desired visual
    278  * type from the many visuals a display may support.
    279  */
    280 
    281 typedef struct {
    282   Visual *visual;
    283   VisualID visualid;
    284   int screen;
    285   int depth;
    286 #if defined(__cplusplus) || defined(c_plusplus)
    287   int c_class;					/* C++ */
    288 #else
    289   int class;
    290 #endif
    291   unsigned long red_mask;
    292   unsigned long green_mask;
    293   unsigned long blue_mask;
    294   int colormap_size;
    295   int bits_per_rgb;
    296 } XVisualInfo;
    297 
    298 #define VisualNoMask		0x0
    299 #define VisualIDMask 		0x1
    300 #define VisualScreenMask	0x2
    301 #define VisualDepthMask		0x4
    302 #define VisualClassMask		0x8
    303 #define VisualRedMaskMask	0x10
    304 #define VisualGreenMaskMask	0x20
    305 #define VisualBlueMaskMask	0x40
    306 #define VisualColormapSizeMask	0x80
    307 #define VisualBitsPerRGBMask	0x100
    308 #define VisualAllMask		0x1FF
    309 
    310 /*
    311  * This defines a window manager property that clients may use to
    312  * share standard color maps of type RGB_COLOR_MAP:
    313  */
    314 typedef struct {
    315 	Colormap colormap;
    316 	unsigned long red_max;
    317 	unsigned long red_mult;
    318 	unsigned long green_max;
    319 	unsigned long green_mult;
    320 	unsigned long blue_max;
    321 	unsigned long blue_mult;
    322 	unsigned long base_pixel;
    323 	VisualID visualid;		/* added by ICCCM version 1 */
    324 	XID killid;			/* added by ICCCM version 1 */
    325 } XStandardColormap;
    326 
    327 #define ReleaseByFreeingColormap ((XID) 1L)  /* for killid field above */
    328 
    329 
    330 /*
    331  * return codes for XReadBitmapFile and XWriteBitmapFile
    332  */
    333 #define BitmapSuccess		0
    334 #define BitmapOpenFailed 	1
    335 #define BitmapFileInvalid 	2
    336 #define BitmapNoMemory		3
    337 
    338 /****************************************************************
    339  *
    340  * Context Management
    341  *
    342  ****************************************************************/
    343 
    344 
    345 /* Associative lookup table return codes */
    346 
    347 #define XCSUCCESS 0	/* No error. */
    348 #define XCNOMEM   1    /* Out of memory */
    349 #define XCNOENT   2    /* No entry in table */
    350 
    351 typedef int XContext;
    352 
    353 #define XUniqueContext()       ((XContext) XrmUniqueQuark())
    354 #define XStringToContext(string)   ((XContext) XrmStringToQuark(string))
    355 
    356 _XFUNCPROTOBEGIN
    357 
    358 /* The following declarations are alphabetized. */
    359 
    360 extern XClassHint *XAllocClassHint (
    361     void
    362 );
    363 
    364 extern XIconSize *XAllocIconSize (
    365     void
    366 );
    367 
    368 extern XSizeHints *XAllocSizeHints (
    369     void
    370 );
    371 
    372 extern XStandardColormap *XAllocStandardColormap (
    373     void
    374 );
    375 
    376 extern XWMHints *XAllocWMHints (
    377     void
    378 );
    379 
    380 extern int XClipBox(
    381     Region		/* r */,
    382     XRectangle*		/* rect_return */
    383 );
    384 
    385 extern Region XCreateRegion(
    386     void
    387 );
    388 
    389 extern const char *XDefaultString (void);
    390 
    391 extern int XDeleteContext(
    392     Display*		/* display */,
    393     XID			/* rid */,
    394     XContext		/* context */
    395 );
    396 
    397 extern int XDestroyRegion(
    398     Region		/* r */
    399 );
    400 
    401 extern int XEmptyRegion(
    402     Region		/* r */
    403 );
    404 
    405 extern int XEqualRegion(
    406     Region		/* r1 */,
    407     Region		/* r2 */
    408 );
    409 
    410 extern int XFindContext(
    411     Display*		/* display */,
    412     XID			/* rid */,
    413     XContext		/* context */,
    414     XPointer*		/* data_return */
    415 );
    416 
    417 extern Status XGetClassHint(
    418     Display*		/* display */,
    419     Window		/* w */,
    420     XClassHint*		/* class_hints_return */
    421 );
    422 
    423 extern Status XGetIconSizes(
    424     Display*		/* display */,
    425     Window		/* w */,
    426     XIconSize**		/* size_list_return */,
    427     int*		/* count_return */
    428 );
    429 
    430 extern Status XGetNormalHints(
    431     Display*		/* display */,
    432     Window		/* w */,
    433     XSizeHints*		/* hints_return */
    434 );
    435 
    436 extern Status XGetRGBColormaps(
    437     Display*		/* display */,
    438     Window		/* w */,
    439     XStandardColormap** /* stdcmap_return */,
    440     int*		/* count_return */,
    441     Atom		/* property */
    442 );
    443 
    444 extern Status XGetSizeHints(
    445     Display*		/* display */,
    446     Window		/* w */,
    447     XSizeHints*		/* hints_return */,
    448     Atom		/* property */
    449 );
    450 
    451 extern Status XGetStandardColormap(
    452     Display*		/* display */,
    453     Window		/* w */,
    454     XStandardColormap*	/* colormap_return */,
    455     Atom		/* property */
    456 );
    457 
    458 extern Status XGetTextProperty(
    459     Display*		/* display */,
    460     Window		/* window */,
    461     XTextProperty*	/* text_prop_return */,
    462     Atom		/* property */
    463 );
    464 
    465 extern XVisualInfo *XGetVisualInfo(
    466     Display*		/* display */,
    467     long		/* vinfo_mask */,
    468     XVisualInfo*	/* vinfo_template */,
    469     int*		/* nitems_return */
    470 );
    471 
    472 extern Status XGetWMClientMachine(
    473     Display*		/* display */,
    474     Window		/* w */,
    475     XTextProperty*	/* text_prop_return */
    476 );
    477 
    478 extern XWMHints *XGetWMHints(
    479     Display*		/* display */,
    480     Window		/* w */
    481 );
    482 
    483 extern Status XGetWMIconName(
    484     Display*		/* display */,
    485     Window		/* w */,
    486     XTextProperty*	/* text_prop_return */
    487 );
    488 
    489 extern Status XGetWMName(
    490     Display*		/* display */,
    491     Window		/* w */,
    492     XTextProperty*	/* text_prop_return */
    493 );
    494 
    495 extern Status XGetWMNormalHints(
    496     Display*		/* display */,
    497     Window		/* w */,
    498     XSizeHints*		/* hints_return */,
    499     long*		/* supplied_return */
    500 );
    501 
    502 extern Status XGetWMSizeHints(
    503     Display*		/* display */,
    504     Window		/* w */,
    505     XSizeHints*		/* hints_return */,
    506     long*		/* supplied_return */,
    507     Atom		/* property */
    508 );
    509 
    510 extern Status XGetZoomHints(
    511     Display*		/* display */,
    512     Window		/* w */,
    513     XSizeHints*		/* zhints_return */
    514 );
    515 
    516 extern int XIntersectRegion(
    517     Region		/* sra */,
    518     Region		/* srb */,
    519     Region		/* dr_return */
    520 );
    521 
    522 extern void XConvertCase(
    523     KeySym		/* sym */,
    524     KeySym*		/* lower */,
    525     KeySym*		/* upper */
    526 );
    527 
    528 extern int XLookupString(
    529     XKeyEvent*		/* event_struct */,
    530     char*		/* buffer_return */,
    531     int			/* bytes_buffer */,
    532     KeySym*		/* keysym_return */,
    533     XComposeStatus*	/* status_in_out */
    534 );
    535 
    536 extern Status XMatchVisualInfo(
    537     Display*		/* display */,
    538     int			/* screen */,
    539     int			/* depth */,
    540     int			/* class */,
    541     XVisualInfo*	/* vinfo_return */
    542 );
    543 
    544 extern int XOffsetRegion(
    545     Region		/* r */,
    546     int			/* dx */,
    547     int			/* dy */
    548 );
    549 
    550 extern Bool XPointInRegion(
    551     Region		/* r */,
    552     int			/* x */,
    553     int			/* y */
    554 );
    555 
    556 extern Region XPolygonRegion(
    557     XPoint*		/* points */,
    558     int			/* n */,
    559     int			/* fill_rule */
    560 );
    561 
    562 extern int XRectInRegion(
    563     Region		/* r */,
    564     int			/* x */,
    565     int			/* y */,
    566     unsigned int	/* width */,
    567     unsigned int	/* height */
    568 );
    569 
    570 extern int XSaveContext(
    571     Display*		/* display */,
    572     XID			/* rid */,
    573     XContext		/* context */,
    574     _Xconst char*	/* data */
    575 );
    576 
    577 extern int XSetClassHint(
    578     Display*		/* display */,
    579     Window		/* w */,
    580     XClassHint*		/* class_hints */
    581 );
    582 
    583 extern int XSetIconSizes(
    584     Display*		/* display */,
    585     Window		/* w */,
    586     XIconSize*		/* size_list */,
    587     int			/* count */
    588 );
    589 
    590 extern int XSetNormalHints(
    591     Display*		/* display */,
    592     Window		/* w */,
    593     XSizeHints*		/* hints */
    594 );
    595 
    596 extern void XSetRGBColormaps(
    597     Display*		/* display */,
    598     Window		/* w */,
    599     XStandardColormap*	/* stdcmaps */,
    600     int			/* count */,
    601     Atom		/* property */
    602 );
    603 
    604 extern int XSetSizeHints(
    605     Display*		/* display */,
    606     Window		/* w */,
    607     XSizeHints*		/* hints */,
    608     Atom		/* property */
    609 );
    610 
    611 extern int XSetStandardProperties(
    612     Display*		/* display */,
    613     Window		/* w */,
    614     _Xconst char*	/* window_name */,
    615     _Xconst char*	/* icon_name */,
    616     Pixmap		/* icon_pixmap */,
    617     char**		/* argv */,
    618     int			/* argc */,
    619     XSizeHints*		/* hints */
    620 );
    621 
    622 extern void XSetTextProperty(
    623     Display*		/* display */,
    624     Window		/* w */,
    625     XTextProperty*	/* text_prop */,
    626     Atom		/* property */
    627 );
    628 
    629 extern void XSetWMClientMachine(
    630     Display*		/* display */,
    631     Window		/* w */,
    632     XTextProperty*	/* text_prop */
    633 );
    634 
    635 extern int XSetWMHints(
    636     Display*		/* display */,
    637     Window		/* w */,
    638     XWMHints*		/* wm_hints */
    639 );
    640 
    641 extern void XSetWMIconName(
    642     Display*		/* display */,
    643     Window		/* w */,
    644     XTextProperty*	/* text_prop */
    645 );
    646 
    647 extern void XSetWMName(
    648     Display*		/* display */,
    649     Window		/* w */,
    650     XTextProperty*	/* text_prop */
    651 );
    652 
    653 extern void XSetWMNormalHints(
    654     Display*		/* display */,
    655     Window		/* w */,
    656     XSizeHints*		/* hints */
    657 );
    658 
    659 extern void XSetWMProperties(
    660     Display*		/* display */,
    661     Window		/* w */,
    662     XTextProperty*	/* window_name */,
    663     XTextProperty*	/* icon_name */,
    664     char**		/* argv */,
    665     int			/* argc */,
    666     XSizeHints*		/* normal_hints */,
    667     XWMHints*		/* wm_hints */,
    668     XClassHint*		/* class_hints */
    669 );
    670 
    671 extern void XmbSetWMProperties(
    672     Display*		/* display */,
    673     Window		/* w */,
    674     _Xconst char*	/* window_name */,
    675     _Xconst char*	/* icon_name */,
    676     char**		/* argv */,
    677     int			/* argc */,
    678     XSizeHints*		/* normal_hints */,
    679     XWMHints*		/* wm_hints */,
    680     XClassHint*		/* class_hints */
    681 );
    682 
    683 extern void Xutf8SetWMProperties(
    684     Display*		/* display */,
    685     Window		/* w */,
    686     _Xconst char*	/* window_name */,
    687     _Xconst char*	/* icon_name */,
    688     char**		/* argv */,
    689     int			/* argc */,
    690     XSizeHints*		/* normal_hints */,
    691     XWMHints*		/* wm_hints */,
    692     XClassHint*		/* class_hints */
    693 );
    694 
    695 extern void XSetWMSizeHints(
    696     Display*		/* display */,
    697     Window		/* w */,
    698     XSizeHints*		/* hints */,
    699     Atom		/* property */
    700 );
    701 
    702 extern int XSetRegion(
    703     Display*		/* display */,
    704     GC			/* gc */,
    705     Region		/* r */
    706 );
    707 
    708 extern void XSetStandardColormap(
    709     Display*		/* display */,
    710     Window		/* w */,
    711     XStandardColormap*	/* colormap */,
    712     Atom		/* property */
    713 );
    714 
    715 extern int XSetZoomHints(
    716     Display*		/* display */,
    717     Window		/* w */,
    718     XSizeHints*		/* zhints */
    719 );
    720 
    721 extern int XShrinkRegion(
    722     Region		/* r */,
    723     int			/* dx */,
    724     int			/* dy */
    725 );
    726 
    727 extern Status XStringListToTextProperty(
    728     char**		/* list */,
    729     int			/* count */,
    730     XTextProperty*	/* text_prop_return */
    731 );
    732 
    733 extern int XSubtractRegion(
    734     Region		/* sra */,
    735     Region		/* srb */,
    736     Region		/* dr_return */
    737 );
    738 
    739 extern int XmbTextListToTextProperty(
    740     Display*		display,
    741     char**		list,
    742     int			count,
    743     XICCEncodingStyle	style,
    744     XTextProperty*	text_prop_return
    745 );
    746 
    747 extern int XwcTextListToTextProperty(
    748     Display*		display,
    749     wchar_t**		list,
    750     int			count,
    751     XICCEncodingStyle	style,
    752     XTextProperty*	text_prop_return
    753 );
    754 
    755 extern int Xutf8TextListToTextProperty(
    756     Display*		display,
    757     char**		list,
    758     int			count,
    759     XICCEncodingStyle	style,
    760     XTextProperty*	text_prop_return
    761 );
    762 
    763 extern void XwcFreeStringList(
    764     wchar_t**		list
    765 );
    766 
    767 extern Status XTextPropertyToStringList(
    768     XTextProperty*	/* text_prop */,
    769     char***		/* list_return */,
    770     int*		/* count_return */
    771 );
    772 
    773 extern int XmbTextPropertyToTextList(
    774     Display*		display,
    775     const XTextProperty* text_prop,
    776     char***		list_return,
    777     int*		count_return
    778 );
    779 
    780 extern int XwcTextPropertyToTextList(
    781     Display*		display,
    782     const XTextProperty* text_prop,
    783     wchar_t***		list_return,
    784     int*		count_return
    785 );
    786 
    787 extern int Xutf8TextPropertyToTextList(
    788     Display*		display,
    789     const XTextProperty* text_prop,
    790     char***		list_return,
    791     int*		count_return
    792 );
    793 
    794 extern int XUnionRectWithRegion(
    795     XRectangle*		/* rectangle */,
    796     Region		/* src_region */,
    797     Region		/* dest_region_return */
    798 );
    799 
    800 extern int XUnionRegion(
    801     Region		/* sra */,
    802     Region		/* srb */,
    803     Region		/* dr_return */
    804 );
    805 
    806 extern int XWMGeometry(
    807     Display*		/* display */,
    808     int			/* screen_number */,
    809     _Xconst char*	/* user_geometry */,
    810     _Xconst char*	/* default_geometry */,
    811     unsigned int	/* border_width */,
    812     XSizeHints*		/* hints */,
    813     int*		/* x_return */,
    814     int*		/* y_return */,
    815     int*		/* width_return */,
    816     int*		/* height_return */,
    817     int*		/* gravity_return */
    818 );
    819 
    820 extern int XXorRegion(
    821     Region		/* sra */,
    822     Region		/* srb */,
    823     Region		/* dr_return */
    824 );
    825 
    826 _XFUNCPROTOEND
    827 
    828 #endif /* _XUTIL_H_ */
    829