Xutil.h revision 61b2299d
1/* $Xorg: Xutil.h,v 1.8 2001/02/09 02:03:39 xorgcvs Exp $ */
2
3/***********************************************************
4
5Copyright 1987, 1998  The Open Group
6
7Permission to use, copy, modify, distribute, and sell this software and its
8documentation for any purpose is hereby granted without fee, provided that
9the above copyright notice appear in all copies and that both that
10copyright notice and this permission notice appear in supporting
11documentation.
12
13The above copyright notice and this permission notice shall be included in
14all copies or substantial portions of the Software.
15
16THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
19OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
20AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
23Except as contained in this notice, the name of The Open Group shall not be
24used in advertising or otherwise to promote the sale, use or other dealings
25in this Software without prior written authorization from The Open Group.
26
27
28Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
29
30                        All Rights Reserved
31
32Permission to use, copy, modify, and distribute this software and its
33documentation for any purpose and without fee is hereby granted,
34provided that the above copyright notice appear in all copies and that
35both that copyright notice and this permission notice appear in
36supporting documentation, and that the name of Digital not be
37used in advertising or publicity pertaining to distribution of the
38software without specific, written prior permission.
39
40DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
41ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
42DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
43ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
44WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
45ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
46SOFTWARE.
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 */
75typedef 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
113typedef 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| \
136IconPositionHint|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 */
157typedef 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
168typedef 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
177typedef struct {
178	int min_width, min_height;
179	int max_width, max_height;
180	int width_inc, height_inc;
181} XIconSize;
182
183typedef struct {
184	char *res_name;
185	char *res_class;
186} XClassHint;
187
188#ifdef XUTIL_DEFINE_FUNCTIONS
189extern int XDestroyImage(
190        XImage *ximage);
191extern unsigned long XGetPixel(
192        XImage *ximage,
193        int x, int y);
194extern int XPutPixel(
195        XImage *ximage,
196        int x, int y,
197        unsigned long pixel);
198extern XImage *XSubImage(
199        XImage *ximage,
200        int x, int y,
201        unsigned int width, unsigned int height);
202extern 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 */
225typedef 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 */
267typedef 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
281typedef 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 */
314typedef 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
351typedef 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
360extern XClassHint *XAllocClassHint (
361    void
362);
363
364extern XIconSize *XAllocIconSize (
365    void
366);
367
368extern XSizeHints *XAllocSizeHints (
369    void
370);
371
372extern XStandardColormap *XAllocStandardColormap (
373    void
374);
375
376extern XWMHints *XAllocWMHints (
377    void
378);
379
380extern int XClipBox(
381    Region		/* r */,
382    XRectangle*		/* rect_return */
383);
384
385extern Region XCreateRegion(
386    void
387);
388
389extern const char *XDefaultString (void);
390
391extern int XDeleteContext(
392    Display*		/* display */,
393    XID			/* rid */,
394    XContext		/* context */
395);
396
397extern int XDestroyRegion(
398    Region		/* r */
399);
400
401extern int XEmptyRegion(
402    Region		/* r */
403);
404
405extern int XEqualRegion(
406    Region		/* r1 */,
407    Region		/* r2 */
408);
409
410extern int XFindContext(
411    Display*		/* display */,
412    XID			/* rid */,
413    XContext		/* context */,
414    XPointer*		/* data_return */
415);
416
417extern Status XGetClassHint(
418    Display*		/* display */,
419    Window		/* w */,
420    XClassHint*		/* class_hints_return */
421);
422
423extern Status XGetIconSizes(
424    Display*		/* display */,
425    Window		/* w */,
426    XIconSize**		/* size_list_return */,
427    int*		/* count_return */
428);
429
430extern Status XGetNormalHints(
431    Display*		/* display */,
432    Window		/* w */,
433    XSizeHints*		/* hints_return */
434);
435
436extern Status XGetRGBColormaps(
437    Display*		/* display */,
438    Window		/* w */,
439    XStandardColormap** /* stdcmap_return */,
440    int*		/* count_return */,
441    Atom		/* property */
442);
443
444extern Status XGetSizeHints(
445    Display*		/* display */,
446    Window		/* w */,
447    XSizeHints*		/* hints_return */,
448    Atom		/* property */
449);
450
451extern Status XGetStandardColormap(
452    Display*		/* display */,
453    Window		/* w */,
454    XStandardColormap*	/* colormap_return */,
455    Atom		/* property */
456);
457
458extern Status XGetTextProperty(
459    Display*		/* display */,
460    Window		/* window */,
461    XTextProperty*	/* text_prop_return */,
462    Atom		/* property */
463);
464
465extern XVisualInfo *XGetVisualInfo(
466    Display*		/* display */,
467    long		/* vinfo_mask */,
468    XVisualInfo*	/* vinfo_template */,
469    int*		/* nitems_return */
470);
471
472extern Status XGetWMClientMachine(
473    Display*		/* display */,
474    Window		/* w */,
475    XTextProperty*	/* text_prop_return */
476);
477
478extern XWMHints *XGetWMHints(
479    Display*		/* display */,
480    Window		/* w */
481);
482
483extern Status XGetWMIconName(
484    Display*		/* display */,
485    Window		/* w */,
486    XTextProperty*	/* text_prop_return */
487);
488
489extern Status XGetWMName(
490    Display*		/* display */,
491    Window		/* w */,
492    XTextProperty*	/* text_prop_return */
493);
494
495extern Status XGetWMNormalHints(
496    Display*		/* display */,
497    Window		/* w */,
498    XSizeHints*		/* hints_return */,
499    long*		/* supplied_return */
500);
501
502extern Status XGetWMSizeHints(
503    Display*		/* display */,
504    Window		/* w */,
505    XSizeHints*		/* hints_return */,
506    long*		/* supplied_return */,
507    Atom		/* property */
508);
509
510extern Status XGetZoomHints(
511    Display*		/* display */,
512    Window		/* w */,
513    XSizeHints*		/* zhints_return */
514);
515
516extern int XIntersectRegion(
517    Region		/* sra */,
518    Region		/* srb */,
519    Region		/* dr_return */
520);
521
522extern void XConvertCase(
523    KeySym		/* sym */,
524    KeySym*		/* lower */,
525    KeySym*		/* upper */
526);
527
528extern 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
536extern Status XMatchVisualInfo(
537    Display*		/* display */,
538    int			/* screen */,
539    int			/* depth */,
540    int			/* class */,
541    XVisualInfo*	/* vinfo_return */
542);
543
544extern int XOffsetRegion(
545    Region		/* r */,
546    int			/* dx */,
547    int			/* dy */
548);
549
550extern Bool XPointInRegion(
551    Region		/* r */,
552    int			/* x */,
553    int			/* y */
554);
555
556extern Region XPolygonRegion(
557    XPoint*		/* points */,
558    int			/* n */,
559    int			/* fill_rule */
560);
561
562extern int XRectInRegion(
563    Region		/* r */,
564    int			/* x */,
565    int			/* y */,
566    unsigned int	/* width */,
567    unsigned int	/* height */
568);
569
570extern int XSaveContext(
571    Display*		/* display */,
572    XID			/* rid */,
573    XContext		/* context */,
574    _Xconst char*	/* data */
575);
576
577extern int XSetClassHint(
578    Display*		/* display */,
579    Window		/* w */,
580    XClassHint*		/* class_hints */
581);
582
583extern int XSetIconSizes(
584    Display*		/* display */,
585    Window		/* w */,
586    XIconSize*		/* size_list */,
587    int			/* count */
588);
589
590extern int XSetNormalHints(
591    Display*		/* display */,
592    Window		/* w */,
593    XSizeHints*		/* hints */
594);
595
596extern void XSetRGBColormaps(
597    Display*		/* display */,
598    Window		/* w */,
599    XStandardColormap*	/* stdcmaps */,
600    int			/* count */,
601    Atom		/* property */
602);
603
604extern int XSetSizeHints(
605    Display*		/* display */,
606    Window		/* w */,
607    XSizeHints*		/* hints */,
608    Atom		/* property */
609);
610
611extern 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
622extern void XSetTextProperty(
623    Display*		/* display */,
624    Window		/* w */,
625    XTextProperty*	/* text_prop */,
626    Atom		/* property */
627);
628
629extern void XSetWMClientMachine(
630    Display*		/* display */,
631    Window		/* w */,
632    XTextProperty*	/* text_prop */
633);
634
635extern int XSetWMHints(
636    Display*		/* display */,
637    Window		/* w */,
638    XWMHints*		/* wm_hints */
639);
640
641extern void XSetWMIconName(
642    Display*		/* display */,
643    Window		/* w */,
644    XTextProperty*	/* text_prop */
645);
646
647extern void XSetWMName(
648    Display*		/* display */,
649    Window		/* w */,
650    XTextProperty*	/* text_prop */
651);
652
653extern void XSetWMNormalHints(
654    Display*		/* display */,
655    Window		/* w */,
656    XSizeHints*		/* hints */
657);
658
659extern 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
671extern 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
683extern 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
695extern void XSetWMSizeHints(
696    Display*		/* display */,
697    Window		/* w */,
698    XSizeHints*		/* hints */,
699    Atom		/* property */
700);
701
702extern int XSetRegion(
703    Display*		/* display */,
704    GC			/* gc */,
705    Region		/* r */
706);
707
708extern void XSetStandardColormap(
709    Display*		/* display */,
710    Window		/* w */,
711    XStandardColormap*	/* colormap */,
712    Atom		/* property */
713);
714
715extern int XSetZoomHints(
716    Display*		/* display */,
717    Window		/* w */,
718    XSizeHints*		/* zhints */
719);
720
721extern int XShrinkRegion(
722    Region		/* r */,
723    int			/* dx */,
724    int			/* dy */
725);
726
727extern Status XStringListToTextProperty(
728    char**		/* list */,
729    int			/* count */,
730    XTextProperty*	/* text_prop_return */
731);
732
733extern int XSubtractRegion(
734    Region		/* sra */,
735    Region		/* srb */,
736    Region		/* dr_return */
737);
738
739extern int XmbTextListToTextProperty(
740    Display*		display,
741    char**		list,
742    int			count,
743    XICCEncodingStyle	style,
744    XTextProperty*	text_prop_return
745);
746
747extern int XwcTextListToTextProperty(
748    Display*		display,
749    wchar_t**		list,
750    int			count,
751    XICCEncodingStyle	style,
752    XTextProperty*	text_prop_return
753);
754
755extern int Xutf8TextListToTextProperty(
756    Display*		display,
757    char**		list,
758    int			count,
759    XICCEncodingStyle	style,
760    XTextProperty*	text_prop_return
761);
762
763extern void XwcFreeStringList(
764    wchar_t**		list
765);
766
767extern Status XTextPropertyToStringList(
768    XTextProperty*	/* text_prop */,
769    char***		/* list_return */,
770    int*		/* count_return */
771);
772
773extern int XmbTextPropertyToTextList(
774    Display*		display,
775    const XTextProperty* text_prop,
776    char***		list_return,
777    int*		count_return
778);
779
780extern int XwcTextPropertyToTextList(
781    Display*		display,
782    const XTextProperty* text_prop,
783    wchar_t***		list_return,
784    int*		count_return
785);
786
787extern int Xutf8TextPropertyToTextList(
788    Display*		display,
789    const XTextProperty* text_prop,
790    char***		list_return,
791    int*		count_return
792);
793
794extern int XUnionRectWithRegion(
795    XRectangle*		/* rectangle */,
796    Region		/* src_region */,
797    Region		/* dest_region_return */
798);
799
800extern int XUnionRegion(
801    Region		/* sra */,
802    Region		/* srb */,
803    Region		/* dr_return */
804);
805
806extern 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
820extern int XXorRegion(
821    Region		/* sra */,
822    Region		/* srb */,
823    Region		/* dr_return */
824);
825
826_XFUNCPROTOEND
827
828#endif /* _XUTIL_H_ */
829