• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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