Updated collectd to 4.4.4
[packages.git] / XOrg / headers / native / src / X11 / Xlib.h
1 /* $XdotOrg: lib/X11/include/X11/Xlib.h,v 1.6 2005-11-08 06:33:25 jkj Exp $ */
2 /* $Xorg: Xlib.h,v 1.6 2001/02/09 02:03:38 xorgcvs Exp $ */
3 /* 
4
5 Copyright 1985, 1986, 1987, 1991, 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 /* $XFree86: xc/lib/X11/Xlib.h,v 3.25 2003/11/17 22:20:10 dawes Exp $ */
29
30
31 /*
32  *      Xlib.h - Header definition and support file for the C subroutine
33  *      interface library (Xlib) to the X Window System Protocol (V11).
34  *      Structures and symbols starting with "_" are private to the library.
35  */
36 #ifndef _XLIB_H_
37 #define _XLIB_H_
38
39 #define XlibSpecificationRelease 6
40
41 #ifdef USG
42 #ifndef __TYPES__
43 #include <sys/types.h>                  /* forgot to protect it... */
44 #define __TYPES__
45 #endif /* __TYPES__ */
46 #else
47 #if defined(_POSIX_SOURCE) && defined(MOTOROLA)
48 #undef _POSIX_SOURCE
49 #include <sys/types.h>
50 #define _POSIX_SOURCE
51 #else
52 #include <sys/types.h>
53 #endif
54 #endif /* USG */
55
56 #if defined(__SCO__) || defined(__UNIXWARE__)
57 #include <stdint.h>
58 #endif
59
60 #include <X11/X.h>
61
62 /* applications should not depend on these two headers being included! */
63 #include <X11/Xfuncproto.h>
64 #include <X11/Xosdefs.h>
65
66 #ifndef X_WCHAR
67 #ifdef X_NOT_STDC_ENV
68 #ifndef ISC
69 #define X_WCHAR
70 #endif
71 #endif
72 #endif
73
74 #ifndef X_WCHAR
75 #include <stddef.h>
76 #else
77 #ifdef __UNIXOS2__
78 #include <stdlib.h>
79 #else
80 /* replace this with #include or typedef appropriate for your system */
81 typedef unsigned long wchar_t;
82 #endif
83 #endif
84
85 #if defined(ISC) && defined(USE_XMBTOWC)
86 #define wctomb(a,b)     _Xwctomb(a,b)
87 #define mblen(a,b)      _Xmblen(a,b) 
88 #ifndef USE_XWCHAR_STRING
89 #define mbtowc(a,b,c)   _Xmbtowc(a,b,c)
90 #endif
91 #endif
92
93 extern int
94 _Xmblen(
95 #ifdef ISC
96     char const *str,
97     size_t len
98 #else
99     char *str,
100     int len
101 #endif
102     );
103
104 /* API mentioning "UTF8" or "utf8" is an XFree86 extension, introduced in
105    November 2000. Its presence is indicated through the following macro. */
106 #define X_HAVE_UTF8_STRING 1
107
108 typedef char *XPointer;
109
110 #define Bool int
111 #define Status int
112 #define True 1
113 #define False 0
114
115 #define QueuedAlready 0
116 #define QueuedAfterReading 1
117 #define QueuedAfterFlush 2
118
119 #define ConnectionNumber(dpy)   (((_XPrivDisplay)dpy)->fd)
120 #define RootWindow(dpy, scr)    (ScreenOfDisplay(dpy,scr)->root)
121 #define DefaultScreen(dpy)      (((_XPrivDisplay)dpy)->default_screen)
122 #define DefaultRootWindow(dpy)  (ScreenOfDisplay(dpy,DefaultScreen(dpy))->root)
123 #define DefaultVisual(dpy, scr) (ScreenOfDisplay(dpy,scr)->root_visual)
124 #define DefaultGC(dpy, scr)     (ScreenOfDisplay(dpy,scr)->default_gc)
125 #define BlackPixel(dpy, scr)    (ScreenOfDisplay(dpy,scr)->black_pixel)
126 #define WhitePixel(dpy, scr)    (ScreenOfDisplay(dpy,scr)->white_pixel)
127 #define AllPlanes               ((unsigned long)~0L)
128 #define QLength(dpy)            (((_XPrivDisplay)dpy)->qlen)
129 #define DisplayWidth(dpy, scr)  (ScreenOfDisplay(dpy,scr)->width)
130 #define DisplayHeight(dpy, scr) (ScreenOfDisplay(dpy,scr)->height)
131 #define DisplayWidthMM(dpy, scr)(ScreenOfDisplay(dpy,scr)->mwidth)
132 #define DisplayHeightMM(dpy, scr)(ScreenOfDisplay(dpy,scr)->mheight)
133 #define DisplayPlanes(dpy, scr) (ScreenOfDisplay(dpy,scr)->root_depth)
134 #define DisplayCells(dpy, scr)  (DefaultVisual(dpy,scr)->map_entries)
135 #define ScreenCount(dpy)        (((_XPrivDisplay)dpy)->nscreens)
136 #define ServerVendor(dpy)       (((_XPrivDisplay)dpy)->vendor)
137 #define ProtocolVersion(dpy)    (((_XPrivDisplay)dpy)->proto_major_version)
138 #define ProtocolRevision(dpy)   (((_XPrivDisplay)dpy)->proto_minor_version)
139 #define VendorRelease(dpy)      (((_XPrivDisplay)dpy)->release)
140 #define DisplayString(dpy)      (((_XPrivDisplay)dpy)->display_name)
141 #define DefaultDepth(dpy, scr)  (ScreenOfDisplay(dpy,scr)->root_depth)
142 #define DefaultColormap(dpy, scr)(ScreenOfDisplay(dpy,scr)->cmap)
143 #define BitmapUnit(dpy)         (((_XPrivDisplay)dpy)->bitmap_unit)
144 #define BitmapBitOrder(dpy)     (((_XPrivDisplay)dpy)->bitmap_bit_order)
145 #define BitmapPad(dpy)          (((_XPrivDisplay)dpy)->bitmap_pad)
146 #define ImageByteOrder(dpy)     (((_XPrivDisplay)dpy)->byte_order)
147 #ifdef CRAY /* unable to get WORD64 without pulling in other symbols */
148 #define NextRequest(dpy)        XNextRequest(dpy)
149 #else
150 #define NextRequest(dpy)        (((_XPrivDisplay)dpy)->request + 1)
151 #endif
152 #define LastKnownRequestProcessed(dpy)  (((_XPrivDisplay)dpy)->last_request_read)
153
154 /* macros for screen oriented applications (toolkit) */
155 #define ScreenOfDisplay(dpy, scr)(&((_XPrivDisplay)dpy)->screens[scr])
156 #define DefaultScreenOfDisplay(dpy) ScreenOfDisplay(dpy,DefaultScreen(dpy))
157 #define DisplayOfScreen(s)      ((s)->display)
158 #define RootWindowOfScreen(s)   ((s)->root)
159 #define BlackPixelOfScreen(s)   ((s)->black_pixel)
160 #define WhitePixelOfScreen(s)   ((s)->white_pixel)
161 #define DefaultColormapOfScreen(s)((s)->cmap)
162 #define DefaultDepthOfScreen(s) ((s)->root_depth)
163 #define DefaultGCOfScreen(s)    ((s)->default_gc)
164 #define DefaultVisualOfScreen(s)((s)->root_visual)
165 #define WidthOfScreen(s)        ((s)->width)
166 #define HeightOfScreen(s)       ((s)->height)
167 #define WidthMMOfScreen(s)      ((s)->mwidth)
168 #define HeightMMOfScreen(s)     ((s)->mheight)
169 #define PlanesOfScreen(s)       ((s)->root_depth)
170 #define CellsOfScreen(s)        (DefaultVisualOfScreen((s))->map_entries)
171 #define MinCmapsOfScreen(s)     ((s)->min_maps)
172 #define MaxCmapsOfScreen(s)     ((s)->max_maps)
173 #define DoesSaveUnders(s)       ((s)->save_unders)
174 #define DoesBackingStore(s)     ((s)->backing_store)
175 #define EventMaskOfScreen(s)    ((s)->root_input_mask)
176
177 /*
178  * Extensions need a way to hang private data on some structures.
179  */
180 typedef struct _XExtData {
181         int number;             /* number returned by XRegisterExtension */
182         struct _XExtData *next; /* next item on list of data for structure */
183         int (*free_private)(    /* called to free private storage */
184         struct _XExtData *extension
185         );
186         XPointer private_data;  /* data private to this extension. */
187 } XExtData;
188
189 /*
190  * This file contains structures used by the extension mechanism.
191  */
192 typedef struct {                /* public to extension, cannot be changed */
193         int extension;          /* extension number */
194         int major_opcode;       /* major op-code assigned by server */
195         int first_event;        /* first event number for the extension */
196         int first_error;        /* first error number for the extension */
197 } XExtCodes;
198
199 /*
200  * Data structure for retrieving info about pixmap formats.
201  */
202
203 typedef struct {
204     int depth;
205     int bits_per_pixel;
206     int scanline_pad;
207 } XPixmapFormatValues;
208
209
210 /*
211  * Data structure for setting graphics context.
212  */
213 typedef struct {
214         int function;           /* logical operation */
215         unsigned long plane_mask;/* plane mask */
216         unsigned long foreground;/* foreground pixel */
217         unsigned long background;/* background pixel */
218         int line_width;         /* line width */
219         int line_style;         /* LineSolid, LineOnOffDash, LineDoubleDash */
220         int cap_style;          /* CapNotLast, CapButt, 
221                                    CapRound, CapProjecting */
222         int join_style;         /* JoinMiter, JoinRound, JoinBevel */
223         int fill_style;         /* FillSolid, FillTiled, 
224                                    FillStippled, FillOpaeueStippled */
225         int fill_rule;          /* EvenOddRule, WindingRule */
226         int arc_mode;           /* ArcChord, ArcPieSlice */
227         Pixmap tile;            /* tile pixmap for tiling operations */
228         Pixmap stipple;         /* stipple 1 plane pixmap for stipping */
229         int ts_x_origin;        /* offset for tile or stipple operations */
230         int ts_y_origin;
231         Font font;              /* default text font for text operations */
232         int subwindow_mode;     /* ClipByChildren, IncludeInferiors */
233         Bool graphics_exposures;/* boolean, should exposures be generated */
234         int clip_x_origin;      /* origin for clipping */
235         int clip_y_origin;
236         Pixmap clip_mask;       /* bitmap clipping; other calls for rects */
237         int dash_offset;        /* patterned/dashed line information */
238         char dashes;
239 } XGCValues;
240
241 /*
242  * Graphics context.  The contents of this structure are implementation
243  * dependent.  A GC should be treated as opaque by application code.
244  */
245
246 typedef struct _XGC
247 #ifdef XLIB_ILLEGAL_ACCESS
248 {
249     XExtData *ext_data; /* hook for extension to hang data */
250     GContext gid;       /* protocol ID for graphics context */
251     /* there is more to this structure, but it is private to Xlib */
252 }
253 #endif
254 *GC;
255
256 /*
257  * Visual structure; contains information about colormapping possible.
258  */
259 typedef struct {
260         XExtData *ext_data;     /* hook for extension to hang data */
261         VisualID visualid;      /* visual id of this visual */
262 #if defined(__cplusplus) || defined(c_plusplus)
263         int c_class;            /* C++ class of screen (monochrome, etc.) */
264 #else
265         int class;              /* class of screen (monochrome, etc.) */
266 #endif
267         unsigned long red_mask, green_mask, blue_mask;  /* mask values */
268         int bits_per_rgb;       /* log base 2 of distinct color values */
269         int map_entries;        /* color map entries */
270 } Visual;
271
272 /*
273  * Depth structure; contains information for each possible depth.
274  */     
275 typedef struct {
276         int depth;              /* this depth (Z) of the depth */
277         int nvisuals;           /* number of Visual types at this depth */
278         Visual *visuals;        /* list of visuals possible at this depth */
279 } Depth;
280
281 /*
282  * Information about the screen.  The contents of this structure are
283  * implementation dependent.  A Screen should be treated as opaque
284  * by application code.
285  */
286
287 struct _XDisplay;               /* Forward declare before use for C++ */
288
289 typedef struct {
290         XExtData *ext_data;     /* hook for extension to hang data */
291         struct _XDisplay *display;/* back pointer to display structure */
292         Window root;            /* Root window id. */
293         int width, height;      /* width and height of screen */
294         int mwidth, mheight;    /* width and height of  in millimeters */
295         int ndepths;            /* number of depths possible */
296         Depth *depths;          /* list of allowable depths on the screen */
297         int root_depth;         /* bits per pixel */
298         Visual *root_visual;    /* root visual */
299         GC default_gc;          /* GC for the root root visual */
300         Colormap cmap;          /* default color map */
301         unsigned long white_pixel;
302         unsigned long black_pixel;      /* White and Black pixel values */
303         int max_maps, min_maps; /* max and min color maps */
304         int backing_store;      /* Never, WhenMapped, Always */
305         Bool save_unders;       
306         long root_input_mask;   /* initial root input mask */
307 } Screen;
308
309 /*
310  * Format structure; describes ZFormat data the screen will understand.
311  */
312 typedef struct {
313         XExtData *ext_data;     /* hook for extension to hang data */
314         int depth;              /* depth of this image format */
315         int bits_per_pixel;     /* bits/pixel at this depth */
316         int scanline_pad;       /* scanline must padded to this multiple */
317 } ScreenFormat;
318
319 /*
320  * Data structure for setting window attributes.
321  */
322 typedef struct {
323     Pixmap background_pixmap;   /* background or None or ParentRelative */
324     unsigned long background_pixel;     /* background pixel */
325     Pixmap border_pixmap;       /* border of the window */
326     unsigned long border_pixel; /* border pixel value */
327     int bit_gravity;            /* one of bit gravity values */
328     int win_gravity;            /* one of the window gravity values */
329     int backing_store;          /* NotUseful, WhenMapped, Always */
330     unsigned long backing_planes;/* planes to be preseved if possible */
331     unsigned long backing_pixel;/* value to use in restoring planes */
332     Bool save_under;            /* should bits under be saved? (popups) */
333     long event_mask;            /* set of events that should be saved */
334     long do_not_propagate_mask; /* set of events that should not propagate */
335     Bool override_redirect;     /* boolean value for override-redirect */
336     Colormap colormap;          /* color map to be associated with window */
337     Cursor cursor;              /* cursor to be displayed (or None) */
338 } XSetWindowAttributes;
339
340 typedef struct {
341     int x, y;                   /* location of window */
342     int width, height;          /* width and height of window */
343     int border_width;           /* border width of window */
344     int depth;                  /* depth of window */
345     Visual *visual;             /* the associated visual structure */
346     Window root;                /* root of screen containing window */
347 #if defined(__cplusplus) || defined(c_plusplus)
348     int c_class;                /* C++ InputOutput, InputOnly*/
349 #else
350     int class;                  /* InputOutput, InputOnly*/
351 #endif
352     int bit_gravity;            /* one of bit gravity values */
353     int win_gravity;            /* one of the window gravity values */
354     int backing_store;          /* NotUseful, WhenMapped, Always */
355     unsigned long backing_planes;/* planes to be preserved if possible */
356     unsigned long backing_pixel;/* value to be used when restoring planes */
357     Bool save_under;            /* boolean, should bits under be saved? */
358     Colormap colormap;          /* color map to be associated with window */
359     Bool map_installed;         /* boolean, is color map currently installed*/
360     int map_state;              /* IsUnmapped, IsUnviewable, IsViewable */
361     long all_event_masks;       /* set of events all people have interest in*/
362     long your_event_mask;       /* my event mask */
363     long do_not_propagate_mask; /* set of events that should not propagate */
364     Bool override_redirect;     /* boolean value for override-redirect */
365     Screen *screen;             /* back pointer to correct screen */
366 } XWindowAttributes;
367
368 /*
369  * Data structure for host setting; getting routines.
370  *
371  */
372
373 typedef struct {
374         int family;             /* for example FamilyInternet */
375         int length;             /* length of address, in bytes */
376         char *address;          /* pointer to where to find the bytes */
377 } XHostAddress;
378
379 /*
380  * Data structure for ServerFamilyInterpreted addresses in host routines
381  */
382 typedef struct {
383         int typelength;         /* length of type string, in bytes */
384         int valuelength;        /* length of value string, in bytes */
385         char *type;             /* pointer to where to find the type string */
386         char *value;            /* pointer to where to find the address */
387 } XServerInterpretedAddress;
388
389 /*
390  * Data structure for "image" data, used by image manipulation routines.
391  */
392 typedef struct _XImage {
393     int width, height;          /* size of image */
394     int xoffset;                /* number of pixels offset in X direction */
395     int format;                 /* XYBitmap, XYPixmap, ZPixmap */
396     char *data;                 /* pointer to image data */
397     int byte_order;             /* data byte order, LSBFirst, MSBFirst */
398     int bitmap_unit;            /* quant. of scanline 8, 16, 32 */
399     int bitmap_bit_order;       /* LSBFirst, MSBFirst */
400     int bitmap_pad;             /* 8, 16, 32 either XY or ZPixmap */
401     int depth;                  /* depth of image */
402     int bytes_per_line;         /* accelarator to next line */
403     int bits_per_pixel;         /* bits per pixel (ZPixmap) */
404     unsigned long red_mask;     /* bits in z arrangment */
405     unsigned long green_mask;
406     unsigned long blue_mask;
407     XPointer obdata;            /* hook for the object routines to hang on */
408     struct funcs {              /* image manipulation routines */
409         struct _XImage *(*create_image)(
410                 struct _XDisplay* /* display */,
411                 Visual*         /* visual */,
412                 unsigned int    /* depth */,
413                 int             /* format */,
414                 int             /* offset */,
415                 char*           /* data */,
416                 unsigned int    /* width */,
417                 unsigned int    /* height */,
418                 int             /* bitmap_pad */,
419                 int             /* bytes_per_line */);
420         int (*destroy_image)        (struct _XImage *);
421         unsigned long (*get_pixel)  (struct _XImage *, int, int);
422         int (*put_pixel)            (struct _XImage *, int, int, unsigned long);
423         struct _XImage *(*sub_image)(struct _XImage *, int, int, unsigned int, unsigned int);
424         int (*add_pixel)            (struct _XImage *, long);
425         } f;
426 } XImage;
427
428 /* 
429  * Data structure for XReconfigureWindow
430  */
431 typedef struct {
432     int x, y;
433     int width, height;
434     int border_width;
435     Window sibling;
436     int stack_mode;
437 } XWindowChanges;
438
439 /*
440  * Data structure used by color operations
441  */
442 typedef struct {
443         unsigned long pixel;
444         unsigned short red, green, blue;
445         char flags;  /* do_red, do_green, do_blue */
446         char pad;
447 } XColor;
448
449 /* 
450  * Data structures for graphics operations.  On most machines, these are
451  * congruent with the wire protocol structures, so reformatting the data
452  * can be avoided on these architectures.
453  */
454 typedef struct {
455     short x1, y1, x2, y2;
456 } XSegment;
457
458 typedef struct {
459     short x, y;
460 } XPoint;
461     
462 typedef struct {
463     short x, y;
464     unsigned short width, height;
465 } XRectangle;
466     
467 typedef struct {
468     short x, y;
469     unsigned short width, height;
470     short angle1, angle2;
471 } XArc;
472
473
474 /* Data structure for XChangeKeyboardControl */
475
476 typedef struct {
477         int key_click_percent;
478         int bell_percent;
479         int bell_pitch;
480         int bell_duration;
481         int led;
482         int led_mode;
483         int key;
484         int auto_repeat_mode;   /* On, Off, Default */
485 } XKeyboardControl;
486
487 /* Data structure for XGetKeyboardControl */
488
489 typedef struct {
490         int key_click_percent;
491         int bell_percent;
492         unsigned int bell_pitch, bell_duration;
493         unsigned long led_mask;
494         int global_auto_repeat;
495         char auto_repeats[32];
496 } XKeyboardState;
497
498 /* Data structure for XGetMotionEvents.  */
499
500 typedef struct {
501         Time time;
502         short x, y;
503 } XTimeCoord;
504
505 /* Data structure for X{Set,Get}ModifierMapping */
506
507 typedef struct {
508         int max_keypermod;      /* The server's max # of keys per modifier */
509         KeyCode *modifiermap;   /* An 8 by max_keypermod array of modifiers */
510 } XModifierKeymap;
511
512
513 /*
514  * Display datatype maintaining display specific data.
515  * The contents of this structure are implementation dependent.
516  * A Display should be treated as opaque by application code.
517  */
518 #ifndef XLIB_ILLEGAL_ACCESS
519 typedef struct _XDisplay Display;
520 #endif
521
522 struct _XPrivate;               /* Forward declare before use for C++ */
523 struct _XrmHashBucketRec;
524
525 typedef struct 
526 #ifdef XLIB_ILLEGAL_ACCESS
527 _XDisplay
528 #endif
529 {
530         XExtData *ext_data;     /* hook for extension to hang data */
531         struct _XPrivate *private1;
532         int fd;                 /* Network socket. */
533         int private2;
534         int proto_major_version;/* major version of server's X protocol */
535         int proto_minor_version;/* minor version of servers X protocol */
536         char *vendor;           /* vendor of the server hardware */
537         XID private3;
538         XID private4;
539         XID private5;
540         int private6;
541         XID (*resource_alloc)(  /* allocator function */
542                 struct _XDisplay*
543         );
544         int byte_order;         /* screen byte order, LSBFirst, MSBFirst */
545         int bitmap_unit;        /* padding and data requirements */
546         int bitmap_pad;         /* padding requirements on bitmaps */
547         int bitmap_bit_order;   /* LeastSignificant or MostSignificant */
548         int nformats;           /* number of pixmap formats in list */
549         ScreenFormat *pixmap_format;    /* pixmap format list */
550         int private8;
551         int release;            /* release of the server */
552         struct _XPrivate *private9, *private10;
553         int qlen;               /* Length of input event queue */
554         unsigned long last_request_read; /* seq number of last event read */
555         unsigned long request;  /* sequence number of last request. */
556         XPointer private11;
557         XPointer private12;
558         XPointer private13;
559         XPointer private14;
560         unsigned max_request_size; /* maximum number 32 bit words in request*/
561         struct _XrmHashBucketRec *db;
562         int (*private15)(
563                 struct _XDisplay*
564                 );
565         char *display_name;     /* "host:display" string used on this connect*/
566         int default_screen;     /* default screen for operations */
567         int nscreens;           /* number of screens on this server*/
568         Screen *screens;        /* pointer to list of screens */
569         unsigned long motion_buffer;    /* size of motion buffer */
570         unsigned long private16;
571         int min_keycode;        /* minimum defined keycode */
572         int max_keycode;        /* maximum defined keycode */
573         XPointer private17;
574         XPointer private18;
575         int private19;
576         char *xdefaults;        /* contents of defaults from server */
577         /* there is more to this structure, but it is private to Xlib */
578 }
579 #ifdef XLIB_ILLEGAL_ACCESS
580 Display, 
581 #endif
582 *_XPrivDisplay;
583
584 #undef _XEVENT_
585 #ifndef _XEVENT_
586 /*
587  * Definitions of specific events.
588  */
589 typedef struct {
590         int type;               /* of event */
591         unsigned long serial;   /* # of last request processed by server */
592         Bool send_event;        /* true if this came from a SendEvent request */
593         Display *display;       /* Display the event was read from */
594         Window window;          /* "event" window it is reported relative to */
595         Window root;            /* root window that the event occurred on */
596         Window subwindow;       /* child window */
597         Time time;              /* milliseconds */
598         int x, y;               /* pointer x, y coordinates in event window */
599         int x_root, y_root;     /* coordinates relative to root */
600         unsigned int state;     /* key or button mask */
601         unsigned int keycode;   /* detail */
602         Bool same_screen;       /* same screen flag */
603 } XKeyEvent;
604 typedef XKeyEvent XKeyPressedEvent;
605 typedef XKeyEvent XKeyReleasedEvent;
606
607 typedef struct {
608         int type;               /* of event */
609         unsigned long serial;   /* # of last request processed by server */
610         Bool send_event;        /* true if this came from a SendEvent request */
611         Display *display;       /* Display the event was read from */
612         Window window;          /* "event" window it is reported relative to */
613         Window root;            /* root window that the event occurred on */
614         Window subwindow;       /* child window */
615         Time time;              /* milliseconds */
616         int x, y;               /* pointer x, y coordinates in event window */
617         int x_root, y_root;     /* coordinates relative to root */
618         unsigned int state;     /* key or button mask */
619         unsigned int button;    /* detail */
620         Bool same_screen;       /* same screen flag */
621 } XButtonEvent;
622 typedef XButtonEvent XButtonPressedEvent;
623 typedef XButtonEvent XButtonReleasedEvent;
624
625 typedef struct {
626         int type;               /* of event */
627         unsigned long serial;   /* # of last request processed by server */
628         Bool send_event;        /* true if this came from a SendEvent request */
629         Display *display;       /* Display the event was read from */
630         Window window;          /* "event" window reported relative to */
631         Window root;            /* root window that the event occurred on */
632         Window subwindow;       /* child window */
633         Time time;              /* milliseconds */
634         int x, y;               /* pointer x, y coordinates in event window */
635         int x_root, y_root;     /* coordinates relative to root */
636         unsigned int state;     /* key or button mask */
637         char is_hint;           /* detail */
638         Bool same_screen;       /* same screen flag */
639 } XMotionEvent;
640 typedef XMotionEvent XPointerMovedEvent;
641
642 typedef struct {
643         int type;               /* of event */
644         unsigned long serial;   /* # of last request processed by server */
645         Bool send_event;        /* true if this came from a SendEvent request */
646         Display *display;       /* Display the event was read from */
647         Window window;          /* "event" window reported relative to */
648         Window root;            /* root window that the event occurred on */
649         Window subwindow;       /* child window */
650         Time time;              /* milliseconds */
651         int x, y;               /* pointer x, y coordinates in event window */
652         int x_root, y_root;     /* coordinates relative to root */
653         int mode;               /* NotifyNormal, NotifyGrab, NotifyUngrab */
654         int detail;
655         /*
656          * NotifyAncestor, NotifyVirtual, NotifyInferior, 
657          * NotifyNonlinear,NotifyNonlinearVirtual
658          */
659         Bool same_screen;       /* same screen flag */
660         Bool focus;             /* boolean focus */
661         unsigned int state;     /* key or button mask */
662 } XCrossingEvent;
663 typedef XCrossingEvent XEnterWindowEvent;
664 typedef XCrossingEvent XLeaveWindowEvent;
665
666 typedef struct {
667         int type;               /* FocusIn or FocusOut */
668         unsigned long serial;   /* # of last request processed by server */
669         Bool send_event;        /* true if this came from a SendEvent request */
670         Display *display;       /* Display the event was read from */
671         Window window;          /* window of event */
672         int mode;               /* NotifyNormal, NotifyWhileGrabbed,
673                                    NotifyGrab, NotifyUngrab */
674         int detail;
675         /*
676          * NotifyAncestor, NotifyVirtual, NotifyInferior, 
677          * NotifyNonlinear,NotifyNonlinearVirtual, NotifyPointer,
678          * NotifyPointerRoot, NotifyDetailNone 
679          */
680 } XFocusChangeEvent;
681 typedef XFocusChangeEvent XFocusInEvent;
682 typedef XFocusChangeEvent XFocusOutEvent;
683
684 /* generated on EnterWindow and FocusIn  when KeyMapState selected */
685 typedef struct {
686         int type;
687         unsigned long serial;   /* # of last request processed by server */
688         Bool send_event;        /* true if this came from a SendEvent request */
689         Display *display;       /* Display the event was read from */
690         Window window;
691         char key_vector[32];
692 } XKeymapEvent; 
693
694 typedef struct {
695         int type;
696         unsigned long serial;   /* # of last request processed by server */
697         Bool send_event;        /* true if this came from a SendEvent request */
698         Display *display;       /* Display the event was read from */
699         Window window;
700         int x, y;
701         int width, height;
702         int count;              /* if non-zero, at least this many more */
703 } XExposeEvent;
704
705 typedef struct {
706         int type;
707         unsigned long serial;   /* # of last request processed by server */
708         Bool send_event;        /* true if this came from a SendEvent request */
709         Display *display;       /* Display the event was read from */
710         Drawable drawable;
711         int x, y;
712         int width, height;
713         int count;              /* if non-zero, at least this many more */
714         int major_code;         /* core is CopyArea or CopyPlane */
715         int minor_code;         /* not defined in the core */
716 } XGraphicsExposeEvent;
717
718 typedef struct {
719         int type;
720         unsigned long serial;   /* # of last request processed by server */
721         Bool send_event;        /* true if this came from a SendEvent request */
722         Display *display;       /* Display the event was read from */
723         Drawable drawable;
724         int major_code;         /* core is CopyArea or CopyPlane */
725         int minor_code;         /* not defined in the core */
726 } XNoExposeEvent;
727
728 typedef struct {
729         int type;
730         unsigned long serial;   /* # of last request processed by server */
731         Bool send_event;        /* true if this came from a SendEvent request */
732         Display *display;       /* Display the event was read from */
733         Window window;
734         int state;              /* Visibility state */
735 } XVisibilityEvent;
736
737 typedef struct {
738         int type;
739         unsigned long serial;   /* # of last request processed by server */
740         Bool send_event;        /* true if this came from a SendEvent request */
741         Display *display;       /* Display the event was read from */
742         Window parent;          /* parent of the window */
743         Window window;          /* window id of window created */
744         int x, y;               /* window location */
745         int width, height;      /* size of window */
746         int border_width;       /* border width */
747         Bool override_redirect; /* creation should be overridden */
748 } XCreateWindowEvent;
749
750 typedef struct {
751         int type;
752         unsigned long serial;   /* # of last request processed by server */
753         Bool send_event;        /* true if this came from a SendEvent request */
754         Display *display;       /* Display the event was read from */
755         Window event;
756         Window window;
757 } XDestroyWindowEvent;
758
759 typedef struct {
760         int type;
761         unsigned long serial;   /* # of last request processed by server */
762         Bool send_event;        /* true if this came from a SendEvent request */
763         Display *display;       /* Display the event was read from */
764         Window event;
765         Window window;
766         Bool from_configure;
767 } XUnmapEvent;
768
769 typedef struct {
770         int type;
771         unsigned long serial;   /* # of last request processed by server */
772         Bool send_event;        /* true if this came from a SendEvent request */
773         Display *display;       /* Display the event was read from */
774         Window event;
775         Window window;
776         Bool override_redirect; /* boolean, is override set... */
777 } XMapEvent;
778
779 typedef struct {
780         int type;
781         unsigned long serial;   /* # of last request processed by server */
782         Bool send_event;        /* true if this came from a SendEvent request */
783         Display *display;       /* Display the event was read from */
784         Window parent;
785         Window window;
786 } XMapRequestEvent;
787
788 typedef struct {
789         int type;
790         unsigned long serial;   /* # of last request processed by server */
791         Bool send_event;        /* true if this came from a SendEvent request */
792         Display *display;       /* Display the event was read from */
793         Window event;
794         Window window;
795         Window parent;
796         int x, y;
797         Bool override_redirect;
798 } XReparentEvent;
799
800 typedef struct {
801         int type;
802         unsigned long serial;   /* # of last request processed by server */
803         Bool send_event;        /* true if this came from a SendEvent request */
804         Display *display;       /* Display the event was read from */
805         Window event;
806         Window window;
807         int x, y;
808         int width, height;
809         int border_width;
810         Window above;
811         Bool override_redirect;
812 } XConfigureEvent;
813
814 typedef struct {
815         int type;
816         unsigned long serial;   /* # of last request processed by server */
817         Bool send_event;        /* true if this came from a SendEvent request */
818         Display *display;       /* Display the event was read from */
819         Window event;
820         Window window;
821         int x, y;
822 } XGravityEvent;
823
824 typedef struct {
825         int type;
826         unsigned long serial;   /* # of last request processed by server */
827         Bool send_event;        /* true if this came from a SendEvent request */
828         Display *display;       /* Display the event was read from */
829         Window window;
830         int width, height;
831 } XResizeRequestEvent;
832
833 typedef struct {
834         int type;
835         unsigned long serial;   /* # of last request processed by server */
836         Bool send_event;        /* true if this came from a SendEvent request */
837         Display *display;       /* Display the event was read from */
838         Window parent;
839         Window window;
840         int x, y;
841         int width, height;
842         int border_width;
843         Window above;
844         int detail;             /* Above, Below, TopIf, BottomIf, Opposite */
845         unsigned long value_mask;
846 } XConfigureRequestEvent;
847
848 typedef struct {
849         int type;
850         unsigned long serial;   /* # of last request processed by server */
851         Bool send_event;        /* true if this came from a SendEvent request */
852         Display *display;       /* Display the event was read from */
853         Window event;
854         Window window;
855         int place;              /* PlaceOnTop, PlaceOnBottom */
856 } XCirculateEvent;
857
858 typedef struct {
859         int type;
860         unsigned long serial;   /* # of last request processed by server */
861         Bool send_event;        /* true if this came from a SendEvent request */
862         Display *display;       /* Display the event was read from */
863         Window parent;
864         Window window;
865         int place;              /* PlaceOnTop, PlaceOnBottom */
866 } XCirculateRequestEvent;
867
868 typedef struct {
869         int type;
870         unsigned long serial;   /* # of last request processed by server */
871         Bool send_event;        /* true if this came from a SendEvent request */
872         Display *display;       /* Display the event was read from */
873         Window window;
874         Atom atom;
875         Time time;
876         int state;              /* NewValue, Deleted */
877 } XPropertyEvent;
878
879 typedef struct {
880         int type;
881         unsigned long serial;   /* # of last request processed by server */
882         Bool send_event;        /* true if this came from a SendEvent request */
883         Display *display;       /* Display the event was read from */
884         Window window;
885         Atom selection;
886         Time time;
887 } XSelectionClearEvent;
888
889 typedef struct {
890         int type;
891         unsigned long serial;   /* # of last request processed by server */
892         Bool send_event;        /* true if this came from a SendEvent request */
893         Display *display;       /* Display the event was read from */
894         Window owner;
895         Window requestor;
896         Atom selection;
897         Atom target;
898         Atom property;
899         Time time;
900 } XSelectionRequestEvent;
901
902 typedef struct {
903         int type;
904         unsigned long serial;   /* # of last request processed by server */
905         Bool send_event;        /* true if this came from a SendEvent request */
906         Display *display;       /* Display the event was read from */
907         Window requestor;
908         Atom selection;
909         Atom target;
910         Atom property;          /* ATOM or None */
911         Time time;
912 } XSelectionEvent;
913
914 typedef struct {
915         int type;
916         unsigned long serial;   /* # of last request processed by server */
917         Bool send_event;        /* true if this came from a SendEvent request */
918         Display *display;       /* Display the event was read from */
919         Window window;
920         Colormap colormap;      /* COLORMAP or None */
921 #if defined(__cplusplus) || defined(c_plusplus)
922         Bool c_new;             /* C++ */
923 #else
924         Bool new;
925 #endif
926         int state;              /* ColormapInstalled, ColormapUninstalled */
927 } XColormapEvent;
928
929 typedef struct {
930         int type;
931         unsigned long serial;   /* # of last request processed by server */
932         Bool send_event;        /* true if this came from a SendEvent request */
933         Display *display;       /* Display the event was read from */
934         Window window;
935         Atom message_type;
936         int format;
937         union {
938                 char b[20];
939                 short s[10];
940                 long l[5];
941                 } data;
942 } XClientMessageEvent;
943
944 typedef struct {
945         int type;
946         unsigned long serial;   /* # of last request processed by server */
947         Bool send_event;        /* true if this came from a SendEvent request */
948         Display *display;       /* Display the event was read from */
949         Window window;          /* unused */
950         int request;            /* one of MappingModifier, MappingKeyboard,
951                                    MappingPointer */
952         int first_keycode;      /* first keycode */
953         int count;              /* defines range of change w. first_keycode*/
954 } XMappingEvent;
955
956 typedef struct {
957         int type;
958         Display *display;       /* Display the event was read from */
959         XID resourceid;         /* resource id */
960         unsigned long serial;   /* serial number of failed request */
961         unsigned char error_code;       /* error code of failed request */
962         unsigned char request_code;     /* Major op-code of failed request */
963         unsigned char minor_code;       /* Minor op-code of failed request */
964 } XErrorEvent;
965
966 typedef struct {
967         int type;
968         unsigned long serial;   /* # of last request processed by server */
969         Bool send_event;        /* true if this came from a SendEvent request */
970         Display *display;/* Display the event was read from */
971         Window window;  /* window on which event was requested in event mask */
972 } XAnyEvent;
973
974 /*
975  * this union is defined so Xlib can always use the same sized
976  * event structure internally, to avoid memory fragmentation.
977  */
978 typedef union _XEvent {
979         int type;               /* must not be changed; first element */
980         XAnyEvent xany;
981         XKeyEvent xkey;
982         XButtonEvent xbutton;
983         XMotionEvent xmotion;
984         XCrossingEvent xcrossing;
985         XFocusChangeEvent xfocus;
986         XExposeEvent xexpose;
987         XGraphicsExposeEvent xgraphicsexpose;
988         XNoExposeEvent xnoexpose;
989         XVisibilityEvent xvisibility;
990         XCreateWindowEvent xcreatewindow;
991         XDestroyWindowEvent xdestroywindow;
992         XUnmapEvent xunmap;
993         XMapEvent xmap;
994         XMapRequestEvent xmaprequest;
995         XReparentEvent xreparent;
996         XConfigureEvent xconfigure;
997         XGravityEvent xgravity;
998         XResizeRequestEvent xresizerequest;
999         XConfigureRequestEvent xconfigurerequest;
1000         XCirculateEvent xcirculate;
1001         XCirculateRequestEvent xcirculaterequest;
1002         XPropertyEvent xproperty;
1003         XSelectionClearEvent xselectionclear;
1004         XSelectionRequestEvent xselectionrequest;
1005         XSelectionEvent xselection;
1006         XColormapEvent xcolormap;
1007         XClientMessageEvent xclient;
1008         XMappingEvent xmapping;
1009         XErrorEvent xerror;
1010         XKeymapEvent xkeymap;
1011         long pad[24];
1012 } XEvent;
1013 #endif
1014
1015 #define XAllocID(dpy) ((*((_XPrivDisplay)dpy)->resource_alloc)((dpy)))
1016
1017 /*
1018  * per character font metric information.
1019  */
1020 typedef struct {
1021     short       lbearing;       /* origin to left edge of raster */
1022     short       rbearing;       /* origin to right edge of raster */
1023     short       width;          /* advance to next char's origin */
1024     short       ascent;         /* baseline to top edge of raster */
1025     short       descent;        /* baseline to bottom edge of raster */
1026     unsigned short attributes;  /* per char flags (not predefined) */
1027 } XCharStruct;
1028
1029 /*
1030  * To allow arbitrary information with fonts, there are additional properties
1031  * returned.
1032  */
1033 typedef struct {
1034     Atom name;
1035     unsigned long card32;
1036 } XFontProp;
1037
1038 typedef struct {
1039     XExtData    *ext_data;      /* hook for extension to hang data */
1040     Font        fid;            /* Font id for this font */
1041     unsigned    direction;      /* hint about direction the font is painted */
1042     unsigned    min_char_or_byte2;/* first character */
1043     unsigned    max_char_or_byte2;/* last character */
1044     unsigned    min_byte1;      /* first row that exists */
1045     unsigned    max_byte1;      /* last row that exists */
1046     Bool        all_chars_exist;/* flag if all characters have non-zero size*/
1047     unsigned    default_char;   /* char to print for undefined character */
1048     int         n_properties;   /* how many properties there are */
1049     XFontProp   *properties;    /* pointer to array of additional properties*/
1050     XCharStruct min_bounds;     /* minimum bounds over all existing char*/
1051     XCharStruct max_bounds;     /* maximum bounds over all existing char*/
1052     XCharStruct *per_char;      /* first_char to last_char information */
1053     int         ascent;         /* log. extent above baseline for spacing */
1054     int         descent;        /* log. descent below baseline for spacing */
1055 } XFontStruct;
1056
1057 /*
1058  * PolyText routines take these as arguments.
1059  */
1060 typedef struct {
1061     char *chars;                /* pointer to string */
1062     int nchars;                 /* number of characters */
1063     int delta;                  /* delta between strings */
1064     Font font;                  /* font to print it in, None don't change */
1065 } XTextItem;
1066
1067 typedef struct {                /* normal 16 bit characters are two bytes */
1068     unsigned char byte1;
1069     unsigned char byte2;
1070 } XChar2b;
1071
1072 typedef struct {
1073     XChar2b *chars;             /* two byte characters */
1074     int nchars;                 /* number of characters */
1075     int delta;                  /* delta between strings */
1076     Font font;                  /* font to print it in, None don't change */
1077 } XTextItem16;
1078
1079
1080 typedef union { Display *display;
1081                 GC gc;
1082                 Visual *visual;
1083                 Screen *screen;
1084                 ScreenFormat *pixmap_format;
1085                 XFontStruct *font; } XEDataObject;
1086
1087 typedef struct {
1088     XRectangle      max_ink_extent;
1089     XRectangle      max_logical_extent;
1090 } XFontSetExtents;
1091
1092 /* unused:
1093 typedef void (*XOMProc)();
1094  */
1095
1096 typedef struct _XOM *XOM;
1097 typedef struct _XOC *XOC, *XFontSet;
1098
1099 typedef struct {
1100     char           *chars;
1101     int             nchars;
1102     int             delta;
1103     XFontSet        font_set;
1104 } XmbTextItem;
1105
1106 typedef struct {
1107     wchar_t        *chars;
1108     int             nchars;
1109     int             delta;
1110     XFontSet        font_set;
1111 } XwcTextItem;
1112
1113 #define XNRequiredCharSet "requiredCharSet"
1114 #define XNQueryOrientation "queryOrientation"
1115 #define XNBaseFontName "baseFontName"
1116 #define XNOMAutomatic "omAutomatic"
1117 #define XNMissingCharSet "missingCharSet"
1118 #define XNDefaultString "defaultString"
1119 #define XNOrientation "orientation"
1120 #define XNDirectionalDependentDrawing "directionalDependentDrawing"
1121 #define XNContextualDrawing "contextualDrawing"
1122 #define XNFontInfo "fontInfo"
1123
1124 typedef struct {
1125     int charset_count;
1126     char **charset_list;
1127 } XOMCharSetList;
1128
1129 typedef enum {
1130     XOMOrientation_LTR_TTB,
1131     XOMOrientation_RTL_TTB,
1132     XOMOrientation_TTB_LTR,
1133     XOMOrientation_TTB_RTL,
1134     XOMOrientation_Context
1135 } XOrientation;
1136
1137 typedef struct {
1138     int num_orientation;
1139     XOrientation *orientation;  /* Input Text description */
1140 } XOMOrientation;
1141
1142 typedef struct {
1143     int num_font;
1144     XFontStruct **font_struct_list;
1145     char **font_name_list;
1146 } XOMFontInfo;
1147
1148 typedef struct _XIM *XIM;
1149 typedef struct _XIC *XIC;
1150
1151 typedef void (*XIMProc)(
1152     XIM,
1153     XPointer,
1154     XPointer
1155 );
1156
1157 typedef Bool (*XICProc)(
1158     XIC,
1159     XPointer,
1160     XPointer
1161 );
1162
1163 typedef void (*XIDProc)(
1164     Display*,
1165     XPointer,
1166     XPointer
1167 );
1168
1169 typedef unsigned long XIMStyle;
1170
1171 typedef struct {
1172     unsigned short count_styles;
1173     XIMStyle *supported_styles;
1174 } XIMStyles;
1175
1176 #define XIMPreeditArea          0x0001L
1177 #define XIMPreeditCallbacks     0x0002L
1178 #define XIMPreeditPosition      0x0004L
1179 #define XIMPreeditNothing       0x0008L
1180 #define XIMPreeditNone          0x0010L
1181 #define XIMStatusArea           0x0100L
1182 #define XIMStatusCallbacks      0x0200L
1183 #define XIMStatusNothing        0x0400L
1184 #define XIMStatusNone           0x0800L
1185
1186 #define XNVaNestedList "XNVaNestedList"
1187 #define XNQueryInputStyle "queryInputStyle"
1188 #define XNClientWindow "clientWindow"
1189 #define XNInputStyle "inputStyle"
1190 #define XNFocusWindow "focusWindow"
1191 #define XNResourceName "resourceName"
1192 #define XNResourceClass "resourceClass"
1193 #define XNGeometryCallback "geometryCallback"
1194 #define XNDestroyCallback "destroyCallback"
1195 #define XNFilterEvents "filterEvents"
1196 #define XNPreeditStartCallback "preeditStartCallback"
1197 #define XNPreeditDoneCallback "preeditDoneCallback"
1198 #define XNPreeditDrawCallback "preeditDrawCallback"
1199 #define XNPreeditCaretCallback "preeditCaretCallback"
1200 #define XNPreeditStateNotifyCallback "preeditStateNotifyCallback"
1201 #define XNPreeditAttributes "preeditAttributes"
1202 #define XNStatusStartCallback "statusStartCallback"
1203 #define XNStatusDoneCallback "statusDoneCallback"
1204 #define XNStatusDrawCallback "statusDrawCallback"
1205 #define XNStatusAttributes "statusAttributes"
1206 #define XNArea "area"
1207 #define XNAreaNeeded "areaNeeded"
1208 #define XNSpotLocation "spotLocation"
1209 #define XNColormap "colorMap"
1210 #define XNStdColormap "stdColorMap"
1211 #define XNForeground "foreground"
1212 #define XNBackground "background"
1213 #define XNBackgroundPixmap "backgroundPixmap"
1214 #define XNFontSet "fontSet"
1215 #define XNLineSpace "lineSpace"
1216 #define XNCursor "cursor"
1217
1218 #define XNQueryIMValuesList "queryIMValuesList"
1219 #define XNQueryICValuesList "queryICValuesList"
1220 #define XNVisiblePosition "visiblePosition"
1221 #define XNR6PreeditCallback "r6PreeditCallback"
1222 #define XNStringConversionCallback "stringConversionCallback"
1223 #define XNStringConversion "stringConversion"
1224 #define XNResetState "resetState"
1225 #define XNHotKey "hotKey"
1226 #define XNHotKeyState "hotKeyState"
1227 #define XNPreeditState "preeditState"
1228 #define XNSeparatorofNestedList "separatorofNestedList"
1229
1230 #define XBufferOverflow         -1
1231 #define XLookupNone             1
1232 #define XLookupChars            2
1233 #define XLookupKeySym           3
1234 #define XLookupBoth             4
1235
1236 typedef void *XVaNestedList;
1237
1238 typedef struct {
1239     XPointer client_data;
1240     XIMProc callback;
1241 } XIMCallback;
1242
1243 typedef struct {
1244     XPointer client_data;
1245     XICProc callback;
1246 } XICCallback;
1247
1248 typedef unsigned long XIMFeedback;
1249
1250 #define XIMReverse              1L
1251 #define XIMUnderline            (1L<<1) 
1252 #define XIMHighlight            (1L<<2)
1253 #define XIMPrimary              (1L<<5)
1254 #define XIMSecondary            (1L<<6)
1255 #define XIMTertiary             (1L<<7)
1256 #define XIMVisibleToForward     (1L<<8)
1257 #define XIMVisibleToBackword    (1L<<9)
1258 #define XIMVisibleToCenter      (1L<<10)
1259
1260 typedef struct _XIMText {
1261     unsigned short length;
1262     XIMFeedback *feedback;
1263     Bool encoding_is_wchar; 
1264     union {
1265         char *multi_byte;
1266         wchar_t *wide_char;
1267     } string; 
1268 } XIMText;
1269
1270 typedef unsigned long    XIMPreeditState;
1271
1272 #define XIMPreeditUnKnown       0L
1273 #define XIMPreeditEnable        1L
1274 #define XIMPreeditDisable       (1L<<1)
1275
1276 typedef struct  _XIMPreeditStateNotifyCallbackStruct {
1277     XIMPreeditState state;
1278 } XIMPreeditStateNotifyCallbackStruct;
1279
1280 typedef unsigned long    XIMResetState;
1281
1282 #define XIMInitialState         1L
1283 #define XIMPreserveState        (1L<<1)
1284
1285 typedef unsigned long XIMStringConversionFeedback;
1286
1287 #define XIMStringConversionLeftEdge     (0x00000001)
1288 #define XIMStringConversionRightEdge    (0x00000002)
1289 #define XIMStringConversionTopEdge      (0x00000004)
1290 #define XIMStringConversionBottomEdge   (0x00000008)
1291 #define XIMStringConversionConcealed    (0x00000010)
1292 #define XIMStringConversionWrapped      (0x00000020)
1293
1294 typedef struct _XIMStringConversionText {
1295     unsigned short length;
1296     XIMStringConversionFeedback *feedback;
1297     Bool encoding_is_wchar; 
1298     union {
1299         char *mbs;
1300         wchar_t *wcs;
1301     } string; 
1302 } XIMStringConversionText;
1303
1304 typedef unsigned short  XIMStringConversionPosition;
1305
1306 typedef unsigned short  XIMStringConversionType;
1307
1308 #define XIMStringConversionBuffer       (0x0001)
1309 #define XIMStringConversionLine         (0x0002)
1310 #define XIMStringConversionWord         (0x0003)
1311 #define XIMStringConversionChar         (0x0004)
1312
1313 typedef unsigned short  XIMStringConversionOperation;
1314
1315 #define XIMStringConversionSubstitution (0x0001)
1316 #define XIMStringConversionRetrieval    (0x0002)
1317
1318 typedef enum {
1319     XIMForwardChar, XIMBackwardChar,
1320     XIMForwardWord, XIMBackwardWord,
1321     XIMCaretUp, XIMCaretDown,
1322     XIMNextLine, XIMPreviousLine,
1323     XIMLineStart, XIMLineEnd, 
1324     XIMAbsolutePosition,
1325     XIMDontChange
1326 } XIMCaretDirection;
1327
1328 typedef struct _XIMStringConversionCallbackStruct {
1329     XIMStringConversionPosition position;
1330     XIMCaretDirection direction;
1331     XIMStringConversionOperation operation;
1332     unsigned short factor;
1333     XIMStringConversionText *text;
1334 } XIMStringConversionCallbackStruct;
1335
1336 typedef struct _XIMPreeditDrawCallbackStruct {
1337     int caret;          /* Cursor offset within pre-edit string */
1338     int chg_first;      /* Starting change position */
1339     int chg_length;     /* Length of the change in character count */
1340     XIMText *text;
1341 } XIMPreeditDrawCallbackStruct;
1342
1343 typedef enum {
1344     XIMIsInvisible,     /* Disable caret feedback */ 
1345     XIMIsPrimary,       /* UI defined caret feedback */
1346     XIMIsSecondary      /* UI defined caret feedback */
1347 } XIMCaretStyle;
1348
1349 typedef struct _XIMPreeditCaretCallbackStruct {
1350     int position;                /* Caret offset within pre-edit string */
1351     XIMCaretDirection direction; /* Caret moves direction */
1352     XIMCaretStyle style;         /* Feedback of the caret */
1353 } XIMPreeditCaretCallbackStruct;
1354
1355 typedef enum {
1356     XIMTextType,
1357     XIMBitmapType
1358 } XIMStatusDataType;
1359         
1360 typedef struct _XIMStatusDrawCallbackStruct {
1361     XIMStatusDataType type;
1362     union {
1363         XIMText *text;
1364         Pixmap  bitmap;
1365     } data;
1366 } XIMStatusDrawCallbackStruct;
1367
1368 typedef struct _XIMHotKeyTrigger {
1369     KeySym       keysym;
1370     int          modifier;
1371     int          modifier_mask;
1372 } XIMHotKeyTrigger;
1373
1374 typedef struct _XIMHotKeyTriggers {
1375     int                  num_hot_key;
1376     XIMHotKeyTrigger    *key;
1377 } XIMHotKeyTriggers;
1378
1379 typedef unsigned long    XIMHotKeyState;
1380
1381 #define XIMHotKeyStateON        (0x0001L)
1382 #define XIMHotKeyStateOFF       (0x0002L)
1383
1384 typedef struct {
1385     unsigned short count_values;
1386     char **supported_values;
1387 } XIMValuesList;
1388
1389 _XFUNCPROTOBEGIN
1390
1391 #if defined(WIN32) && !defined(_XLIBINT_)
1392 #define _Xdebug (*_Xdebug_p)
1393 #endif
1394
1395 extern int _Xdebug;
1396
1397 extern XFontStruct *XLoadQueryFont(
1398     Display*            /* display */,
1399     _Xconst char*       /* name */
1400 );
1401
1402 extern XFontStruct *XQueryFont(
1403     Display*            /* display */,
1404     XID                 /* font_ID */
1405 );
1406
1407
1408 extern XTimeCoord *XGetMotionEvents(
1409     Display*            /* display */,
1410     Window              /* w */,
1411     Time                /* start */,
1412     Time                /* stop */,
1413     int*                /* nevents_return */
1414 );
1415
1416 extern XModifierKeymap *XDeleteModifiermapEntry(
1417     XModifierKeymap*    /* modmap */,
1418 #if NeedWidePrototypes
1419     unsigned int        /* keycode_entry */,
1420 #else
1421     KeyCode             /* keycode_entry */,
1422 #endif
1423     int                 /* modifier */
1424 );
1425
1426 extern XModifierKeymap  *XGetModifierMapping(
1427     Display*            /* display */
1428 );
1429
1430 extern XModifierKeymap  *XInsertModifiermapEntry(
1431     XModifierKeymap*    /* modmap */,
1432 #if NeedWidePrototypes
1433     unsigned int        /* keycode_entry */,
1434 #else
1435     KeyCode             /* keycode_entry */,
1436 #endif
1437     int                 /* modifier */    
1438 );
1439
1440 extern XModifierKeymap *XNewModifiermap(
1441     int                 /* max_keys_per_mod */
1442 );
1443
1444 extern XImage *XCreateImage(
1445     Display*            /* display */,
1446     Visual*             /* visual */,
1447     unsigned int        /* depth */,
1448     int                 /* format */,
1449     int                 /* offset */,
1450     char*               /* data */,
1451     unsigned int        /* width */,
1452     unsigned int        /* height */,
1453     int                 /* bitmap_pad */,
1454     int                 /* bytes_per_line */
1455 );
1456 extern Status XInitImage(
1457     XImage*             /* image */
1458 );
1459 extern XImage *XGetImage(
1460     Display*            /* display */,
1461     Drawable            /* d */,
1462     int                 /* x */,
1463     int                 /* y */,
1464     unsigned int        /* width */,
1465     unsigned int        /* height */,
1466     unsigned long       /* plane_mask */,
1467     int                 /* format */
1468 );
1469 extern XImage *XGetSubImage(
1470     Display*            /* display */,
1471     Drawable            /* d */,
1472     int                 /* x */,
1473     int                 /* y */,
1474     unsigned int        /* width */,
1475     unsigned int        /* height */,
1476     unsigned long       /* plane_mask */,
1477     int                 /* format */,
1478     XImage*             /* dest_image */,
1479     int                 /* dest_x */,
1480     int                 /* dest_y */
1481 );
1482
1483 /* 
1484  * X function declarations.
1485  */
1486 extern Display *XOpenDisplay(
1487     _Xconst char*       /* display_name */
1488 );
1489
1490 extern void XrmInitialize(
1491     void
1492 );
1493
1494 extern char *XFetchBytes(
1495     Display*            /* display */,
1496     int*                /* nbytes_return */
1497 );
1498 extern char *XFetchBuffer(
1499     Display*            /* display */,
1500     int*                /* nbytes_return */,
1501     int                 /* buffer */
1502 );
1503 extern char *XGetAtomName(
1504     Display*            /* display */,
1505     Atom                /* atom */
1506 );
1507 extern Status XGetAtomNames(
1508     Display*            /* dpy */,
1509     Atom*               /* atoms */,
1510     int                 /* count */,
1511     char**              /* names_return */
1512 );
1513 extern char *XGetDefault(
1514     Display*            /* display */,
1515     _Xconst char*       /* program */,
1516     _Xconst char*       /* option */              
1517 );
1518 extern char *XDisplayName(
1519     _Xconst char*       /* string */
1520 );
1521 extern char *XKeysymToString(
1522     KeySym              /* keysym */
1523 );
1524
1525 extern int (*XSynchronize(
1526     Display*            /* display */,
1527     Bool                /* onoff */
1528 ))(
1529     Display*            /* display */
1530 );
1531 extern int (*XSetAfterFunction(
1532     Display*            /* display */,
1533     int (*) (
1534              Display*   /* display */
1535             )           /* procedure */
1536 ))(
1537     Display*            /* display */
1538 );
1539 extern Atom XInternAtom(
1540     Display*            /* display */,
1541     _Xconst char*       /* atom_name */,
1542     Bool                /* only_if_exists */             
1543 );
1544 extern Status XInternAtoms(
1545     Display*            /* dpy */,
1546     char**              /* names */,
1547     int                 /* count */,
1548     Bool                /* onlyIfExists */,
1549     Atom*               /* atoms_return */
1550 );
1551 extern Colormap XCopyColormapAndFree(
1552     Display*            /* display */,
1553     Colormap            /* colormap */
1554 );
1555 extern Colormap XCreateColormap(
1556     Display*            /* display */,
1557     Window              /* w */,
1558     Visual*             /* visual */,
1559     int                 /* alloc */                      
1560 );
1561 extern Cursor XCreatePixmapCursor(
1562     Display*            /* display */,
1563     Pixmap              /* source */,
1564     Pixmap              /* mask */,
1565     XColor*             /* foreground_color */,
1566     XColor*             /* background_color */,
1567     unsigned int        /* x */,
1568     unsigned int        /* y */                    
1569 );
1570 extern Cursor XCreateGlyphCursor(
1571     Display*            /* display */,
1572     Font                /* source_font */,
1573     Font                /* mask_font */,
1574     unsigned int        /* source_char */,
1575     unsigned int        /* mask_char */,
1576     XColor _Xconst *    /* foreground_color */,
1577     XColor _Xconst *    /* background_color */
1578 );
1579 extern Cursor XCreateFontCursor(
1580     Display*            /* display */,
1581     unsigned int        /* shape */
1582 );
1583 extern Font XLoadFont(
1584     Display*            /* display */,
1585     _Xconst char*       /* name */
1586 );
1587 extern GC XCreateGC(
1588     Display*            /* display */,
1589     Drawable            /* d */,
1590     unsigned long       /* valuemask */,
1591     XGCValues*          /* values */
1592 );
1593 extern GContext XGContextFromGC(
1594     GC                  /* gc */
1595 );
1596 extern void XFlushGC(
1597     Display*            /* display */,
1598     GC                  /* gc */
1599 );
1600 extern Pixmap XCreatePixmap(
1601     Display*            /* display */,
1602     Drawable            /* d */,
1603     unsigned int        /* width */,
1604     unsigned int        /* height */,
1605     unsigned int        /* depth */                     
1606 );
1607 extern Pixmap XCreateBitmapFromData(
1608     Display*            /* display */,
1609     Drawable            /* d */,
1610     _Xconst char*       /* data */,
1611     unsigned int        /* width */,
1612     unsigned int        /* height */
1613 );
1614 extern Pixmap XCreatePixmapFromBitmapData(
1615     Display*            /* display */,
1616     Drawable            /* d */,
1617     char*               /* data */,
1618     unsigned int        /* width */,
1619     unsigned int        /* height */,
1620     unsigned long       /* fg */,
1621     unsigned long       /* bg */,
1622     unsigned int        /* depth */
1623 );
1624 extern Window XCreateSimpleWindow(
1625     Display*            /* display */,
1626     Window              /* parent */,
1627     int                 /* x */,
1628     int                 /* y */,
1629     unsigned int        /* width */,
1630     unsigned int        /* height */,
1631     unsigned int        /* border_width */,
1632     unsigned long       /* border */,
1633     unsigned long       /* background */
1634 );
1635 extern Window XGetSelectionOwner(
1636     Display*            /* display */,
1637     Atom                /* selection */
1638 );
1639 extern Window XCreateWindow(
1640     Display*            /* display */,
1641     Window              /* parent */,
1642     int                 /* x */,
1643     int                 /* y */,
1644     unsigned int        /* width */,
1645     unsigned int        /* height */,
1646     unsigned int        /* border_width */,
1647     int                 /* depth */,
1648     unsigned int        /* class */,
1649     Visual*             /* visual */,
1650     unsigned long       /* valuemask */,
1651     XSetWindowAttributes*       /* attributes */
1652 ); 
1653 extern Colormap *XListInstalledColormaps(
1654     Display*            /* display */,
1655     Window              /* w */,
1656     int*                /* num_return */
1657 );
1658 extern char **XListFonts(
1659     Display*            /* display */,
1660     _Xconst char*       /* pattern */,
1661     int                 /* maxnames */,
1662     int*                /* actual_count_return */
1663 );
1664 extern char **XListFontsWithInfo(
1665     Display*            /* display */,
1666     _Xconst char*       /* pattern */,
1667     int                 /* maxnames */,
1668     int*                /* count_return */,
1669     XFontStruct**       /* info_return */
1670 );
1671 extern char **XGetFontPath(
1672     Display*            /* display */,
1673     int*                /* npaths_return */
1674 );
1675 extern char **XListExtensions(
1676     Display*            /* display */,
1677     int*                /* nextensions_return */
1678 );
1679 extern Atom *XListProperties(
1680     Display*            /* display */,
1681     Window              /* w */,
1682     int*                /* num_prop_return */
1683 );
1684 extern XHostAddress *XListHosts(
1685     Display*            /* display */,
1686     int*                /* nhosts_return */,
1687     Bool*               /* state_return */
1688 );
1689 extern KeySym XKeycodeToKeysym(
1690     Display*            /* display */,
1691 #if NeedWidePrototypes
1692     unsigned int        /* keycode */,
1693 #else
1694     KeyCode             /* keycode */,
1695 #endif
1696     int                 /* index */
1697 );
1698 extern KeySym XLookupKeysym(
1699     XKeyEvent*          /* key_event */,
1700     int                 /* index */
1701 );
1702 extern KeySym *XGetKeyboardMapping(
1703     Display*            /* display */,
1704 #if NeedWidePrototypes
1705     unsigned int        /* first_keycode */,
1706 #else
1707     KeyCode             /* first_keycode */,
1708 #endif
1709     int                 /* keycode_count */,
1710     int*                /* keysyms_per_keycode_return */
1711 );
1712 extern KeySym XStringToKeysym(
1713     _Xconst char*       /* string */
1714 );
1715 extern long XMaxRequestSize(
1716     Display*            /* display */
1717 );
1718 extern long XExtendedMaxRequestSize(
1719     Display*            /* display */
1720 );
1721 extern char *XResourceManagerString(
1722     Display*            /* display */
1723 );
1724 extern char *XScreenResourceString(
1725         Screen*         /* screen */
1726 );
1727 extern unsigned long XDisplayMotionBufferSize(
1728     Display*            /* display */
1729 );
1730 extern VisualID XVisualIDFromVisual(
1731     Visual*             /* visual */
1732 );
1733
1734 /* multithread routines */
1735
1736 extern Status XInitThreads(
1737     void
1738 );
1739
1740 extern void XLockDisplay(
1741     Display*            /* display */
1742 );
1743
1744 extern void XUnlockDisplay(
1745     Display*            /* display */
1746 );
1747
1748 /* routines for dealing with extensions */
1749
1750 extern XExtCodes *XInitExtension(
1751     Display*            /* display */,
1752     _Xconst char*       /* name */
1753 );
1754
1755 extern XExtCodes *XAddExtension(
1756     Display*            /* display */
1757 );
1758 extern XExtData *XFindOnExtensionList(
1759     XExtData**          /* structure */,
1760     int                 /* number */
1761 );
1762 extern XExtData **XEHeadOfExtensionList(
1763     XEDataObject        /* object */
1764 );
1765
1766 /* these are routines for which there are also macros */
1767 extern Window XRootWindow(
1768     Display*            /* display */,
1769     int                 /* screen_number */
1770 );
1771 extern Window XDefaultRootWindow(
1772     Display*            /* display */
1773 );
1774 extern Window XRootWindowOfScreen(
1775     Screen*             /* screen */
1776 );
1777 extern Visual *XDefaultVisual(
1778     Display*            /* display */,
1779     int                 /* screen_number */
1780 );
1781 extern Visual *XDefaultVisualOfScreen(
1782     Screen*             /* screen */
1783 );
1784 extern GC XDefaultGC(
1785     Display*            /* display */,
1786     int                 /* screen_number */
1787 );
1788 extern GC XDefaultGCOfScreen(
1789     Screen*             /* screen */
1790 );
1791 extern unsigned long XBlackPixel(
1792     Display*            /* display */,
1793     int                 /* screen_number */
1794 );
1795 extern unsigned long XWhitePixel(
1796     Display*            /* display */,
1797     int                 /* screen_number */
1798 );
1799 extern unsigned long XAllPlanes(
1800     void
1801 );
1802 extern unsigned long XBlackPixelOfScreen(
1803     Screen*             /* screen */
1804 );
1805 extern unsigned long XWhitePixelOfScreen(
1806     Screen*             /* screen */
1807 );
1808 extern unsigned long XNextRequest(
1809     Display*            /* display */
1810 );
1811 extern unsigned long XLastKnownRequestProcessed(
1812     Display*            /* display */
1813 );
1814 extern char *XServerVendor(
1815     Display*            /* display */
1816 );
1817 extern char *XDisplayString(
1818     Display*            /* display */
1819 );
1820 extern Colormap XDefaultColormap(
1821     Display*            /* display */,
1822     int                 /* screen_number */
1823 );
1824 extern Colormap XDefaultColormapOfScreen(
1825     Screen*             /* screen */
1826 );
1827 extern Display *XDisplayOfScreen(
1828     Screen*             /* screen */
1829 );
1830 extern Screen *XScreenOfDisplay(
1831     Display*            /* display */,
1832     int                 /* screen_number */
1833 );
1834 extern Screen *XDefaultScreenOfDisplay(
1835     Display*            /* display */
1836 );
1837 extern long XEventMaskOfScreen(
1838     Screen*             /* screen */
1839 );
1840
1841 extern int XScreenNumberOfScreen(
1842     Screen*             /* screen */
1843 );
1844
1845 typedef int (*XErrorHandler) (      /* WARNING, this type not in Xlib spec */
1846     Display*            /* display */,
1847     XErrorEvent*        /* error_event */
1848 );
1849
1850 extern XErrorHandler XSetErrorHandler (
1851     XErrorHandler       /* handler */
1852 );
1853
1854
1855 typedef int (*XIOErrorHandler) (    /* WARNING, this type not in Xlib spec */
1856     Display*            /* display */
1857 );
1858
1859 extern XIOErrorHandler XSetIOErrorHandler (
1860     XIOErrorHandler     /* handler */
1861 );
1862
1863
1864 extern XPixmapFormatValues *XListPixmapFormats(
1865     Display*            /* display */,
1866     int*                /* count_return */
1867 );
1868 extern int *XListDepths(
1869     Display*            /* display */,
1870     int                 /* screen_number */,
1871     int*                /* count_return */
1872 );
1873
1874 /* ICCCM routines for things that don't require special include files; */
1875 /* other declarations are given in Xutil.h                             */
1876 extern Status XReconfigureWMWindow(
1877     Display*            /* display */,
1878     Window              /* w */,
1879     int                 /* screen_number */,
1880     unsigned int        /* mask */,
1881     XWindowChanges*     /* changes */
1882 );
1883
1884 extern Status XGetWMProtocols(
1885     Display*            /* display */,
1886     Window              /* w */,
1887     Atom**              /* protocols_return */,
1888     int*                /* count_return */
1889 );
1890 extern Status XSetWMProtocols(
1891     Display*            /* display */,
1892     Window              /* w */,
1893     Atom*               /* protocols */,
1894     int                 /* count */
1895 );
1896 extern Status XIconifyWindow(
1897     Display*            /* display */,
1898     Window              /* w */,
1899     int                 /* screen_number */
1900 );
1901 extern Status XWithdrawWindow(
1902     Display*            /* display */,
1903     Window              /* w */,
1904     int                 /* screen_number */
1905 );
1906 extern Status XGetCommand(
1907     Display*            /* display */,
1908     Window              /* w */,
1909     char***             /* argv_return */,
1910     int*                /* argc_return */
1911 );
1912 extern Status XGetWMColormapWindows(
1913     Display*            /* display */,
1914     Window              /* w */,
1915     Window**            /* windows_return */,
1916     int*                /* count_return */
1917 );
1918 extern Status XSetWMColormapWindows(
1919     Display*            /* display */,
1920     Window              /* w */,
1921     Window*             /* colormap_windows */,
1922     int                 /* count */
1923 );
1924 extern void XFreeStringList(
1925     char**              /* list */
1926 );
1927 extern int XSetTransientForHint(
1928     Display*            /* display */,
1929     Window              /* w */,
1930     Window              /* prop_window */
1931 );
1932
1933 /* The following are given in alphabetical order */
1934
1935 extern int XActivateScreenSaver(
1936     Display*            /* display */
1937 );
1938
1939 extern int XAddHost(
1940     Display*            /* display */,
1941     XHostAddress*       /* host */
1942 );
1943
1944 extern int XAddHosts(
1945     Display*            /* display */,
1946     XHostAddress*       /* hosts */,
1947     int                 /* num_hosts */    
1948 );
1949
1950 extern int XAddToExtensionList(
1951     struct _XExtData**  /* structure */,
1952     XExtData*           /* ext_data */
1953 );
1954
1955 extern int XAddToSaveSet(
1956     Display*            /* display */,
1957     Window              /* w */
1958 );
1959
1960 extern Status XAllocColor(
1961     Display*            /* display */,
1962     Colormap            /* colormap */,
1963     XColor*             /* screen_in_out */
1964 );
1965
1966 extern Status XAllocColorCells(
1967     Display*            /* display */,
1968     Colormap            /* colormap */,
1969     Bool                /* contig */,
1970     unsigned long*      /* plane_masks_return */,
1971     unsigned int        /* nplanes */,
1972     unsigned long*      /* pixels_return */,
1973     unsigned int        /* npixels */
1974 );
1975
1976 extern Status XAllocColorPlanes(
1977     Display*            /* display */,
1978     Colormap            /* colormap */,
1979     Bool                /* contig */,
1980     unsigned long*      /* pixels_return */,
1981     int                 /* ncolors */,
1982     int                 /* nreds */,
1983     int                 /* ngreens */,
1984     int                 /* nblues */,
1985     unsigned long*      /* rmask_return */,
1986     unsigned long*      /* gmask_return */,
1987     unsigned long*      /* bmask_return */
1988 );
1989
1990 extern Status XAllocNamedColor(
1991     Display*            /* display */,
1992     Colormap            /* colormap */,
1993     _Xconst char*       /* color_name */,
1994     XColor*             /* screen_def_return */,
1995     XColor*             /* exact_def_return */
1996 );
1997
1998 extern int XAllowEvents(
1999     Display*            /* display */,
2000     int                 /* event_mode */,
2001     Time                /* time */
2002 );
2003
2004 extern int XAutoRepeatOff(
2005     Display*            /* display */
2006 );
2007
2008 extern int XAutoRepeatOn(
2009     Display*            /* display */
2010 );
2011
2012 extern int XBell(
2013     Display*            /* display */,
2014     int                 /* percent */
2015 );
2016
2017 extern int XBitmapBitOrder(
2018     Display*            /* display */
2019 );
2020
2021 extern int XBitmapPad(
2022     Display*            /* display */
2023 );
2024
2025 extern int XBitmapUnit(
2026     Display*            /* display */
2027 );
2028
2029 extern int XCellsOfScreen(
2030     Screen*             /* screen */
2031 );
2032
2033 extern int XChangeActivePointerGrab(
2034     Display*            /* display */,
2035     unsigned int        /* event_mask */,
2036     Cursor              /* cursor */,
2037     Time                /* time */
2038 );
2039
2040 extern int XChangeGC(
2041     Display*            /* display */,
2042     GC                  /* gc */,
2043     unsigned long       /* valuemask */,
2044     XGCValues*          /* values */
2045 );
2046
2047 extern int XChangeKeyboardControl(
2048     Display*            /* display */,
2049     unsigned long       /* value_mask */,
2050     XKeyboardControl*   /* values */
2051 );
2052
2053 extern int XChangeKeyboardMapping(
2054     Display*            /* display */,
2055     int                 /* first_keycode */,
2056     int                 /* keysyms_per_keycode */,
2057     KeySym*             /* keysyms */,
2058     int                 /* num_codes */
2059 );
2060
2061 extern int XChangePointerControl(
2062     Display*            /* display */,
2063     Bool                /* do_accel */,
2064     Bool                /* do_threshold */,
2065     int                 /* accel_numerator */,
2066     int                 /* accel_denominator */,
2067     int                 /* threshold */
2068 );
2069
2070 extern int XChangeProperty(
2071     Display*            /* display */,
2072     Window              /* w */,
2073     Atom                /* property */,
2074     Atom                /* type */,
2075     int                 /* format */,
2076     int                 /* mode */,
2077     _Xconst unsigned char*      /* data */,
2078     int                 /* nelements */
2079 );
2080
2081 extern int XChangeSaveSet(
2082     Display*            /* display */,
2083     Window              /* w */,
2084     int                 /* change_mode */
2085 );
2086
2087 extern int XChangeWindowAttributes(
2088     Display*            /* display */,
2089     Window              /* w */,
2090     unsigned long       /* valuemask */,
2091     XSetWindowAttributes* /* attributes */
2092 );
2093
2094 extern Bool XCheckIfEvent(
2095     Display*            /* display */,
2096     XEvent*             /* event_return */,
2097     Bool (*) (
2098                Display*                 /* display */,
2099                XEvent*                  /* event */,
2100                XPointer                 /* arg */
2101              )          /* predicate */,
2102     XPointer            /* arg */
2103 );
2104
2105 extern Bool XCheckMaskEvent(
2106     Display*            /* display */,
2107     long                /* event_mask */,
2108     XEvent*             /* event_return */
2109 );
2110
2111 extern Bool XCheckTypedEvent(
2112     Display*            /* display */,
2113     int                 /* event_type */,
2114     XEvent*             /* event_return */
2115 );
2116
2117 extern Bool XCheckTypedWindowEvent(
2118     Display*            /* display */,
2119     Window              /* w */,
2120     int                 /* event_type */,
2121     XEvent*             /* event_return */
2122 );
2123
2124 extern Bool XCheckWindowEvent(
2125     Display*            /* display */,
2126     Window              /* w */,
2127     long                /* event_mask */,
2128     XEvent*             /* event_return */
2129 );
2130
2131 extern int XCirculateSubwindows(
2132     Display*            /* display */,
2133     Window              /* w */,
2134     int                 /* direction */
2135 );
2136
2137 extern int XCirculateSubwindowsDown(
2138     Display*            /* display */,
2139     Window              /* w */
2140 );
2141
2142 extern int XCirculateSubwindowsUp(
2143     Display*            /* display */,
2144     Window              /* w */
2145 );
2146
2147 extern int XClearArea(
2148     Display*            /* display */,
2149     Window              /* w */,
2150     int                 /* x */,
2151     int                 /* y */,
2152     unsigned int        /* width */,
2153     unsigned int        /* height */,
2154     Bool                /* exposures */
2155 );
2156
2157 extern int XClearWindow(
2158     Display*            /* display */,
2159     Window              /* w */
2160 );
2161
2162 extern int XCloseDisplay(
2163     Display*            /* display */
2164 );
2165
2166 extern int XConfigureWindow(
2167     Display*            /* display */,
2168     Window              /* w */,
2169     unsigned int        /* value_mask */,
2170     XWindowChanges*     /* values */             
2171 );
2172
2173 extern int XConnectionNumber(
2174     Display*            /* display */
2175 );
2176
2177 extern int XConvertSelection(
2178     Display*            /* display */,
2179     Atom                /* selection */,
2180     Atom                /* target */,
2181     Atom                /* property */,
2182     Window              /* requestor */,
2183     Time                /* time */
2184 );
2185
2186 extern int XCopyArea(
2187     Display*            /* display */,
2188     Drawable            /* src */,
2189     Drawable            /* dest */,
2190     GC                  /* gc */,
2191     int                 /* src_x */,
2192     int                 /* src_y */,
2193     unsigned int        /* width */,
2194     unsigned int        /* height */,
2195     int                 /* dest_x */,
2196     int                 /* dest_y */
2197 );
2198
2199 extern int XCopyGC(
2200     Display*            /* display */,
2201     GC                  /* src */,
2202     unsigned long       /* valuemask */,
2203     GC                  /* dest */
2204 );
2205
2206 extern int XCopyPlane(
2207     Display*            /* display */,
2208     Drawable            /* src */,
2209     Drawable            /* dest */,
2210     GC                  /* gc */,
2211     int                 /* src_x */,
2212     int                 /* src_y */,
2213     unsigned int        /* width */,
2214     unsigned int        /* height */,
2215     int                 /* dest_x */,
2216     int                 /* dest_y */,
2217     unsigned long       /* plane */
2218 );
2219
2220 extern int XDefaultDepth(
2221     Display*            /* display */,
2222     int                 /* screen_number */
2223 );
2224
2225 extern int XDefaultDepthOfScreen(
2226     Screen*             /* screen */
2227 );
2228
2229 extern int XDefaultScreen(
2230     Display*            /* display */
2231 );
2232
2233 extern int XDefineCursor(
2234     Display*            /* display */,
2235     Window              /* w */,
2236     Cursor              /* cursor */
2237 );
2238
2239 extern int XDeleteProperty(
2240     Display*            /* display */,
2241     Window              /* w */,
2242     Atom                /* property */
2243 );
2244
2245 extern int XDestroyWindow(
2246     Display*            /* display */,
2247     Window              /* w */
2248 );
2249
2250 extern int XDestroySubwindows(
2251     Display*            /* display */,
2252     Window              /* w */
2253 );
2254
2255 extern int XDoesBackingStore(
2256     Screen*             /* screen */    
2257 );
2258
2259 extern Bool XDoesSaveUnders(
2260     Screen*             /* screen */
2261 );
2262
2263 extern int XDisableAccessControl(
2264     Display*            /* display */
2265 );
2266
2267
2268 extern int XDisplayCells(
2269     Display*            /* display */,
2270     int                 /* screen_number */
2271 );
2272
2273 extern int XDisplayHeight(
2274     Display*            /* display */,
2275     int                 /* screen_number */
2276 );
2277
2278 extern int XDisplayHeightMM(
2279     Display*            /* display */,
2280     int                 /* screen_number */
2281 );
2282
2283 extern int XDisplayKeycodes(
2284     Display*            /* display */,
2285     int*                /* min_keycodes_return */,
2286     int*                /* max_keycodes_return */
2287 );
2288
2289 extern int XDisplayPlanes(
2290     Display*            /* display */,
2291     int                 /* screen_number */
2292 );
2293
2294 extern int XDisplayWidth(
2295     Display*            /* display */,
2296     int                 /* screen_number */
2297 );
2298
2299 extern int XDisplayWidthMM(
2300     Display*            /* display */,
2301     int                 /* screen_number */
2302 );
2303
2304 extern int XDrawArc(
2305     Display*            /* display */,
2306     Drawable            /* d */,
2307     GC                  /* gc */,
2308     int                 /* x */,
2309     int                 /* y */,
2310     unsigned int        /* width */,
2311     unsigned int        /* height */,
2312     int                 /* angle1 */,
2313     int                 /* angle2 */
2314 );
2315
2316 extern int XDrawArcs(
2317     Display*            /* display */,
2318     Drawable            /* d */,
2319     GC                  /* gc */,
2320     XArc*               /* arcs */,
2321     int                 /* narcs */
2322 );
2323
2324 extern int XDrawImageString(
2325     Display*            /* display */,
2326     Drawable            /* d */,
2327     GC                  /* gc */,
2328     int                 /* x */,
2329     int                 /* y */,
2330     _Xconst char*       /* string */,
2331     int                 /* length */
2332 );
2333
2334 extern int XDrawImageString16(
2335     Display*            /* display */,
2336     Drawable            /* d */,
2337     GC                  /* gc */,
2338     int                 /* x */,
2339     int                 /* y */,
2340     _Xconst XChar2b*    /* string */,
2341     int                 /* length */
2342 );
2343
2344 extern int XDrawLine(
2345     Display*            /* display */,
2346     Drawable            /* d */,
2347     GC                  /* gc */,
2348     int                 /* x1 */,
2349     int                 /* y1 */,
2350     int                 /* x2 */,
2351     int                 /* y2 */
2352 );
2353
2354 extern int XDrawLines(
2355     Display*            /* display */,
2356     Drawable            /* d */,
2357     GC                  /* gc */,
2358     XPoint*             /* points */,
2359     int                 /* npoints */,
2360     int                 /* mode */
2361 );
2362
2363 extern int XDrawPoint(
2364     Display*            /* display */,
2365     Drawable            /* d */,
2366     GC                  /* gc */,
2367     int                 /* x */,
2368     int                 /* y */
2369 );
2370
2371 extern int XDrawPoints(
2372     Display*            /* display */,
2373     Drawable            /* d */,
2374     GC                  /* gc */,
2375     XPoint*             /* points */,
2376     int                 /* npoints */,
2377     int                 /* mode */
2378 );
2379
2380 extern int XDrawRectangle(
2381     Display*            /* display */,
2382     Drawable            /* d */,
2383     GC                  /* gc */,
2384     int                 /* x */,
2385     int                 /* y */,
2386     unsigned int        /* width */,
2387     unsigned int        /* height */
2388 );
2389
2390 extern int XDrawRectangles(
2391     Display*            /* display */,
2392     Drawable            /* d */,
2393     GC                  /* gc */,
2394     XRectangle*         /* rectangles */,
2395     int                 /* nrectangles */
2396 );
2397
2398 extern int XDrawSegments(
2399     Display*            /* display */,
2400     Drawable            /* d */,
2401     GC                  /* gc */,
2402     XSegment*           /* segments */,
2403     int                 /* nsegments */
2404 );
2405
2406 extern int XDrawString(
2407     Display*            /* display */,
2408     Drawable            /* d */,
2409     GC                  /* gc */,
2410     int                 /* x */,
2411     int                 /* y */,
2412     _Xconst char*       /* string */,
2413     int                 /* length */
2414 );
2415
2416 extern int XDrawString16(
2417     Display*            /* display */,
2418     Drawable            /* d */,
2419     GC                  /* gc */,
2420     int                 /* x */,
2421     int                 /* y */,
2422     _Xconst XChar2b*    /* string */,
2423     int                 /* length */
2424 );
2425
2426 extern int XDrawText(
2427     Display*            /* display */,
2428     Drawable            /* d */,
2429     GC                  /* gc */,
2430     int                 /* x */,
2431     int                 /* y */,
2432     XTextItem*          /* items */,
2433     int                 /* nitems */
2434 );
2435
2436 extern int XDrawText16(
2437     Display*            /* display */,
2438     Drawable            /* d */,
2439     GC                  /* gc */,
2440     int                 /* x */,
2441     int                 /* y */,
2442     XTextItem16*        /* items */,
2443     int                 /* nitems */
2444 );
2445
2446 extern int XEnableAccessControl(
2447     Display*            /* display */
2448 );
2449
2450 extern int XEventsQueued(
2451     Display*            /* display */,
2452     int                 /* mode */
2453 );
2454
2455 extern Status XFetchName(
2456     Display*            /* display */,
2457     Window              /* w */,
2458     char**              /* window_name_return */
2459 );
2460
2461 extern int XFillArc(
2462     Display*            /* display */,
2463     Drawable            /* d */,
2464     GC                  /* gc */,
2465     int                 /* x */,
2466     int                 /* y */,
2467     unsigned int        /* width */,
2468     unsigned int        /* height */,
2469     int                 /* angle1 */,
2470     int                 /* angle2 */
2471 );
2472
2473 extern int XFillArcs(
2474     Display*            /* display */,
2475     Drawable            /* d */,
2476     GC                  /* gc */,
2477     XArc*               /* arcs */,
2478     int                 /* narcs */
2479 );
2480
2481 extern int XFillPolygon(
2482     Display*            /* display */,
2483     Drawable            /* d */,
2484     GC                  /* gc */,
2485     XPoint*             /* points */,
2486     int                 /* npoints */,
2487     int                 /* shape */,
2488     int                 /* mode */
2489 );
2490
2491 extern int XFillRectangle(
2492     Display*            /* display */,
2493     Drawable            /* d */,
2494     GC                  /* gc */,
2495     int                 /* x */,
2496     int                 /* y */,
2497     unsigned int        /* width */,
2498     unsigned int        /* height */
2499 );
2500
2501 extern int XFillRectangles(
2502     Display*            /* display */,
2503     Drawable            /* d */,
2504     GC                  /* gc */,
2505     XRectangle*         /* rectangles */,
2506     int                 /* nrectangles */
2507 );
2508
2509 extern int XFlush(
2510     Display*            /* display */
2511 );
2512
2513 extern int XForceScreenSaver(
2514     Display*            /* display */,
2515     int                 /* mode */
2516 );
2517
2518 extern int XFree(
2519     void*               /* data */
2520 );
2521
2522 extern int XFreeColormap(
2523     Display*            /* display */,
2524     Colormap            /* colormap */
2525 );
2526
2527 extern int XFreeColors(
2528     Display*            /* display */,
2529     Colormap            /* colormap */,
2530     unsigned long*      /* pixels */,
2531     int                 /* npixels */,
2532     unsigned long       /* planes */
2533 );
2534
2535 extern int XFreeCursor(
2536     Display*            /* display */,
2537     Cursor              /* cursor */
2538 );
2539
2540 extern int XFreeExtensionList(
2541     char**              /* list */    
2542 );
2543
2544 extern int XFreeFont(
2545     Display*            /* display */,
2546     XFontStruct*        /* font_struct */
2547 );
2548
2549 extern int XFreeFontInfo(
2550     char**              /* names */,
2551     XFontStruct*        /* free_info */,
2552     int                 /* actual_count */
2553 );
2554
2555 extern int XFreeFontNames(
2556     char**              /* list */
2557 );
2558
2559 extern int XFreeFontPath(
2560     char**              /* list */
2561 );
2562
2563 extern int XFreeGC(
2564     Display*            /* display */,
2565     GC                  /* gc */
2566 );
2567
2568 extern int XFreeModifiermap(
2569     XModifierKeymap*    /* modmap */
2570 );
2571
2572 extern int XFreePixmap(
2573     Display*            /* display */,
2574     Pixmap              /* pixmap */
2575 );
2576
2577 extern int XGeometry(
2578     Display*            /* display */,
2579     int                 /* screen */,
2580     _Xconst char*       /* position */,
2581     _Xconst char*       /* default_position */,
2582     unsigned int        /* bwidth */,
2583     unsigned int        /* fwidth */,
2584     unsigned int        /* fheight */,
2585     int                 /* xadder */,
2586     int                 /* yadder */,
2587     int*                /* x_return */,
2588     int*                /* y_return */,
2589     int*                /* width_return */,
2590     int*                /* height_return */
2591 );
2592
2593 extern int XGetErrorDatabaseText(
2594     Display*            /* display */,
2595     _Xconst char*       /* name */,
2596     _Xconst char*       /* message */,
2597     _Xconst char*       /* default_string */,
2598     char*               /* buffer_return */,
2599     int                 /* length */
2600 );
2601
2602 extern int XGetErrorText(
2603     Display*            /* display */,
2604     int                 /* code */,
2605     char*               /* buffer_return */,
2606     int                 /* length */
2607 );
2608
2609 extern Bool XGetFontProperty(
2610     XFontStruct*        /* font_struct */,
2611     Atom                /* atom */,
2612     unsigned long*      /* value_return */
2613 );
2614
2615 extern Status XGetGCValues(
2616     Display*            /* display */,
2617     GC                  /* gc */,
2618     unsigned long       /* valuemask */,
2619     XGCValues*          /* values_return */
2620 );
2621
2622 extern Status XGetGeometry(
2623     Display*            /* display */,
2624     Drawable            /* d */,
2625     Window*             /* root_return */,
2626     int*                /* x_return */,
2627     int*                /* y_return */,
2628     unsigned int*       /* width_return */,
2629     unsigned int*       /* height_return */,
2630     unsigned int*       /* border_width_return */,
2631     unsigned int*       /* depth_return */
2632 );
2633
2634 extern Status XGetIconName(
2635     Display*            /* display */,
2636     Window              /* w */,
2637     char**              /* icon_name_return */
2638 );
2639
2640 extern int XGetInputFocus(
2641     Display*            /* display */,
2642     Window*             /* focus_return */,
2643     int*                /* revert_to_return */
2644 );
2645
2646 extern int XGetKeyboardControl(
2647     Display*            /* display */,
2648     XKeyboardState*     /* values_return */
2649 );
2650
2651 extern int XGetPointerControl(
2652     Display*            /* display */,
2653     int*                /* accel_numerator_return */,
2654     int*                /* accel_denominator_return */,
2655     int*                /* threshold_return */
2656 );
2657
2658 extern int XGetPointerMapping(
2659     Display*            /* display */,
2660     unsigned char*      /* map_return */,
2661     int                 /* nmap */
2662 );
2663
2664 extern int XGetScreenSaver(
2665     Display*            /* display */,
2666     int*                /* timeout_return */,
2667     int*                /* interval_return */,
2668     int*                /* prefer_blanking_return */,
2669     int*                /* allow_exposures_return */
2670 );
2671
2672 extern Status XGetTransientForHint(
2673     Display*            /* display */,
2674     Window              /* w */,
2675     Window*             /* prop_window_return */
2676 );
2677
2678 extern int XGetWindowProperty(
2679     Display*            /* display */,
2680     Window              /* w */,
2681     Atom                /* property */,
2682     long                /* long_offset */,
2683     long                /* long_length */,
2684     Bool                /* delete */,
2685     Atom                /* req_type */,
2686     Atom*               /* actual_type_return */,
2687     int*                /* actual_format_return */,
2688     unsigned long*      /* nitems_return */,
2689     unsigned long*      /* bytes_after_return */,
2690     unsigned char**     /* prop_return */
2691 );
2692
2693 extern Status XGetWindowAttributes(
2694     Display*            /* display */,
2695     Window              /* w */,
2696     XWindowAttributes*  /* window_attributes_return */
2697 );
2698
2699 extern int XGrabButton(
2700     Display*            /* display */,
2701     unsigned int        /* button */,
2702     unsigned int        /* modifiers */,
2703     Window              /* grab_window */,
2704     Bool                /* owner_events */,
2705     unsigned int        /* event_mask */,
2706     int                 /* pointer_mode */,
2707     int                 /* keyboard_mode */,
2708     Window              /* confine_to */,
2709     Cursor              /* cursor */
2710 );
2711
2712 extern int XGrabKey(
2713     Display*            /* display */,
2714     int                 /* keycode */,
2715     unsigned int        /* modifiers */,
2716     Window              /* grab_window */,
2717     Bool                /* owner_events */,
2718     int                 /* pointer_mode */,
2719     int                 /* keyboard_mode */
2720 );
2721
2722 extern int XGrabKeyboard(
2723     Display*            /* display */,
2724     Window              /* grab_window */,
2725     Bool                /* owner_events */,
2726     int                 /* pointer_mode */,
2727     int                 /* keyboard_mode */,
2728     Time                /* time */
2729 );
2730
2731 extern int XGrabPointer(
2732     Display*            /* display */,
2733     Window              /* grab_window */,
2734     Bool                /* owner_events */,
2735     unsigned int        /* event_mask */,
2736     int                 /* pointer_mode */,
2737     int                 /* keyboard_mode */,
2738     Window              /* confine_to */,
2739     Cursor              /* cursor */,
2740     Time                /* time */
2741 );
2742
2743 extern int XGrabServer(
2744     Display*            /* display */
2745 );
2746
2747 extern int XHeightMMOfScreen(
2748     Screen*             /* screen */
2749 );
2750
2751 extern int XHeightOfScreen(
2752     Screen*             /* screen */
2753 );
2754
2755 extern int XIfEvent(
2756     Display*            /* display */,
2757     XEvent*             /* event_return */,
2758     Bool (*) (
2759                Display*                 /* display */,
2760                XEvent*                  /* event */,
2761                XPointer                 /* arg */
2762              )          /* predicate */,
2763     XPointer            /* arg */
2764 );
2765
2766 extern int XImageByteOrder(
2767     Display*            /* display */
2768 );
2769
2770 extern int XInstallColormap(
2771     Display*            /* display */,
2772     Colormap            /* colormap */
2773 );
2774
2775 extern KeyCode XKeysymToKeycode(
2776     Display*            /* display */,
2777     KeySym              /* keysym */
2778 );
2779
2780 extern int XKillClient(
2781     Display*            /* display */,
2782     XID                 /* resource */
2783 );
2784
2785 extern Status XLookupColor(
2786     Display*            /* display */,
2787     Colormap            /* colormap */,
2788     _Xconst char*       /* color_name */,
2789     XColor*             /* exact_def_return */,
2790     XColor*             /* screen_def_return */
2791 );
2792
2793 extern int XLowerWindow(
2794     Display*            /* display */,
2795     Window              /* w */
2796 );
2797
2798 extern int XMapRaised(
2799     Display*            /* display */,
2800     Window              /* w */
2801 );
2802
2803 extern int XMapSubwindows(
2804     Display*            /* display */,
2805     Window              /* w */
2806 );
2807
2808 extern int XMapWindow(
2809     Display*            /* display */,
2810     Window              /* w */
2811 );
2812
2813 extern int XMaskEvent(
2814     Display*            /* display */,
2815     long                /* event_mask */,
2816     XEvent*             /* event_return */
2817 );
2818
2819 extern int XMaxCmapsOfScreen(
2820     Screen*             /* screen */
2821 );
2822
2823 extern int XMinCmapsOfScreen(
2824     Screen*             /* screen */
2825 );
2826
2827 extern int XMoveResizeWindow(
2828     Display*            /* display */,
2829     Window              /* w */,
2830     int                 /* x */,
2831     int                 /* y */,
2832     unsigned int        /* width */,
2833     unsigned int        /* height */
2834 );
2835
2836 extern int XMoveWindow(
2837     Display*            /* display */,
2838     Window              /* w */,
2839     int                 /* x */,
2840     int                 /* y */
2841 );
2842
2843 extern int XNextEvent(
2844     Display*            /* display */,
2845     XEvent*             /* event_return */
2846 );
2847
2848 extern int XNoOp(
2849     Display*            /* display */
2850 );
2851
2852 extern Status XParseColor(
2853     Display*            /* display */,
2854     Colormap            /* colormap */,
2855     _Xconst char*       /* spec */,
2856     XColor*             /* exact_def_return */
2857 );
2858
2859 extern int XParseGeometry(
2860     _Xconst char*       /* parsestring */,
2861     int*                /* x_return */,
2862     int*                /* y_return */,
2863     unsigned int*       /* width_return */,
2864     unsigned int*       /* height_return */
2865 );
2866
2867 extern int XPeekEvent(
2868     Display*            /* display */,
2869     XEvent*             /* event_return */
2870 );
2871
2872 extern int XPeekIfEvent(
2873     Display*            /* display */,
2874     XEvent*             /* event_return */,
2875     Bool (*) (
2876                Display*         /* display */,
2877                XEvent*          /* event */,
2878                XPointer         /* arg */
2879              )          /* predicate */,
2880     XPointer            /* arg */
2881 );
2882
2883 extern int XPending(
2884     Display*            /* display */
2885 );
2886
2887 extern int XPlanesOfScreen(
2888     Screen*             /* screen */
2889 );
2890
2891 extern int XProtocolRevision(
2892     Display*            /* display */
2893 );
2894
2895 extern int XProtocolVersion(
2896     Display*            /* display */
2897 );
2898
2899
2900 extern int XPutBackEvent(
2901     Display*            /* display */,
2902     XEvent*             /* event */
2903 );
2904
2905 extern int XPutImage(
2906     Display*            /* display */,
2907     Drawable            /* d */,
2908     GC                  /* gc */,
2909     XImage*             /* image */,
2910     int                 /* src_x */,
2911     int                 /* src_y */,
2912     int                 /* dest_x */,
2913     int                 /* dest_y */,
2914     unsigned int        /* width */,
2915     unsigned int        /* height */      
2916 );
2917
2918 extern int XQLength(
2919     Display*            /* display */
2920 );
2921
2922 extern Status XQueryBestCursor(
2923     Display*            /* display */,
2924     Drawable            /* d */,
2925     unsigned int        /* width */,
2926     unsigned int        /* height */,
2927     unsigned int*       /* width_return */,
2928     unsigned int*       /* height_return */
2929 );
2930
2931 extern Status XQueryBestSize(
2932     Display*            /* display */,
2933     int                 /* class */,
2934     Drawable            /* which_screen */,
2935     unsigned int        /* width */,
2936     unsigned int        /* height */,
2937     unsigned int*       /* width_return */,
2938     unsigned int*       /* height_return */
2939 );
2940
2941 extern Status XQueryBestStipple(
2942     Display*            /* display */,
2943     Drawable            /* which_screen */,
2944     unsigned int        /* width */,
2945     unsigned int        /* height */,
2946     unsigned int*       /* width_return */,
2947     unsigned int*       /* height_return */
2948 );
2949
2950 extern Status XQueryBestTile(
2951     Display*            /* display */,
2952     Drawable            /* which_screen */,
2953     unsigned int        /* width */,
2954     unsigned int        /* height */,
2955     unsigned int*       /* width_return */,
2956     unsigned int*       /* height_return */
2957 );
2958
2959 extern int XQueryColor(
2960     Display*            /* display */,
2961     Colormap            /* colormap */,
2962     XColor*             /* def_in_out */
2963 );
2964
2965 extern int XQueryColors(
2966     Display*            /* display */,
2967     Colormap            /* colormap */,
2968     XColor*             /* defs_in_out */,
2969     int                 /* ncolors */
2970 );
2971
2972 extern Bool XQueryExtension(
2973     Display*            /* display */,
2974     _Xconst char*       /* name */,
2975     int*                /* major_opcode_return */,
2976     int*                /* first_event_return */,
2977     int*                /* first_error_return */
2978 );
2979
2980 extern int XQueryKeymap(
2981     Display*            /* display */,
2982     char [32]           /* keys_return */
2983 );
2984
2985 extern Bool XQueryPointer(
2986     Display*            /* display */,
2987     Window              /* w */,
2988     Window*             /* root_return */,
2989     Window*             /* child_return */,
2990     int*                /* root_x_return */,
2991     int*                /* root_y_return */,
2992     int*                /* win_x_return */,
2993     int*                /* win_y_return */,
2994     unsigned int*       /* mask_return */
2995 );
2996
2997 extern int XQueryTextExtents(
2998     Display*            /* display */,
2999     XID                 /* font_ID */,
3000     _Xconst char*       /* string */,
3001     int                 /* nchars */,
3002     int*                /* direction_return */,
3003     int*                /* font_ascent_return */,
3004     int*                /* font_descent_return */,
3005     XCharStruct*        /* overall_return */    
3006 );
3007
3008 extern int XQueryTextExtents16(
3009     Display*            /* display */,
3010     XID                 /* font_ID */,
3011     _Xconst XChar2b*    /* string */,
3012     int                 /* nchars */,
3013     int*                /* direction_return */,
3014     int*                /* font_ascent_return */,
3015     int*                /* font_descent_return */,
3016     XCharStruct*        /* overall_return */
3017 );
3018
3019 extern Status XQueryTree(
3020     Display*            /* display */,
3021     Window              /* w */,
3022     Window*             /* root_return */,
3023     Window*             /* parent_return */,
3024     Window**            /* children_return */,
3025     unsigned int*       /* nchildren_return */
3026 );
3027
3028 extern int XRaiseWindow(
3029     Display*            /* display */,
3030     Window              /* w */
3031 );
3032
3033 extern int XReadBitmapFile(
3034     Display*            /* display */,
3035     Drawable            /* d */,
3036     _Xconst char*       /* filename */,
3037     unsigned int*       /* width_return */,
3038     unsigned int*       /* height_return */,
3039     Pixmap*             /* bitmap_return */,
3040     int*                /* x_hot_return */,
3041     int*                /* y_hot_return */
3042 );
3043
3044 extern int XReadBitmapFileData(
3045     _Xconst char*       /* filename */,
3046     unsigned int*       /* width_return */,
3047     unsigned int*       /* height_return */,
3048     unsigned char**     /* data_return */,
3049     int*                /* x_hot_return */,
3050     int*                /* y_hot_return */
3051 );
3052
3053 extern int XRebindKeysym(
3054     Display*            /* display */,
3055     KeySym              /* keysym */,
3056     KeySym*             /* list */,
3057     int                 /* mod_count */,
3058     _Xconst unsigned char*      /* string */,
3059     int                 /* bytes_string */
3060 );
3061
3062 extern int XRecolorCursor(
3063     Display*            /* display */,
3064     Cursor              /* cursor */,
3065     XColor*             /* foreground_color */,
3066     XColor*             /* background_color */
3067 );
3068
3069 extern int XRefreshKeyboardMapping(
3070     XMappingEvent*      /* event_map */    
3071 );
3072
3073 extern int XRemoveFromSaveSet(
3074     Display*            /* display */,
3075     Window              /* w */
3076 );
3077
3078 extern int XRemoveHost(
3079     Display*            /* display */,
3080     XHostAddress*       /* host */
3081 );
3082
3083 extern int XRemoveHosts(
3084     Display*            /* display */,
3085     XHostAddress*       /* hosts */,
3086     int                 /* num_hosts */
3087 );
3088
3089 extern int XReparentWindow(
3090     Display*            /* display */,
3091     Window              /* w */,
3092     Window              /* parent */,
3093     int                 /* x */,
3094     int                 /* y */
3095 );
3096
3097 extern int XResetScreenSaver(
3098     Display*            /* display */
3099 );
3100
3101 extern int XResizeWindow(
3102     Display*            /* display */,
3103     Window              /* w */,
3104     unsigned int        /* width */,
3105     unsigned int        /* height */
3106 );
3107
3108 extern int XRestackWindows(
3109     Display*            /* display */,
3110     Window*             /* windows */,
3111     int                 /* nwindows */
3112 );
3113
3114 extern int XRotateBuffers(
3115     Display*            /* display */,
3116     int                 /* rotate */
3117 );
3118
3119 extern int XRotateWindowProperties(
3120     Display*            /* display */,
3121     Window              /* w */,
3122     Atom*               /* properties */,
3123     int                 /* num_prop */,
3124     int                 /* npositions */
3125 );
3126
3127 extern int XScreenCount(
3128     Display*            /* display */
3129 );
3130
3131 extern int XSelectInput(
3132     Display*            /* display */,
3133     Window              /* w */,
3134     long                /* event_mask */
3135 );
3136
3137 extern Status XSendEvent(
3138     Display*            /* display */,
3139     Window              /* w */,
3140     Bool                /* propagate */,
3141     long                /* event_mask */,
3142     XEvent*             /* event_send */
3143 );
3144
3145 extern int XSetAccessControl(
3146     Display*            /* display */,
3147     int                 /* mode */
3148 );
3149
3150 extern int XSetArcMode(
3151     Display*            /* display */,
3152     GC                  /* gc */,
3153     int                 /* arc_mode */
3154 );
3155
3156 extern int XSetBackground(
3157     Display*            /* display */,
3158     GC                  /* gc */,
3159     unsigned long       /* background */
3160 );
3161
3162 extern int XSetClipMask(
3163     Display*            /* display */,
3164     GC                  /* gc */,
3165     Pixmap              /* pixmap */
3166 );
3167
3168 extern int XSetClipOrigin(
3169     Display*            /* display */,
3170     GC                  /* gc */,
3171     int                 /* clip_x_origin */,
3172     int                 /* clip_y_origin */
3173 );
3174
3175 extern int XSetClipRectangles(
3176     Display*            /* display */,
3177     GC                  /* gc */,
3178     int                 /* clip_x_origin */,
3179     int                 /* clip_y_origin */,
3180     XRectangle*         /* rectangles */,
3181     int                 /* n */,
3182     int                 /* ordering */
3183 );
3184
3185 extern int XSetCloseDownMode(
3186     Display*            /* display */,
3187     int                 /* close_mode */
3188 );
3189
3190 extern int XSetCommand(
3191     Display*            /* display */,
3192     Window              /* w */,
3193     char**              /* argv */,
3194     int                 /* argc */
3195 );
3196
3197 extern int XSetDashes(
3198     Display*            /* display */,
3199     GC                  /* gc */,
3200     int                 /* dash_offset */,
3201     _Xconst char*       /* dash_list */,
3202     int                 /* n */
3203 );
3204
3205 extern int XSetFillRule(
3206     Display*            /* display */,
3207     GC                  /* gc */,
3208     int                 /* fill_rule */
3209 );
3210
3211 extern int XSetFillStyle(
3212     Display*            /* display */,
3213     GC                  /* gc */,
3214     int                 /* fill_style */
3215 );
3216
3217 extern int XSetFont(
3218     Display*            /* display */,
3219     GC                  /* gc */,
3220     Font                /* font */
3221 );
3222
3223 extern int XSetFontPath(
3224     Display*            /* display */,
3225     char**              /* directories */,
3226     int                 /* ndirs */          
3227 );
3228
3229 extern int XSetForeground(
3230     Display*            /* display */,
3231     GC                  /* gc */,
3232     unsigned long       /* foreground */
3233 );
3234
3235 extern int XSetFunction(
3236     Display*            /* display */,
3237     GC                  /* gc */,
3238     int                 /* function */
3239 );
3240
3241 extern int XSetGraphicsExposures(
3242     Display*            /* display */,
3243     GC                  /* gc */,
3244     Bool                /* graphics_exposures */
3245 );
3246
3247 extern int XSetIconName(
3248     Display*            /* display */,
3249     Window              /* w */,
3250     _Xconst char*       /* icon_name */
3251 );
3252
3253 extern int XSetInputFocus(
3254     Display*            /* display */,
3255     Window              /* focus */,
3256     int                 /* revert_to */,
3257     Time                /* time */
3258 );
3259
3260 extern int XSetLineAttributes(
3261     Display*            /* display */,
3262     GC                  /* gc */,
3263     unsigned int        /* line_width */,
3264     int                 /* line_style */,
3265     int                 /* cap_style */,
3266     int                 /* join_style */
3267 );
3268
3269 extern int XSetModifierMapping(
3270     Display*            /* display */,
3271     XModifierKeymap*    /* modmap */
3272 );
3273
3274 extern int XSetPlaneMask(
3275     Display*            /* display */,
3276     GC                  /* gc */,
3277     unsigned long       /* plane_mask */
3278 );
3279
3280 extern int XSetPointerMapping(
3281     Display*            /* display */,
3282     _Xconst unsigned char*      /* map */,
3283     int                 /* nmap */
3284 );
3285
3286 extern int XSetScreenSaver(
3287     Display*            /* display */,
3288     int                 /* timeout */,
3289     int                 /* interval */,
3290     int                 /* prefer_blanking */,
3291     int                 /* allow_exposures */
3292 );
3293
3294 extern int XSetSelectionOwner(
3295     Display*            /* display */,
3296     Atom                /* selection */,
3297     Window              /* owner */,
3298     Time                /* time */
3299 );
3300
3301 extern int XSetState(
3302     Display*            /* display */,
3303     GC                  /* gc */,
3304     unsigned long       /* foreground */,
3305     unsigned long       /* background */,
3306     int                 /* function */,
3307     unsigned long       /* plane_mask */
3308 );
3309
3310 extern int XSetStipple(
3311     Display*            /* display */,
3312     GC                  /* gc */,
3313     Pixmap              /* stipple */
3314 );
3315
3316 extern int XSetSubwindowMode(
3317     Display*            /* display */,
3318     GC                  /* gc */,
3319     int                 /* subwindow_mode */
3320 );
3321
3322 extern int XSetTSOrigin(
3323     Display*            /* display */,
3324     GC                  /* gc */,
3325     int                 /* ts_x_origin */,
3326     int                 /* ts_y_origin */
3327 );
3328
3329 extern int XSetTile(
3330     Display*            /* display */,
3331     GC                  /* gc */,
3332     Pixmap              /* tile */
3333 );
3334
3335 extern int XSetWindowBackground(
3336     Display*            /* display */,
3337     Window              /* w */,
3338     unsigned long       /* background_pixel */
3339 );
3340
3341 extern int XSetWindowBackgroundPixmap(
3342     Display*            /* display */,
3343     Window              /* w */,
3344     Pixmap              /* background_pixmap */
3345 );
3346
3347 extern int XSetWindowBorder(
3348     Display*            /* display */,
3349     Window              /* w */,
3350     unsigned long       /* border_pixel */
3351 );
3352
3353 extern int XSetWindowBorderPixmap(
3354     Display*            /* display */,
3355     Window              /* w */,
3356     Pixmap              /* border_pixmap */
3357 );
3358
3359 extern int XSetWindowBorderWidth(
3360     Display*            /* display */,
3361     Window              /* w */,
3362     unsigned int        /* width */
3363 );
3364
3365 extern int XSetWindowColormap(
3366     Display*            /* display */,
3367     Window              /* w */,
3368     Colormap            /* colormap */
3369 );
3370
3371 extern int XStoreBuffer(
3372     Display*            /* display */,
3373     _Xconst char*       /* bytes */,
3374     int                 /* nbytes */,
3375     int                 /* buffer */
3376 );
3377
3378 extern int XStoreBytes(
3379     Display*            /* display */,
3380     _Xconst char*       /* bytes */,
3381     int                 /* nbytes */
3382 );
3383
3384 extern int XStoreColor(
3385     Display*            /* display */,
3386     Colormap            /* colormap */,
3387     XColor*             /* color */
3388 );
3389
3390 extern int XStoreColors(
3391     Display*            /* display */,
3392     Colormap            /* colormap */,
3393     XColor*             /* color */,
3394     int                 /* ncolors */
3395 );
3396
3397 extern int XStoreName(
3398     Display*            /* display */,
3399     Window              /* w */,
3400     _Xconst char*       /* window_name */
3401 );
3402
3403 extern int XStoreNamedColor(
3404     Display*            /* display */,
3405     Colormap            /* colormap */,
3406     _Xconst char*       /* color */,
3407     unsigned long       /* pixel */,
3408     int                 /* flags */
3409 );
3410
3411 extern int XSync(
3412     Display*            /* display */,
3413     Bool                /* discard */
3414 );
3415
3416 extern int XTextExtents(
3417     XFontStruct*        /* font_struct */,
3418     _Xconst char*       /* string */,
3419     int                 /* nchars */,
3420     int*                /* direction_return */,
3421     int*                /* font_ascent_return */,
3422     int*                /* font_descent_return */,
3423     XCharStruct*        /* overall_return */
3424 );
3425
3426 extern int XTextExtents16(
3427     XFontStruct*        /* font_struct */,
3428     _Xconst XChar2b*    /* string */,
3429     int                 /* nchars */,
3430     int*                /* direction_return */,
3431     int*                /* font_ascent_return */,
3432     int*                /* font_descent_return */,
3433     XCharStruct*        /* overall_return */
3434 );
3435
3436 extern int XTextWidth(
3437     XFontStruct*        /* font_struct */,
3438     _Xconst char*       /* string */,
3439     int                 /* count */
3440 );
3441
3442 extern int XTextWidth16(
3443     XFontStruct*        /* font_struct */,
3444     _Xconst XChar2b*    /* string */,
3445     int                 /* count */
3446 );
3447
3448 extern Bool XTranslateCoordinates(
3449     Display*            /* display */,
3450     Window              /* src_w */,
3451     Window              /* dest_w */,
3452     int                 /* src_x */,
3453     int                 /* src_y */,
3454     int*                /* dest_x_return */,
3455     int*                /* dest_y_return */,
3456     Window*             /* child_return */
3457 );
3458
3459 extern int XUndefineCursor(
3460     Display*            /* display */,
3461     Window              /* w */
3462 );
3463
3464 extern int XUngrabButton(
3465     Display*            /* display */,
3466     unsigned int        /* button */,
3467     unsigned int        /* modifiers */,
3468     Window              /* grab_window */
3469 );
3470
3471 extern int XUngrabKey(
3472     Display*            /* display */,
3473     int                 /* keycode */,
3474     unsigned int        /* modifiers */,
3475     Window              /* grab_window */
3476 );
3477
3478 extern int XUngrabKeyboard(
3479     Display*            /* display */,
3480     Time                /* time */
3481 );
3482
3483 extern int XUngrabPointer(
3484     Display*            /* display */,
3485     Time                /* time */
3486 );
3487
3488 extern int XUngrabServer(
3489     Display*            /* display */
3490 );
3491
3492 extern int XUninstallColormap(
3493     Display*            /* display */,
3494     Colormap            /* colormap */
3495 );
3496
3497 extern int XUnloadFont(
3498     Display*            /* display */,
3499     Font                /* font */
3500 );
3501
3502 extern int XUnmapSubwindows(
3503     Display*            /* display */,
3504     Window              /* w */
3505 );
3506
3507 extern int XUnmapWindow(
3508     Display*            /* display */,
3509     Window              /* w */
3510 );
3511
3512 extern int XVendorRelease(
3513     Display*            /* display */
3514 );
3515
3516 extern int XWarpPointer(
3517     Display*            /* display */,
3518     Window              /* src_w */,
3519     Window              /* dest_w */,
3520     int                 /* src_x */,
3521     int                 /* src_y */,
3522     unsigned int        /* src_width */,
3523     unsigned int        /* src_height */,
3524     int                 /* dest_x */,
3525     int                 /* dest_y */         
3526 );
3527
3528 extern int XWidthMMOfScreen(
3529     Screen*             /* screen */
3530 );
3531
3532 extern int XWidthOfScreen(
3533     Screen*             /* screen */
3534 );
3535
3536 extern int XWindowEvent(
3537     Display*            /* display */,
3538     Window              /* w */,
3539     long                /* event_mask */,
3540     XEvent*             /* event_return */
3541 );
3542
3543 extern int XWriteBitmapFile(
3544     Display*            /* display */,
3545     _Xconst char*       /* filename */,
3546     Pixmap              /* bitmap */,
3547     unsigned int        /* width */,
3548     unsigned int        /* height */,
3549     int                 /* x_hot */,
3550     int                 /* y_hot */                  
3551 );
3552
3553 extern Bool XSupportsLocale (void);
3554
3555 extern char *XSetLocaleModifiers(
3556     const char*         /* modifier_list */
3557 );
3558
3559 extern XOM XOpenOM(
3560     Display*                    /* display */,
3561     struct _XrmHashBucketRec*   /* rdb */,
3562     _Xconst char*               /* res_name */,
3563     _Xconst char*               /* res_class */
3564 );
3565
3566 extern Status XCloseOM(
3567     XOM                 /* om */
3568 );
3569
3570 extern char *XSetOMValues(
3571     XOM                 /* om */,
3572     ...
3573 ) _X_SENTINEL(0);
3574
3575 extern char *XGetOMValues(
3576     XOM                 /* om */,
3577     ...
3578 ) _X_SENTINEL(0);
3579
3580 extern Display *XDisplayOfOM(
3581     XOM                 /* om */
3582 );
3583
3584 extern char *XLocaleOfOM(
3585     XOM                 /* om */
3586 );
3587
3588 extern XOC XCreateOC(
3589     XOM                 /* om */,
3590     ...
3591 ) _X_SENTINEL(0);
3592
3593 extern void XDestroyOC(
3594     XOC                 /* oc */
3595 );
3596
3597 extern XOM XOMOfOC(
3598     XOC                 /* oc */
3599 );
3600
3601 extern char *XSetOCValues(
3602     XOC                 /* oc */,
3603     ...
3604 ) _X_SENTINEL(0);
3605
3606 extern char *XGetOCValues(
3607     XOC                 /* oc */,
3608     ...
3609 ) _X_SENTINEL(0);
3610
3611 extern XFontSet XCreateFontSet(
3612     Display*            /* display */,
3613     _Xconst char*       /* base_font_name_list */,
3614     char***             /* missing_charset_list */,
3615     int*                /* missing_charset_count */,
3616     char**              /* def_string */
3617 );
3618
3619 extern void XFreeFontSet(
3620     Display*            /* display */,
3621     XFontSet            /* font_set */
3622 );
3623
3624 extern int XFontsOfFontSet(
3625     XFontSet            /* font_set */,
3626     XFontStruct***      /* font_struct_list */,
3627     char***             /* font_name_list */
3628 );
3629
3630 extern char *XBaseFontNameListOfFontSet(
3631     XFontSet            /* font_set */
3632 );
3633
3634 extern char *XLocaleOfFontSet(
3635     XFontSet            /* font_set */
3636 );
3637
3638 extern Bool XContextDependentDrawing(
3639     XFontSet            /* font_set */
3640 );
3641
3642 extern Bool XDirectionalDependentDrawing(
3643     XFontSet            /* font_set */
3644 );
3645
3646 extern Bool XContextualDrawing(
3647     XFontSet            /* font_set */
3648 );
3649
3650 extern XFontSetExtents *XExtentsOfFontSet(
3651     XFontSet            /* font_set */
3652 );
3653
3654 extern int XmbTextEscapement(
3655     XFontSet            /* font_set */,
3656     _Xconst char*       /* text */,
3657     int                 /* bytes_text */
3658 );
3659
3660 extern int XwcTextEscapement(
3661     XFontSet            /* font_set */,
3662     _Xconst wchar_t*    /* text */,
3663     int                 /* num_wchars */
3664 );
3665
3666 extern int Xutf8TextEscapement(
3667     XFontSet            /* font_set */,
3668     _Xconst char*       /* text */,
3669     int                 /* bytes_text */
3670 );
3671
3672 extern int XmbTextExtents(
3673     XFontSet            /* font_set */,
3674     _Xconst char*       /* text */,
3675     int                 /* bytes_text */,
3676     XRectangle*         /* overall_ink_return */,
3677     XRectangle*         /* overall_logical_return */
3678 );
3679
3680 extern int XwcTextExtents(
3681     XFontSet            /* font_set */,
3682     _Xconst wchar_t*    /* text */,
3683     int                 /* num_wchars */,
3684     XRectangle*         /* overall_ink_return */,
3685     XRectangle*         /* overall_logical_return */
3686 );
3687
3688 extern int Xutf8TextExtents(
3689     XFontSet            /* font_set */,
3690     _Xconst char*       /* text */,
3691     int                 /* bytes_text */,
3692     XRectangle*         /* overall_ink_return */,
3693     XRectangle*         /* overall_logical_return */
3694 );
3695
3696 extern Status XmbTextPerCharExtents(
3697     XFontSet            /* font_set */,
3698     _Xconst char*       /* text */,
3699     int                 /* bytes_text */,
3700     XRectangle*         /* ink_extents_buffer */,
3701     XRectangle*         /* logical_extents_buffer */,
3702     int                 /* buffer_size */,
3703     int*                /* num_chars */,
3704     XRectangle*         /* overall_ink_return */,
3705     XRectangle*         /* overall_logical_return */
3706 );
3707
3708 extern Status XwcTextPerCharExtents(
3709     XFontSet            /* font_set */,
3710     _Xconst wchar_t*    /* text */,
3711     int                 /* num_wchars */,
3712     XRectangle*         /* ink_extents_buffer */,
3713     XRectangle*         /* logical_extents_buffer */,
3714     int                 /* buffer_size */,
3715     int*                /* num_chars */,
3716     XRectangle*         /* overall_ink_return */,
3717     XRectangle*         /* overall_logical_return */
3718 );
3719
3720 extern Status Xutf8TextPerCharExtents(
3721     XFontSet            /* font_set */,
3722     _Xconst char*       /* text */,
3723     int                 /* bytes_text */,
3724     XRectangle*         /* ink_extents_buffer */,
3725     XRectangle*         /* logical_extents_buffer */,
3726     int                 /* buffer_size */,
3727     int*                /* num_chars */,
3728     XRectangle*         /* overall_ink_return */,
3729     XRectangle*         /* overall_logical_return */
3730 );
3731
3732 extern void XmbDrawText(
3733     Display*            /* display */,
3734     Drawable            /* d */,
3735     GC                  /* gc */,
3736     int                 /* x */,
3737     int                 /* y */,
3738     XmbTextItem*        /* text_items */,
3739     int                 /* nitems */
3740 );
3741
3742 extern void XwcDrawText(
3743     Display*            /* display */,
3744     Drawable            /* d */,
3745     GC                  /* gc */,
3746     int                 /* x */,
3747     int                 /* y */,
3748     XwcTextItem*        /* text_items */,
3749     int                 /* nitems */
3750 );
3751
3752 extern void Xutf8DrawText(
3753     Display*            /* display */,
3754     Drawable            /* d */,
3755     GC                  /* gc */,
3756     int                 /* x */,
3757     int                 /* y */,
3758     XmbTextItem*        /* text_items */,
3759     int                 /* nitems */
3760 );
3761
3762 extern void XmbDrawString(
3763     Display*            /* display */,
3764     Drawable            /* d */,
3765     XFontSet            /* font_set */,
3766     GC                  /* gc */,
3767     int                 /* x */,
3768     int                 /* y */,
3769     _Xconst char*       /* text */,
3770     int                 /* bytes_text */
3771 );
3772
3773 extern void XwcDrawString(
3774     Display*            /* display */,
3775     Drawable            /* d */,
3776     XFontSet            /* font_set */,
3777     GC                  /* gc */,
3778     int                 /* x */,
3779     int                 /* y */,
3780     _Xconst wchar_t*    /* text */,
3781     int                 /* num_wchars */
3782 );
3783
3784 extern void Xutf8DrawString(
3785     Display*            /* display */,
3786     Drawable            /* d */,
3787     XFontSet            /* font_set */,
3788     GC                  /* gc */,
3789     int                 /* x */,
3790     int                 /* y */,
3791     _Xconst char*       /* text */,
3792     int                 /* bytes_text */
3793 );
3794
3795 extern void XmbDrawImageString(
3796     Display*            /* display */,
3797     Drawable            /* d */,
3798     XFontSet            /* font_set */,
3799     GC                  /* gc */,
3800     int                 /* x */,
3801     int                 /* y */,
3802     _Xconst char*       /* text */,
3803     int                 /* bytes_text */
3804 );
3805
3806 extern void XwcDrawImageString(
3807     Display*            /* display */,
3808     Drawable            /* d */,
3809     XFontSet            /* font_set */,
3810     GC                  /* gc */,
3811     int                 /* x */,
3812     int                 /* y */,
3813     _Xconst wchar_t*    /* text */,
3814     int                 /* num_wchars */
3815 );
3816
3817 extern void Xutf8DrawImageString(
3818     Display*            /* display */,
3819     Drawable            /* d */,
3820     XFontSet            /* font_set */,
3821     GC                  /* gc */,
3822     int                 /* x */,
3823     int                 /* y */,
3824     _Xconst char*       /* text */,
3825     int                 /* bytes_text */
3826 );
3827
3828 extern XIM XOpenIM(
3829     Display*                    /* dpy */,
3830     struct _XrmHashBucketRec*   /* rdb */,
3831     char*                       /* res_name */,
3832     char*                       /* res_class */
3833 );
3834
3835 extern Status XCloseIM(
3836     XIM /* im */
3837 );
3838
3839 extern char *XGetIMValues(
3840     XIM /* im */, ...
3841 ) _X_SENTINEL(0);
3842
3843 extern char *XSetIMValues(
3844     XIM /* im */, ...
3845 ) _X_SENTINEL(0);
3846
3847 extern Display *XDisplayOfIM(
3848     XIM /* im */
3849 );
3850
3851 extern char *XLocaleOfIM(
3852     XIM /* im*/
3853 );
3854
3855 extern XIC XCreateIC(
3856     XIM /* im */, ...
3857 ) _X_SENTINEL(0);
3858
3859 extern void XDestroyIC(
3860     XIC /* ic */
3861 );
3862
3863 extern void XSetICFocus(
3864     XIC /* ic */
3865 );
3866
3867 extern void XUnsetICFocus(
3868     XIC /* ic */
3869 );
3870
3871 extern wchar_t *XwcResetIC(
3872     XIC /* ic */
3873 );
3874
3875 extern char *XmbResetIC(
3876     XIC /* ic */
3877 );
3878
3879 extern char *Xutf8ResetIC(
3880     XIC /* ic */
3881 );
3882
3883 extern char *XSetICValues(
3884     XIC /* ic */, ...
3885 ) _X_SENTINEL(0);
3886
3887 extern char *XGetICValues(
3888     XIC /* ic */, ...
3889 ) _X_SENTINEL(0);
3890
3891 extern XIM XIMOfIC(
3892     XIC /* ic */
3893 );
3894
3895 extern Bool XFilterEvent(
3896     XEvent*     /* event */,
3897     Window      /* window */
3898 );
3899
3900 extern int XmbLookupString(
3901     XIC                 /* ic */,
3902     XKeyPressedEvent*   /* event */,
3903     char*               /* buffer_return */,
3904     int                 /* bytes_buffer */,
3905     KeySym*             /* keysym_return */,
3906     Status*             /* status_return */
3907 );
3908
3909 extern int XwcLookupString(
3910     XIC                 /* ic */,
3911     XKeyPressedEvent*   /* event */,
3912     wchar_t*            /* buffer_return */,
3913     int                 /* wchars_buffer */,
3914     KeySym*             /* keysym_return */,
3915     Status*             /* status_return */
3916 );
3917
3918 extern int Xutf8LookupString(
3919     XIC                 /* ic */,
3920     XKeyPressedEvent*   /* event */,
3921     char*               /* buffer_return */,
3922     int                 /* bytes_buffer */,
3923     KeySym*             /* keysym_return */,
3924     Status*             /* status_return */
3925 );
3926
3927 extern XVaNestedList XVaCreateNestedList(
3928     int /*unused*/, ...
3929 ) _X_SENTINEL(0);
3930
3931 /* internal connections for IMs */
3932
3933 extern Bool XRegisterIMInstantiateCallback(
3934     Display*                    /* dpy */,
3935     struct _XrmHashBucketRec*   /* rdb */,
3936     char*                       /* res_name */,
3937     char*                       /* res_class */,
3938     XIDProc                     /* callback */,
3939     XPointer                    /* client_data */
3940 );
3941
3942 extern Bool XUnregisterIMInstantiateCallback(
3943     Display*                    /* dpy */,
3944     struct _XrmHashBucketRec*   /* rdb */,
3945     char*                       /* res_name */,
3946     char*                       /* res_class */,
3947     XIDProc                     /* callback */,
3948     XPointer                    /* client_data */
3949 );
3950
3951 typedef void (*XConnectionWatchProc)(
3952     Display*                    /* dpy */,
3953     XPointer                    /* client_data */,
3954     int                         /* fd */,
3955     Bool                        /* opening */,   /* open or close flag */
3956     XPointer*                   /* watch_data */ /* open sets, close uses */
3957 );
3958     
3959
3960 extern Status XInternalConnectionNumbers(
3961     Display*                    /* dpy */,
3962     int**                       /* fd_return */,
3963     int*                        /* count_return */
3964 );
3965
3966 extern void XProcessInternalConnection(
3967     Display*                    /* dpy */,
3968     int                         /* fd */
3969 );
3970
3971 extern Status XAddConnectionWatch(
3972     Display*                    /* dpy */,
3973     XConnectionWatchProc        /* callback */,
3974     XPointer                    /* client_data */
3975 );
3976
3977 extern void XRemoveConnectionWatch(
3978     Display*                    /* dpy */,
3979     XConnectionWatchProc        /* callback */,
3980     XPointer                    /* client_data */
3981 );
3982
3983 extern void XSetAuthorization(
3984     char *                      /* name */,
3985     int                         /* namelen */, 
3986     char *                      /* data */,
3987     int                         /* datalen */
3988 );
3989
3990 extern int _Xmbtowc(
3991     wchar_t *                   /* wstr */,
3992 #ifdef ISC
3993     char const *                /* str */,
3994     size_t                      /* len */
3995 #else
3996     char *                      /* str */,
3997     int                         /* len */
3998 #endif
3999 );
4000
4001 extern int _Xwctomb(
4002     char *                      /* str */,
4003     wchar_t                     /* wc */
4004 );
4005
4006 _XFUNCPROTOEND
4007
4008 #endif /* _XLIB_H_ */