root/trunk/X11/X.d

Revision 331, 16.3 kB (checked in by tonn, 3 years ago)

Corrert X11 api in compliance with new version of Xlib.h and X.h

Line 
1 /*  Xlib binding for D language
2     Copyright 2007 TEISSIER Sylvere sligor(at)free.fr
3     version 0.1 2007/08/29
4     This binding is an alpha release and need to be more tested
5     
6     This file is free software, please read licence.txt for more informations
7 */
8
9 module std.c.linux.X11.X;
10
11 const uint X_PROTOCOL=11;       /* current protocol version */
12 const uint X_PROTOCOL_REVISION=0;       /* current minor version */
13
14 /* Resources */
15 alias ulong XID;
16 alias ulong Mask;
17 alias ulong VisualID;
18 alias ulong Time;
19 alias XID Atom; //alias needed because of None invariant shared for Atom and XID
20 alias XID Window;
21 alias XID Drawable;
22 alias XID Font;
23 alias XID Pixmap;
24 alias XID Cursor;
25 alias XID Colormap;
26 alias XID GContext;
27 alias XID KeySym;
28 alias uint KeyCode;
29
30 /*****************************************************************
31  * RESERVED RESOURCE AND CONSTANT DEFINITIONS
32  *****************************************************************/
33 const XID None=0;/* universal null resource or null atom */
34 const uint ParentRelative=1;    /* border pixmap in CreateWindow and ChangeWindowAttributes special VisualID and special window class passed to CreateWindow */
35 const uint CopyFromParent=0;    /* background pixmap in CreateWindow and ChangeWindowAttributes */
36 const Window PointerWindow=0;   /* destination window in SendEvent */
37 const Window InputFocus=1;      /* destination window in SendEvent */
38 const Window PointerRoot=1;     /* focus window in SetInputFocus */
39 const Atom AnyPropertyType=0;   /* special Atom, passed to GetProperty */
40 const KeyCode AnyKey=0;         /* special Key Code, passed to GrabKey */
41 const uint AnyButton=0;         /* special Button Code, passed to GrabButton */
42 const XID AllTemporary=0;       /* special Resource ID passed to KillClient */
43 const Time CurrentTime=0;       /* special Time */
44 const KeySym NoSymbol=0;        /* special KeySym */
45
46 /*****************************************************************
47  * EVENT DEFINITIONS
48  *****************************************************************/
49  
50  /* Input Event Masks. Used as event-mask window attribute and as arguments
51    to Grab requests.  Not to be confused with event names.  */
52  
53 enum EventMask:long
54 { 
55     NoEventMask             =0,
56     KeyPressMask            =1<<0,
57     KeyReleaseMask          =1<<1,
58     ButtonPressMask         =1<<2,
59     ButtonReleaseMask       =1<<3,
60     EnterWindowMask         =1<<4,
61     LeaveWindowMask         =1<<5,
62     PointerMotionMask       =1<<6,
63     PointerMotionHintMask   =1<<7,
64     Button1MotionMask       =1<<8,
65     Button2MotionMask       =1<<9,
66     Button3MotionMask       =1<<10,
67     Button4MotionMask       =1<<11,
68     Button5MotionMask       =1<<12,
69     ButtonMotionMask        =1<<13,
70     KeymapStateMask     =1<<14,
71     ExposureMask            =1<<15,
72     VisibilityChangeMask    =1<<16,
73     StructureNotifyMask     =1<<17,
74     ResizeRedirectMask      =1<<18,
75     SubstructureNotifyMask  =1<<19,
76     SubstructureRedirectMask=1<<20,
77     FocusChangeMask         =1<<21,
78     PropertyChangeMask      =1<<22,
79     ColormapChangeMask      =1<<23,
80     OwnerGrabButtonMask     =1<<24
81 };
82
83 /* Event names.  Used in "type" field in XEvent structures.  Not to be
84 confused with event masks above.  They start from 2 because 0 and 1
85 are reserved in the protocol for errors and replies. */
86
87 enum EventType:int
88 {
89     KeyPress            =2,
90     KeyRelease          =3,
91     ButtonPress         =4,
92     ButtonRelease       =5,
93     MotionNotify        =6,
94     EnterNotify         =7,
95     LeaveNotify         =8,
96     FocusIn             =9,
97     FocusOut            =10,
98     KeymapNotify        =11,
99     Expose              =12,
100     GraphicsExpose      =13,
101     NoExpose            =14,
102     VisibilityNotify    =15,
103     CreateNotify        =16,
104     DestroyNotify       =17,
105     UnmapNotify     =18,
106     MapNotify           =19,
107     MapRequest          =20,
108     ReparentNotify      =21,
109     ConfigureNotify     =22,
110     ConfigureRequest    =23,
111     GravityNotify       =24,
112     ResizeRequest       =25,
113     CirculateNotify     =26,
114     CirculateRequest    =27,
115     PropertyNotify      =28,
116     SelectionClear      =29,
117     SelectionRequest    =30,
118     SelectionNotify     =31,
119     ColormapNotify      =32,
120     ClientMessage       =33,
121     MappingNotify       =34,
122     LASTEvent           =35 /* must be bigger than any event # */
123 };
124
125 /* Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
126    state in various key-, mouse-, and button-related events. */
127 enum KeyMask:uint
128 {
129     ShiftMask   =1<<0,
130     LockMask    =1<<1,
131     ControlMask =1<<2,
132     Mod1Mask    =1<<3,
133     Mod2Mask    =1<<4,
134     Mod3Mask    =1<<5,
135     Mod4Mask    =1<<6,
136     Mod5Mask    =1<<7,
137     AnyModifier =1<<15/* used in GrabButton, GrabKey */
138 };
139
140 /* modifier names.  Used to build a SetModifierMapping request or
141    to read a GetModifierMapping request.  These correspond to the
142    masks defined above. */
143 enum ModifierName:int
144 {
145     ShiftMapIndex   =0,
146     LockMapIndex    =1,
147     ControlMapIndex =2,
148     Mod1MapIndex    =3,
149     Mod2MapIndex    =4,
150     Mod3MapIndex    =5,
151     Mod4MapIndex    =6,
152     Mod5MapIndex    =7
153 };
154
155 enum ButtonMask:int
156 {
157     Button1Mask =1<<8,
158     Button2Mask =1<<9,
159     Button3Mask =1<<10,
160     Button4Mask =1<<11,
161     Button5Mask =1<<12,
162     AnyModifier =1<<15/* used in GrabButton, GrabKey */
163 };
164
165 enum KeyOrButtonMask:uint
166 {
167     ShiftMask   =1<<0,
168     LockMask    =1<<1,
169     ControlMask =1<<2,
170     Mod1Mask    =1<<3,
171     Mod2Mask    =1<<4,
172     Mod3Mask    =1<<5,
173     Mod4Mask    =1<<6,
174     Mod5Mask    =1<<7,
175     Button1Mask =1<<8,
176     Button2Mask =1<<9,
177     Button3Mask =1<<10,
178     Button4Mask =1<<11,
179     Button5Mask =1<<12,
180     AnyModifier =1<<15/* used in GrabButton, GrabKey */
181 };
182
183
184 /* button names. Used as arguments to GrabButton and as detail in ButtonPress
185    and ButtonRelease events.  Not to be confused with button masks above.
186    Note that 0 is already defined above as "AnyButton".  */
187
188 enum ButtonName:int
189 {
190     Button1 =1,
191     Button2 =2,
192     Button3 =3,
193     Button4 =4,
194     Button5 =5
195 };
196
197 /* Notify modes */
198 enum NotifyModes:int
199 {
200     NotifyNormal        =0,
201     NotifyGrab          =1,
202     NotifyUngrab        =2,
203     NotifyWhileGrabbed  =3
204 };
205 const int NotifyHint    =1; /* for MotionNotify events */
206                
207 /* Notify detail */
208 enum NotifyDetail:int
209 {
210     NotifyAncestor          =0,
211     NotifyVirtual           =1,
212     NotifyInferior          =2,
213     NotifyNonlinear         =3,
214     NotifyNonlinearVirtual  =4,
215     NotifyPointer           =5,
216     NotifyPointerRoot       =6,
217     NotifyDetailNone        =7
218 };
219
220 /* Visibility notify */
221
222 enum VisibilityNotify:int
223 {
224 VisibilityUnobscured        =0,
225 VisibilityPartiallyObscured =1,
226 VisibilityFullyObscured     =2
227 };
228
229 /* Circulation request */
230 enum CirculationRequest:int
231 {
232     PlaceOnTop      =0,
233     PlaceOnBottom   =1
234 };
235 /* protocol families */
236 enum ProtocolFamlily:int
237 {
238     FamilyInternet  =0, /* IPv4 */
239     FamilyDECnet    =1,
240     FamilyChaos =2,
241     FamilyServerInterpreted =5, /* authentication families not tied to a specific protocol */
242     FamilyInternet6 =6  /* IPv6 */
243 };
244
245 /* Property notification */
246
247 enum PropertyNotification:int
248 {
249     PropertyNewValue    =0,
250     PropertyDelete      =1
251 };
252
253 /* Color Map notification */
254 enum ColorMapNotification:int
255 {
256     ColormapUninstalled =0,
257     ColormapInstalled       =1
258 };
259
260 /* GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes */
261 enum GrabMode:int
262 {
263     GrabModeSync    =0,
264     GrabModeAsync   =1
265 };
266
267 /* GrabPointer, GrabKeyboard reply status */
268 enum GrabReplyStatus:int
269 {
270 GrabSuccess         =0,
271 AlreadyGrabbed      =1,
272 GrabInvalidTime =2,
273 GrabNotViewable     =3,
274 GrabFrozen          =4
275 };
276
277 /* AllowEvents modes */
278
279 enum AllowEventMode:int
280 {
281 AsyncPointer    =0,
282 SyncPointer     =1,
283 ReplayPointer   =2,
284 AsyncKeyboard   =3,
285 SyncKeyboard    =4,
286 ReplayKeyboard  =5,
287 AsyncBoth       =6,
288 SyncBoth        =7
289 };
290
291 /* Used in SetInputFocus, GetInputFocus */
292 enum InputFocusRevertTo:int
293 {
294 RevertToNone        =None,
295 RevertToPointerRoot =PointerRoot,
296 RevertToParent      =2
297 };
298
299 /*****************************************************************
300  * ERROR CODES
301  *****************************************************************/
302
303 enum XErrorCode:int
304 {
305     Success         =0,     /* everything's okay */
306     BadRequest      =1,     /* bad request code */
307     BadValue        =2,     /* int parameter out of range */
308     BadWindow       =3,     /* parameter not a Window */
309     BadPixmap       =4,     /* parameter not a Pixmap */
310     BadAtom     =5,     /* parameter not an Atom */
311     BadCursor       =6,     /* parameter not a Cursor */
312     BadFont         =7,     /* parameter not a Font */
313     BadMatch        =8,     /* parameter mismatch */
314     BadDrawable     =9,     /* parameter not a Pixmap or Window */
315     BadAccess       =10,    /* depending on context:
316                             - key/button already grabbed
317                             - attempt to free an illegal
318                                 cmap entry
319                             - attempt to store into a read-only
320                                 color map entry.
321                             - attempt to modify the access control
322                                 list from other than the local host.
323                             */
324     BadAlloc        =11,    /* insufficient resources */
325     BadColor        =12,    /* no such colormap */
326     BadGC           =13,    /* parameter not a GC */
327     BadIDChoice     =14,    /* choice not in range or already used */
328     BadName     =15,    /* font or color name doesn't exist */
329     BadLength       =16,    /* Request length incorrect */
330     BadImplementation =17,  /* server is defective */
331
332     FirstExtensionError =128,
333     LastExtensionError  =255
334 };
335
336 /*****************************************************************
337  * WINDOW DEFINITIONS
338  *****************************************************************/
339
340 /* Window classes used by CreateWindow */
341 /* Note that CopyFromParent is already defined as 0 above */
342 enum WindowClass:int
343 {
344     CopyFromParent  =0,
345     InputOutput     =1,
346     InputOnly       =2
347 };
348
349 /* Window attributes for CreateWindow and ChangeWindowAttributes */
350
351 enum WindowAttribute:ulong
352 {
353     CWBackPixmap        =1<<0,
354     CWBackPixel         =1<<1,
355     CWBorderPixmap      =1<<2,
356     CWBorderPixel       =1<<3,
357     CWBitGravity        =1<<4,
358     CWWinGravity        =1<<5,
359     CWBackingStore      =1<<6,
360     CWBackingPlanes     =1<<7,
361     CWBackingPixel      =1<<8,
362     CWOverrideRedirect  =1<<9,
363     CWSaveUnder         =1<<10,
364     CWEventMask         =1<<11,
365     CWDontPropagate     =1<<12,
366     CWColormap          =1<<13,
367     CWCursor            =1<<14
368 };
369 /* ConfigureWindow structure */
370 enum ConfigureWindowStruct:int
371 {
372     CWX             =1<<0,
373     CWY             =1<<1,
374     CWWidth         =1<<2,
375     CWHeight        =1<<3,
376     CWBorderWidth   =1<<4,
377     CWSibling       =1<<5,
378     CWStackMode     =1<<6
379 };
380
381 /* Bit Gravity */
382 enum BitGravity:int
383 {
384     ForgetGravity       =0,
385     NorthWestGravity    =1,
386     NorthGravity        =2,
387     NorthEastGravity    =3,
388     WestGravity         =4,
389     CenterGravity       =5,
390     EastGravity         =6,
391     SouthWestGravity    =7,
392     SouthGravity        =8,
393     SouthEastGravity    =9,
394     StaticGravity       =10
395 };
396
397 /* Window gravity + bit gravity above */
398
399 const uint UnmapGravity=0;
400
401 /* Used in CreateWindow for backing-store hint */
402 enum BackingStoreHint:int
403 {
404     NotUseful   =0,
405     WhenMapped  =1,
406     Always      =2
407 };
408 /* Used in GetWindowAttributes reply */
409 enum MapState:int
410 {
411     IsUnmapped      =0,
412     IsUnviewable    =1,
413     IsViewable      =2
414 };
415 /* Used in ChangeSaveSet */
416 enum ChangeMode:int
417 {
418     SetModeInsert   =0,
419     SetModeDelete   =1
420 };
421 /* Used in ChangeCloseDownMode */
422 enum CloseDownMode:int
423 {
424     DestroyAll          =0,
425     RetainPermanent =1,
426     RetainTemporary =2
427 };
428
429 /* Window stacking method (in configureWindow) */
430 enum WindowStackingMethod:int
431 {
432     Above       =0,
433     Below       =1,
434     TopIf       =2,
435     BottomIf    =3,
436     Opposite    =4
437 };
438
439 /* Circulation direction */
440 enum CircularDirection:int
441 {
442 RaiseLowest     =0,
443 LowerHighest    =1
444 };
445
446 /* Property modes */
447 enum PropertyMode:int
448 {
449 PropModeReplace =0,
450 PropModePrepend =1,
451 PropModeAppend  =2
452 };
453
454 /*****************************************************************
455  * GRAPHICS DEFINITIONS
456  *****************************************************************/
457
458 /* graphics functions, as in GC.alu */
459 enum GraphicFunction:int
460 {
461     GXclear         =0x0,       /* 0 */
462     GXand           =0x1,       /* src AND dst */
463     GXandReverse    =0x2,       /* src AND NOT dst */
464     GXcopy          =0x3,       /* src */
465     GXandInverted   =0x4,       /* NOT src AND dst */
466     GXnoop          =0x5,       /* dst */
467     GXxor           =0x6,       /* src XOR dst */
468     GXor            =0x7,       /* src OR dst */
469     GXnor           =0x8,       /* NOT src AND NOT dst */
470     GXequiv         =0x9,       /* NOT src XOR dst */
471     GXinvert        =0xa,       /* NOT dst */
472     GXorReverse     =0xb,       /* src OR NOT dst */
473     GXcopyInverted  =0xc,       /* NOT src */
474     GXorInverted    =0xd,       /* NOT src OR dst */
475     GXnand          =0xe,       /* NOT src OR NOT dst */
476     GXset           =0xf        /* 1 */
477 };
478
479 /* LineStyle */
480 enum LineStyle:int
481 {
482     LineSolid       =0,
483     LineOnOffDash   =1,
484     LineDoubleDash  =2
485 };
486 /* capStyle */
487 enum CapStyle:int
488 {
489     CapNotLast      =0,
490     CapButt         =1,
491     CapRound        =2,
492     CapProjecting   =3
493 };
494 /* joinStyle */
495 enum JoinStyle:int
496 {
497     JoinMiter       =0,
498     JoinRound       =1,
499     JoinBevel       =2
500 };
501 /* fillStyle */
502 enum FillStyle:int
503 {
504     FillSolid       =0,
505     FillTiled       =1,
506     FillStippled    =2,
507     FillOpaqueStippled  =3
508 };
509 /* fillRule */
510 enum FillRule:int
511 {
512     EvenOddRule     =0,
513     WindingRule     =1
514 };
515 /* subwindow mode */
516 enum SubwindowMode:int
517 {
518     ClipByChildren      =0,
519     IncludeInferiors    =1
520 };
521 /* SetClipRectangles ordering */
522 enum ClipRectanglesOrdering:int
523 {
524     Unsorted        =0,
525     YSorted         =1,
526     YXSorted        =2,
527     YXBanded        =3
528 };
529 /* CoordinateMode for drawing routines */
530 enum CoordinateMode:int
531 {
532     CoordModeOrigin     =0, /* relative to the origin */
533     CoordModePrevious   =1  /* relative to previous point */
534 };
535 /* Polygon shapes */
536 enum PolygonShape:int
537 {
538     Complex     =0, /* paths may intersect */
539     Nonconvex       =1, /* no paths intersect, but not convex */
540     Convex          =2  /* wholly convex */
541 };
542
543 /* Arc modes for PolyFillArc */
544 enum ArcMode:int
545 {
546     ArcChord        =0, /* join endpoints of arc */
547     ArcPieSlice     =1  /* join endpoints to center of arc */
548 };
549 /* GC components: masks used in CreateGC, CopyGC, ChangeGC, OR'ed into
550    GC.stateChanges */
551 enum GCMask:ulong
552 {
553     GCFunction          =1<<0,
554     GCPlaneMask         =1<<1,
555     GCForeground        =1<<2,
556     GCBackground        =1<<3,
557     GCLineWidth         =1<<4,
558     GCLineStyle         =1<<5,
559     GCCapStyle          =1<<6,
560     GCJoinStyle         =1<<7,
561     GCFillStyle         =1<<8,
562     GCFillRule          =1<<9,
563     GCTile              =1<<10,
564     GCStipple           =1<<11,
565     GCTileStipXOrigin   =1<<12,
566     GCTileStipYOrigin   =1<<13,
567     GCFont              =1<<14,
568     GCSubwindowMode     =1<<15,
569     GCGraphicsExposures =1<<16,
570     GCClipXOrigin       =1<<17,
571     GCClipYOrigin       =1<<18,
572     GCClipMask          =1<<19,
573     GCDashOffset        =1<<20,
574     GCDashList          =1<<21,
575     GCArcMode           =1<<22,
576 };
577 const uint GCLastBit=22;
578 /*****************************************************************
579  * FONTS
580  *****************************************************************/
581
582 /* used in QueryFont -- draw direction */
583 enum FontDrawDirection:int
584 {
585     FontLeftToRight     =0,
586     FontRightToLeft     =1,
587     FontChange          =255
588 }
589 /*****************************************************************
590  *  IMAGING
591  *****************************************************************/
592
593 /* ImageFormat -- PutImage, GetImage */
594 enum ImageFormat:int
595 {
596     XYBitmap    =0, /* depth 1, XYFormat */
597     XYPixmap    =1, /* depth == drawable depth */
598     ZPixmap =2  /* depth == drawable depth */
599 };
600
601 /*****************************************************************
602  *  COLOR MAP STUFF
603  *****************************************************************/
604
605 /* For CreateColormap */
606 enum AllocType:int
607 {
608     AllocNone   =0, /* create map with no entries */
609     AllocAll    =1  /* allocate entire map writeable */
610 };
611
612 /* Flags used in StoreNamedColor, StoreColors */
613 enum StoreColor:int
614 {
615     DoRed   =1<<0,
616     DoGreen =1<<1,
617     DoBlue  =1<<2
618 };
619
620 /*****************************************************************
621  * CURSOR STUFF
622  *****************************************************************/
623
624 /* QueryBestSize Class */
625 enum QueryBestSizeClass:int
626 {
627     CursorShape     =0, /* largest size that can be displayed */
628     TileShape       =1, /* size tiled fastest */
629     StippleShape    =2  /* size stippled fastest */
630 };
631
632 /*****************************************************************
633  * KEYBOARD/POINTER STUFF
634  *****************************************************************/
635
636 enum AutoRepeatMode:int
637 {
638     AutoRepeatModeOff       =0,
639     AutoRepeatModeOn        =1,
640     AutoRepeatModeDefault   =2
641 };
642
643 enum LedMode:int
644 {
645     LedModeOff      =0,
646     LedModeOn       =1
647 };
648 /* masks for ChangeKeyboardControl */
649
650 enum KBMask:ulong
651 {
652     KBKeyClickPercent   =1<<0,
653     KBBellPercent       =1<<1,
654     KBBellPitch         =1<<2,
655     KBBellDuration      =1<<3,
656     KBLed               =1<<4,
657     KBLedMode           =1<<5,
658     KBKey               =1<<6,
659     KBAutoRepeatMode    =1<<7
660 };
661
662 enum MappingErrorCode:int
663 {
664     MappingSuccess      =0,
665     MappingBusy         =1,
666     MappingFailed       =2
667 };
668
669 enum MappingType:int
670 {
671     MappingModifier     =0,
672     MappingKeyboard     =1,
673     MappingPointer      =2
674 };
675
676 /*****************************************************************
677  * SCREEN SAVER STUFF
678  *****************************************************************/
679
680 enum ScreenSaverBlancking:int
681 {
682     DontPreferBlanking  =0,
683     PreferBlanking      =1,
684     DefaultBlanking     =2
685 };
686
687 enum ScreenSaverDisable:int
688 {
689     DisableScreenSaver      =0,
690     DisableScreenInterval   =0
691 };
692
693 enum ScreenSaverExposure:int
694 {
695     DontAllowExposures  =0,
696     AllowExposures      =1,
697     DefaultExposures    =2
698 };
699
700 /* for ForceScreenSaver */
701
702 enum ScreenSaverMode:int
703 {
704     ScreenSaverReset    =0,
705     ScreenSaverActive   =1
706 };
707
708 /*****************************************************************
709  * HOSTS AND CONNECTIONS
710  *****************************************************************/
711
712 /* for ChangeHosts */
713
714 enum HostChange:int
715 {
716     HostInsert      =0,
717     HostDelete      =1
718 };
719
720 /* for ChangeAccessControl */
721
722 enum HostAccess:int
723 {
724     EnableAccess    =1,     
725     DisableAccess   =0
726 };
727
728 /* Display classes  used in opening the connection
729  * Note that the statically allocated ones are even numbered and the
730  * dynamically changeable ones are odd numbered */
731
732 enum DisplayClass:int
733 {
734     StaticGray      =0,
735     GrayScale       =1,
736     StaticColor     =2,
737     PseudoColor     =3,
738     TrueColor       =4,
739     DirectColor     =5
740 };
741
742 /* Byte order  used in imageByteOrder and bitmapBitOrder */
743
744 enum ByteOrder:int
745 {
746     LSBFirst        =0,
747     MSBFirst        =1
748 };
Note: See TracBrowser for help on using the browser.