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