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