1 module derelict.x11.Xutil;
2 version(linux):
3 import core.stdc.config;
4 import derelict.x11.Xlib;
5 import derelict.x11.X;
6 import derelict.x11.Xregion;
7 import derelict.x11.Xresource : XrmStringToQuark;
8 import derelict.x11.keysym;
9
10 extern (C) nothrow @nogc:
11
12 /*
13 * Bitmask returned by XParseGeometry(). Each bit tells if the corresponding
14 * value (x, y, width, height) was found in the parsed string.
15 */
16 const int NoValue = 0x0000;
17 const int XValue = 0x0001;
18 const int YValue = 0x0002;
19 const int WidthValue = 0x0004;
20 const int HeightValue = 0x0008;
21 const int AllValues = 0x000F;
22 const int XNegative = 0x0010;
23 const int YNegative = 0x0020;
24
25 /*
26 * new version containing base_width, base_height, and win_gravity fields;
27 * used with WM_NORMAL_HINTS.
28 */
29 struct XSizeHints {
30 c_long flags; /* marks which fields in this structure are defined */
31 int x, y; /* obsolete for new window mgrs, but clients */
32 int width, height; /* should set so old wm's don't mess up */
33 int min_width, min_height;
34 int max_width, max_height;
35 int width_inc, height_inc;
36 struct aspect {
37 int x; /* numerator */
38 int y; /* denominator */
39 }
40 aspect min_aspect, max_aspect;
41 int base_width, base_height; /* added by ICCCM version 1 */
42 int win_gravity; /* added by ICCCM version 1 */
43 }
44
45 /*
46 * The next block of definitions are for window manager properties that
47 * clients and applications use for communication.
48 */
49
50 /* flags argument in size hints */
51 enum {
52 USPosition = 1L << 0, /* user specified x, y */
53 USSize = 1L << 1, /* user specified width, height */
54
55 PPosition = 1L << 2, /* program specified position */
56 PSize = 1L << 3, /* program specified size */
57 PMinSize = 1L << 4, /* program specified minimum size */
58 PMaxSize = 1L << 5, /* program specified maximum size */
59 PResizeInc = 1L << 6, /* program specified resize increments */
60 PAspect = 1L << 7, /* program specified min and max aspect ratios */
61 PBaseSize = 1L << 8, /* program specified base for incrementing */
62 PWinGravity = 1L << 9 /* program specified window gravity */
63 }
64
65 /* obsolete */
66 c_long PAllHints = (PPosition|PSize|PMinSize|PMaxSize|PResizeInc|PAspect);
67
68
69
70 struct XWMHints{
71 c_long flags; /* marks which fields in this structure are defined */
72 Bool input; /* does this application rely on the window manager to get keyboard input? */
73 int nitial_state; /* see below */
74 Pixmap icon_pixmap; /* pixmap to be used as icon */
75 Window icon_window; /* window to be used as icon */
76 int icon_x, icon_y; /* initial position of icon */
77 Pixmap icon_mask; /* icon mask bitmap */
78 XID window_group; /* id of related window group */
79 /* this structure may be extended in the future */
80 }
81
82 /* definition for flags of XWMHints */
83 enum {
84 InputHint = (1L << 0),
85 StateHint = (1L << 1),
86 IconPixmapHint = (1L << 2),
87 IconWindowHint = (1L << 3),
88 IconPositionHint = (1L << 4),
89 IconMaskHint = (1L << 5),
90 WindowGroupHint = (1L << 6),
91 AllHints = (InputHint|StateHint|IconPixmapHint|IconWindowHint|IconPositionHint|IconMaskHint|WindowGroupHint),
92 XUrgencyHint = (1L << 8)
93 }
94
95 /* definitions for initial window state */
96 enum {
97 WithdrawnState = 0, /* for windows that are not mapped */
98 NormalState = 1, /* most applications want to start this way */
99 IconicState = 3 /* application wants to start as an icon */
100 }
101
102 /*
103 * Obsolete states no longer defined by ICCCM
104 */
105 enum {
106 DontCareState = 0, /* don't know or care */
107 ZoomState = 2, /* application wants to start zoomed */
108 InactiveState = 4 /* application believes it is seldom used; */
109 }
110 /* some wm's may put it on inactive menu */
111
112
113 /*
114 * new structure for manipulating TEXT properties; used with WM_NAME,
115 * WM_ICON_NAME, WM_CLIENT_MACHINE, and WM_COMMAND.
116 */
117 struct XTextProperty{
118 ubyte* value; /* same as Property routines */
119 Atom encoding; /* prop type */
120 int format; /* prop data format: 8, 16, or 32 */
121 c_ulong nitems; /* number of data items in value */
122 }
123
124 const int XNoMemory = -1;
125 const int XLocaleNotSupported = -2;
126 const int XConverterNotFound = -3;
127
128 alias int XICCEncodingStyle;
129 enum {
130 XStringStyle, /* STRING */
131 XCompoundTextStyle, /* COMPOUND_TEXT */
132 XTextStyle, /* text in owner's encoding (current locale) */
133 XStdICCTextStyle, /* STRING, else COMPOUND_TEXT */
134 /* The following is an XFree86 extension, introduced in November 2000 */
135 XUTF8StringStyle /* UTF8_STRING */
136 }
137
138 struct XIconSize{
139 int min_width, min_height;
140 int max_width, max_height;
141 int width_inc, height_inc;
142 }
143
144 struct XClassHint{
145 char* res_name;
146 char* res_class;
147 } ;
148
149 version( XUTIL_DEFINE_FUNCTIONS ){
150 extern int XDestroyImage( XImage* ximage );
151 extern c_ulong XGetPixel( XImage *ximage, int x, int y );
152 extern int XPutPixel( XImage* ximage, int x, int y, c_ulong pixel );
153 extern XImage* XSubImage( XImage *ximage, int x, int y, uint width, uint height );
154 extern int XAddPixel( XImage *ximage, c_long value);
155 }
156 else{
157 /*
158 * These macros are used to give some sugar to the image routines so that
159 * naive people are more comfortable with them.
160 */
161 /**
162 * XDestroyImage
163 * The XDestroyImage() function deallocates the memory associated with the XImage structure.
164 * Note that when the image is created using XCreateImage(), XGetImage(), or XSubImage(), the destroy procedure that this macro calls frees both the image structure and the data pointed to by the image structure.
165 * Params:
166 * ximage = Specifies the image.
167 * See_Also:
168 * XAddPixel(), XCreateImage(), XGetPixel(), XPutPixel(), XSubImage(), http://tronche.com/gui/x/xlib/utilities/manipulating-images.html
169 */
170 int XDestroyImage( XImage* ximage ){
171 return ximage.f.destroy_image(ximage);
172 }
173 /**
174 * XGetPixel
175 * The XGetPixel() function returns the specified pixel from the named image. The pixel value is returned in normalized format (that is, the least-significant byte of the long is the least-significant byte of the pixel). The image must contain the x and y coordinates.
176 * Params:
177 * ximage = Specifies the image.
178 * x = Specify the x coordinate.
179 * y = Specify the y coordinate.
180 * See_Also:
181 * XAddPixel(), XCreateImage(), XGetPixel(), XPutPixel(), XSubImage(), http://tronche.com/gui/x/xlib/utilities/manipulating-images.html
182 */
183 c_ulong XGetPixel( XImage* ximage, int x, int y ){
184 return ximage.f.get_pixel(ximage, x, y);
185 }
186 /**
187 * XPutPixel
188 * The XPutPixel() function overwrites the pixel in the named image with the specified pixel value. The input pixel value must be in normalized format (that is, the least-significant byte of the long is the least-significant byte of the pixel). The image must contain the x and y coordinates.
189 * Params:
190 * ximage = Specifies the image.
191 * x = Specify the x coordinate.
192 * y = Specify the y coordinate.
193 * pixel = Specifies the new pixel value.
194 * See_Also:
195 * XAddPixel(), XCreateImage(), XGetPixel(), XPutPixel(), XSubImage(), http://tronche.com/gui/x/xlib/utilities/manipulating-images.html
196 */
197 int XPutPixel( XImage* ximage, int x, int y, c_ulong pixel ){
198 return ximage.f.put_pixel(ximage, x, y, pixel);
199 }
200 /**
201 * XSubImage
202 * The XSubImage() function creates a new image that is a subsection of an existing one. It allocates the memory necessary for the new XImage structure and returns a pointer to the new image. The data is copied from the source image, and the image must contain the rectangle defined by x, y, subimage_width, and subimage_height.
203 * Params:
204 * ximage = Specifies the image.
205 * x = Specify the x coordinate.
206 * y = Specify the y coordinate.
207 * subimage_width = Specifies the width of the new subimage, in pixels.
208 * subimage_height = Specifies the height of the new subimage, in pixels.
209 * See_Also:
210 * XAddPixel(), XCreateImage(), XGetPixel(), XPutPixel(), XSubImage(), http://tronche.com/gui/x/xlib/utilities/manipulating-images.html
211 */
212 XImage XSubImage( XImage* ximage, int x, int y, uint width, uint height ){
213 return ximage.f.sub_image(ximage, x, y, width, height);
214 }
215 /**
216 * XAddPixel
217 * The XAddPixel() function adds a constant value to every pixel in an image. It is useful when you have a base pixel value from allocating color resources and need to manipulate the image to that form.
218 * Params:
219 * ximage = Specifies the image.
220 * value = Specifies the constant value that is to be added.
221 * See_Also:
222 * XAddPixel(), XCreateImage(), XGetPixel(), XPutPixel(), XSubImage(), http://tronche.com/gui/x/xlib/utilities/manipulating-images.html
223 */
224 int XAddPixel( XImage* ximage, c_long value ){
225 return ximage.f.add_pixel(ximage, value);
226 }
227 }
228
229 /*
230 * Compose sequence status structure, used in calling XLookupString.
231 */
232 struct XComposeStatus {
233 XPointer compose_ptr; /* state table pointer */
234 int chars_matched; /* match state */
235 }
236
237 /*
238 * Keysym macros, used on Keysyms to test for classes of symbols
239 */
240 template IsKeypadKey(KeySym keysym){
241 const bool IsKeypadKey = (( keysym >= XK_KP_Space ) && ( keysym <= XK_KP_Equal));
242 }
243
244 template IsPrivateKeypadKey(KeySym keysym){
245 const bool IsPrivateKeypadKey = (( keysym >= 0x11000000 ) && ( keysym <= 0x1100FFFF));
246 }
247
248 template IsCursorKey(KeySym keysym){
249 const bool IsCursorKey = (( keysym >= XK_Home ) && ( keysym < XK_Select));
250 }
251
252 template IsPFKey(KeySym keysym){
253 const bool IsPFKey = (( keysym >= XK_KP_F1 ) && ( keysym <= XK_KP_F4));
254 }
255
256 template IsFunctionKey(KeySym keysym){
257 const bool IsFunctionKey = (( keysym >= XK_F1 ) && (keysym <= XK_F35));
258 }
259
260 template IsMiscFunctionKey(KeySym keysym){
261 const bool IsMiscFunctionKey = (( keysym >= XK_Select ) && ( keysym <= XK_Break));
262 }
263
264 static if( XK_XKB_KEYS ){
265 template IsModifierKey(KeySym keysym){
266 const bool IsModifierKey = ( ( (keysym >= XK_Shift_L) && (keysym <= XK_Hyper_R) )
267 || ( (keysym >= XK_ISO_Lock) && (keysym <= XK_ISO_Last_Group_Lock) )
268 || ( keysym == XK_Mode_switch)
269 || ( keysym == XK_Num_Lock)
270 );
271 }
272 }
273 else{
274 template IsModifierKey(keysym){
275 const bool IsModifierKey = (((keysym >= XK_Shift_L) && (keysym <= XK_Hyper_R))
276 || (keysym == XK_Mode_switch)
277 || (keysym == XK_Num_Lock)
278 );
279 }
280 }
281 /*
282 * opaque reference to Region data type
283 */
284 alias _XRegion* Region;
285
286 /* Return values from XRectInRegion() */
287 enum {
288 RectangleOut = 0,
289 RectangleIn = 1,
290 RectanglePart = 2
291 }
292
293
294 /*
295 * Information used by the visual utility routines to find desired visual
296 * type from the many visuals a display may support.
297 */
298
299 struct XVisualInfo{
300 Visual* visual;
301 VisualID visualid;
302 int screen;
303 int depth;
304 int c_class; /* C++ */;
305 c_ulong red_mask;
306 c_ulong green_mask;
307 c_ulong blue_mask;
308 int colormap_size;
309 int bits_per_rgb;
310 }
311
312 enum {
313 VisualNoMask = 0x0,
314 VisualIDMask = 0x1,
315 VisualScreenMask = 0x2,
316 VisualDepthMask = 0x4,
317 VisualClassMask = 0x8,
318 VisualRedMaskMask = 0x10,
319 VisualGreenMaskMask = 0x20,
320 VisualBlueMaskMask = 0x40,
321 VisualColormapSizeMask = 0x80,
322 VisualBitsPerRGBMask = 0x100,
323 VisualAllMask = 0x1FF
324 }
325
326 /*
327 * This defines a window manager property that clients may use to
328 * share standard color maps of type RGB_COLOR_MAP:
329 */
330 struct XStandardColormap{
331 Colormap colormap;
332 c_ulong red_max;
333 c_ulong red_mult;
334 c_ulong green_max;
335 c_ulong green_mult;
336 c_ulong blue_max;
337 c_ulong blue_mult;
338 c_ulong base_pixel;
339 VisualID visualid; /* added by ICCCM version 1 */
340 XID killid; /* added by ICCCM version 1 */
341 }
342
343 const XID ReleaseByFreeingColormap = 1L; /* for killid field above */
344
345
346 /*
347 * return codes for XReadBitmapFile and XWriteBitmapFile
348 */
349 enum {
350 BitmapSuccess = 0,
351 BitmapOpenFailed = 1,
352 BitmapFileInvalid = 2,
353 BitmapNoMemory = 3
354 }
355
356 /*****************************************************************
357 *
358 * Context Management
359 *
360 ****************************************************************/
361
362
363 /* Associative lookup table return codes */
364 enum {
365 XCSUCCESS = 0, /* No error. */
366 XCNOMEM = 1, /* Out of memory */
367 XCNOENT = 2, /* No entry in table */
368 }
369
370 alias int XContext;
371
372 template XUniqueContext(){
373 const XContext XUniqueContext = XrmUniqueQuark();
374 }
375
376 XContext XStringToContext(char* statement){
377 return XrmStringToQuark(statement);
378 }
379
380 /* The following declarations are alphabetized. */
381
382 extern XClassHint* XAllocClassHint ( );
383
384 extern XIconSize* XAllocIconSize ( );
385
386 extern XSizeHints* XAllocSizeHints ( );
387
388 extern XStandardColormap* XAllocStandardColormap ( );
389
390 extern XWMHints* XAllocWMHints ( );
391
392 extern int XClipBox(
393 Region /* r */,
394 XRectangle* /* rect_return */
395 );
396
397 extern Region XCreateRegion( );
398
399 extern char* XDefaultString ( );
400
401 extern int XDeleteContext(
402 Display* /* display */,
403 XID /* rid */,
404 XContext /* context */
405 );
406
407 extern int XDestroyRegion(
408 Region /* r */
409 );
410
411 extern int XEmptyRegion(
412 Region /* r */
413 );
414
415 extern int XEqualRegion(
416 Region /* r1 */,
417 Region /* r2 */
418 );
419
420 extern int XFindContext(
421 Display* /* display */,
422 XID /* rid */,
423 XContext /* context */,
424 XPointer* /* data_return */
425 );
426
427 extern Status XGetClassHint(
428 Display* /* display */,
429 Window /* w */,
430 XClassHint* /* class_hints_return */
431 );
432
433 extern Status XGetIconSizes(
434 Display* /* display */,
435 Window /* w */,
436 XIconSize** /* size_list_return */,
437 int* /* count_return */
438 );
439
440 extern Status XGetNormalHints(
441 Display* /* display */,
442 Window /* w */,
443 XSizeHints* /* hints_return */
444 );
445
446 extern Status XGetRGBColormaps(
447 Display* /* display */,
448 Window /* w */,
449 XStandardColormap** /* stdcmap_return */,
450 int* /* count_return */,
451 Atom /* property */
452 );
453
454 extern Status XGetSizeHints(
455 Display* /* display */,
456 Window /* w */,
457 XSizeHints* /* hints_return */,
458 Atom /* property */
459 );
460
461 extern Status XGetStandardColormap(
462 Display* /* display */,
463 Window /* w */,
464 XStandardColormap* /* colormap_return */,
465 Atom /* property */
466 );
467
468 extern Status XGetTextProperty(
469 Display* /* display */,
470 Window /* window */,
471 XTextProperty* /* text_prop_return */,
472 Atom /* property */
473 );
474
475 extern XVisualInfo* XGetVisualInfo(
476 Display* /* display */,
477 long /* vinfo_mask */,
478 XVisualInfo* /* vinfo_template */,
479 int* /* nitems_return */
480 );
481
482 extern Status XGetWMClientMachine(
483 Display* /* display */,
484 Window /* w */,
485 XTextProperty* /* text_prop_return */
486 );
487
488 extern XWMHints *XGetWMHints(
489 Display* /* display */,
490 Window /* w */
491 );
492
493 extern Status XGetWMIconName(
494 Display* /* display */,
495 Window /* w */,
496 XTextProperty* /* text_prop_return */
497 );
498
499 extern Status XGetWMName(
500 Display* /* display */,
501 Window /* w */,
502 XTextProperty* /* text_prop_return */
503 );
504
505 extern Status XGetWMNormalHints(
506 Display* /* display */,
507 Window /* w */,
508 XSizeHints* /* hints_return */,
509 long* /* supplied_return */
510 );
511
512 extern Status XGetWMSizeHints(
513 Display* /* display */,
514 Window /* w */,
515 XSizeHints* /* hints_return */,
516 long* /* supplied_return */,
517 Atom /* property */
518 );
519
520 extern Status XGetZoomHints(
521 Display* /* display */,
522 Window /* w */,
523 XSizeHints* /* zhints_return */
524 );
525
526 extern int XIntersectRegion(
527 Region /* sra */,
528 Region /* srb */,
529 Region /* dr_return */
530 );
531
532 extern void XConvertCase(
533 KeySym /* sym */,
534 KeySym* /* lower */,
535 KeySym* /* upper */
536 );
537
538 extern int XLookupString(
539 XKeyEvent* /* event_struct */,
540 char* /* buffer_return */,
541 int /* bytes_buffer */,
542 KeySym* /* keysym_return */,
543 XComposeStatus* /* status_in_out */
544 );
545
546 extern Status XMatchVisualInfo(
547 Display* /* display */,
548 int /* screen */,
549 int /* depth */,
550 int /* class */,
551 XVisualInfo* /* vinfo_return */
552 );
553
554 extern int XOffsetRegion(
555 Region /* r */,
556 int /* dx */,
557 int /* dy */
558 );
559
560 extern Bool XPointInRegion(
561 Region /* r */,
562 int /* x */,
563 int /* y */
564 );
565
566 extern Region XPolygonRegion(
567 XPoint* /* points */,
568 int /* n */,
569 int /* fill_rule */
570 );
571
572 extern int XRectInRegion(
573 Region /* r */,
574 int /* x */,
575 int /* y */,
576 uint /* width */,
577 uint /* height */
578 );
579
580 extern int XSaveContext(
581 Display* /* display */,
582 XID /* rid */,
583 XContext /* context */,
584 char* /* data */
585 );
586
587 extern int XSetClassHint(
588 Display* /* display */,
589 Window /* w */,
590 XClassHint* /* class_hints */
591 );
592
593 extern int XSetIconSizes(
594 Display* /* display */,
595 Window /* w */,
596 XIconSize* /* size_list */,
597 int /* count */
598 );
599
600 extern int XSetNormalHints(
601 Display* /* display */,
602 Window /* w */,
603 XSizeHints* /* hints */
604 );
605
606 extern void XSetRGBColormaps(
607 Display* /* display */,
608 Window /* w */,
609 XStandardColormap* /* stdcmaps */,
610 int /* count */,
611 Atom /* property */
612 );
613
614 extern int XSetSizeHints(
615 Display* /* display */,
616 Window /* w */,
617 XSizeHints* /* hints */,
618 Atom /* property */
619 );
620
621 extern int XSetStandardProperties(
622 Display* /* display */,
623 Window /* w */,
624 char* /* window_name */,
625 char* /* icon_name */,
626 Pixmap /* icon_pixmap */,
627 char** /* argv */,
628 int /* argc */,
629 XSizeHints* /* hints */
630 );
631
632 extern void XSetTextProperty(
633 Display* /* display */,
634 Window /* w */,
635 XTextProperty* /* text_prop */,
636 Atom /* property */
637 );
638
639 extern void XSetWMClientMachine(
640 Display* /* display */,
641 Window /* w */,
642 XTextProperty* /* text_prop */
643 );
644
645 extern int XSetWMHints(
646 Display* /* display */,
647 Window /* w */,
648 XWMHints* /* wm_hints */
649 );
650
651 extern void XSetWMIconName(
652 Display* /* display */,
653 Window /* w */,
654 XTextProperty* /* text_prop */
655 );
656
657 extern void XSetWMName(
658 Display* /* display */,
659 Window /* w */,
660 XTextProperty* /* text_prop */
661 );
662
663 extern void XSetWMNormalHints(
664 Display* /* display */,
665 Window /* w */,
666 XSizeHints* /* hints */
667 );
668
669 extern void XSetWMProperties(
670 Display* /* display */,
671 Window /* w */,
672 XTextProperty* /* window_name */,
673 XTextProperty* /* icon_name */,
674 char** /* argv */,
675 int /* argc */,
676 XSizeHints* /* normal_hints */,
677 XWMHints* /* wm_hints */,
678 XClassHint* /* class_hints */
679 );
680
681 extern void XmbSetWMProperties(
682 Display* /* display */,
683 Window /* w */,
684 char* /* window_name */,
685 char* /* icon_name */,
686 char** /* argv */,
687 int /* argc */,
688 XSizeHints* /* normal_hints */,
689 XWMHints* /* wm_hints */,
690 XClassHint* /* class_hints */
691 );
692
693 extern void Xutf8SetWMProperties(
694 Display* /* display */,
695 Window /* w */,
696 char* /* window_name */,
697 char* /* icon_name */,
698 char** /* argv */,
699 int /* argc */,
700 XSizeHints* /* normal_hints */,
701 XWMHints* /* wm_hints */,
702 XClassHint* /* class_hints */
703 );
704
705 extern void XSetWMSizeHints(
706 Display* /* display */,
707 Window /* w */,
708 XSizeHints* /* hints */,
709 Atom /* property */
710 );
711
712 extern int XSetRegion(
713 Display* /* display */,
714 GC /* gc */,
715 Region /* r */
716 );
717
718 extern void XSetStandardColormap(
719 Display* /* display */,
720 Window /* w */,
721 XStandardColormap* /* colormap */,
722 Atom /* property */
723 );
724
725 extern int XSetZoomHints(
726 Display* /* display */,
727 Window /* w */,
728 XSizeHints* /* zhints */
729 );
730
731 extern int XShrinkRegion(
732 Region /* r */,
733 int /* dx */,
734 int /* dy */
735 );
736
737 extern Status XStringListToTextProperty(
738 char** /* list */,
739 int /* count */,
740 XTextProperty* /* text_prop_return */
741 );
742
743 extern int XSubtractRegion(
744 Region /* sra */,
745 Region /* srb */,
746 Region /* dr_return */
747 );
748
749 extern int XmbTextListToTextProperty(
750 Display* display,
751 char** list,
752 int count,
753 XICCEncodingStyle style,
754 XTextProperty* text_prop_return
755 );
756
757 extern int XwcTextListToTextProperty(
758 Display* display,
759 wchar** list,
760 int count,
761 XICCEncodingStyle style,
762 XTextProperty* text_prop_return
763 );
764
765 extern int Xutf8TextListToTextProperty(
766 Display* display,
767 char** list,
768 int count,
769 XICCEncodingStyle style,
770 XTextProperty* text_prop_return
771 );
772
773 extern void XwcFreeStringList(
774 wchar** list
775 );
776
777 extern Status XTextPropertyToStringList(
778 XTextProperty* /* text_prop */,
779 char*** /* list_return */,
780 int* /* count_return */
781 );
782
783 extern int XmbTextPropertyToTextList(
784 Display* display,
785 const XTextProperty* text_prop,
786 char*** list_return,
787 int* count_return
788 );
789
790 extern int XwcTextPropertyToTextList(
791 Display* display,
792 const XTextProperty* text_prop,
793 wchar*** list_return,
794 int* count_return
795 );
796
797 extern int Xutf8TextPropertyToTextList(
798 Display* display,
799 const XTextProperty* text_prop,
800 char*** list_return,
801 int* count_return
802 );
803
804 extern int XUnionRectWithRegion(
805 XRectangle* /* rectangle */,
806 Region /* src_region */,
807 Region /* dest_region_return */
808 );
809
810 extern int XUnionRegion(
811 Region /* sra */,
812 Region /* srb */,
813 Region /* dr_return */
814 );
815
816 extern int XWMGeometry(
817 Display* /* display */,
818 int /* screen_number */,
819 char* /* user_geometry */,
820 char* /* default_geometry */,
821 uint /* border_width */,
822 XSizeHints* /* hints */,
823 int* /* x_return */,
824 int* /* y_return */,
825 int* /* width_return */,
826 int* /* height_return */,
827 int* /* gravity_return */
828 );
829
830 extern int XXorRegion(
831 Region /* sra */,
832 Region /* srb */,
833 Region /* dr_return */
834 );