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