root/trunk/X11/Xlib.d

Revision 363, 90.6 kB (checked in by Gor, 1 year ago)

Added explicit casts where necessary and replaced deprecated c-style function pointer declarations

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