! Copyright (C) 2005, 2006 Eduardo Cavazos and Alex Chapman, 2016 Björn Lindqvist ! http://factorcode.org/license.txt for BSD license. ! Selected parts of /usr/include/X11/X.h USING: alien.c-types alien.syntax math ; IN: x11.X ! Resources TYPEDEF: ulong XID TYPEDEF: ulong Mask TYPEDEF: ulong Atom TYPEDEF: XID Window TYPEDEF: XID Drawable TYPEDEF: XID Font TYPEDEF: XID Pixmap TYPEDEF: XID Cursor TYPEDEF: XID Colormap TYPEDEF: XID GContext TYPEDEF: XID KeySym TYPEDEF: uchar KeyCode ! Reserved resource and constant definitions CONSTANT: ParentRelative 1 CONSTANT: CopyFromParent 0 CONSTANT: PointerWindow 0 CONSTANT: InputFocus 1 CONSTANT: PointerRoot 1 CONSTANT: AnyPropertyType 0 CONSTANT: AnyKey 0 CONSTANT: AnyButton 0 CONSTANT: AllTemporary 0 CONSTANT: CurrentTime 0 CONSTANT: NoSymbol 0 CONSTANT: None 0 ! Input Event Masks. Used as event-mask window attribute and as ! arguments to Grab requests. Not to be confused with event names. : NoEventMask ( -- n ) 0 ; inline : KeyPressMask ( -- n ) 0 2^ ; inline : KeyReleaseMask ( -- n ) 1 2^ ; inline : ButtonPressMask ( -- n ) 2 2^ ; inline : ButtonReleaseMask ( -- n ) 3 2^ ; inline : EnterWindowMask ( -- n ) 4 2^ ; inline : LeaveWindowMask ( -- n ) 5 2^ ; inline : PointerMotionMask ( -- n ) 6 2^ ; inline : PointerMotionHintMask ( -- n ) 7 2^ ; inline : Button1MotionMask ( -- n ) 8 2^ ; inline : Button2MotionMask ( -- n ) 9 2^ ; inline : Button3MotionMask ( -- n ) 10 2^ ; inline : Button4MotionMask ( -- n ) 11 2^ ; inline : Button5MotionMask ( -- n ) 12 2^ ; inline : ButtonMotionMask ( -- n ) 13 2^ ; inline : KeymapStateMask ( -- n ) 14 2^ ; inline : ExposureMask ( -- n ) 15 2^ ; inline : VisibilityChangeMask ( -- n ) 16 2^ ; inline : StructureNotifyMask ( -- n ) 17 2^ ; inline : ResizeRedirectMask ( -- n ) 18 2^ ; inline : SubstructureNotifyMask ( -- n ) 19 2^ ; inline : SubstructureRedirectMask ( -- n ) 20 2^ ; inline : FocusChangeMask ( -- n ) 21 2^ ; inline : PropertyChangeMask ( -- n ) 22 2^ ; inline : ColormapChangeMask ( -- n ) 23 2^ ; inline : OwnerGrabButtonMask ( -- n ) 24 2^ ; inline ! Event names. Used in "type" field in XEvent structures. Not to be ! confused with event masks above. They start from 2 because 0 and 1 ! are reserved in the protocol for errors and replies. CONSTANT: KeyPress 2 CONSTANT: KeyRelease 3 CONSTANT: ButtonPress 4 CONSTANT: ButtonRelease 5 CONSTANT: MotionNotify 6 CONSTANT: EnterNotify 7 CONSTANT: LeaveNotify 8 CONSTANT: FocusIn 9 CONSTANT: FocusOut 10 CONSTANT: KeymapNotify 11 CONSTANT: Expose 12 CONSTANT: GraphicsExpose 13 CONSTANT: NoExpose 14 CONSTANT: VisibilityNotify 15 CONSTANT: CreateNotify 16 CONSTANT: DestroyNotify 17 CONSTANT: UnmapNotify 18 CONSTANT: MapNotify 19 CONSTANT: MapRequest 20 CONSTANT: ReparentNotify 21 CONSTANT: ConfigureNotify 22 CONSTANT: ConfigureRequest 23 CONSTANT: GravityNotify 24 CONSTANT: ResizeRequest 25 CONSTANT: CirculateNotify 26 CONSTANT: CirculateRequest 27 CONSTANT: PropertyNotify 28 CONSTANT: SelectionClear 29 CONSTANT: SelectionRequest 30 CONSTANT: SelectionNotify 31 CONSTANT: ColormapNotify 32 CONSTANT: ClientMessage 33 CONSTANT: MappingNotify 34 CONSTANT: GenericEvent 35 CONSTANT: LASTEvent 36 ! Key masks. Used as modifiers to GrabButton and GrabKey, results of ! QueryPointer, state in various key-, mouse-, and button-related ! events. : ShiftMask ( -- n ) 1 0 shift ; inline : LockMask ( -- n ) 1 1 shift ; inline : ControlMask ( -- n ) 1 2 shift ; inline : Mod1Mask ( -- n ) 1 3 shift ; inline : Mod2Mask ( -- n ) 1 4 shift ; inline : Mod3Mask ( -- n ) 1 5 shift ; inline : Mod4Mask ( -- n ) 1 6 shift ; inline : Mod5Mask ( -- n ) 1 7 shift ; inline ! modifier names. Used to build a SetModifierMapping request or ! to read a GetModifierMapping request. These correspond to the ! masks defined above. CONSTANT: ShiftMapIndex 0 CONSTANT: LockMapIndex 1 CONSTANT: ControlMapIndex 2 CONSTANT: Mod1MapIndex 3 CONSTANT: Mod2MapIndex 4 CONSTANT: Mod3MapIndex 5 CONSTANT: Mod4MapIndex 6 CONSTANT: Mod5MapIndex 7 ! button masks. Used in same manner as Key masks above. Not to be ! confused with button names below. : Button1Mask ( -- n ) 1 8 shift ; inline : Button2Mask ( -- n ) 1 9 shift ; inline : Button3Mask ( -- n ) 1 10 shift ; inline : Button4Mask ( -- n ) 1 11 shift ; inline : Button5Mask ( -- n ) 1 12 shift ; inline : AnyModifier ( -- n ) 15 2^ ; ! used in GrabButton, GrabKey ! button names. Used as arguments to GrabButton and as detail in ! ButtonPress and ButtonRelease events. Not to be confused with ! button masks above. Note that 0 is already defined above as ! "AnyButton". */ CONSTANT: Button1 1 CONSTANT: Button2 2 CONSTANT: Button3 3 CONSTANT: Button4 4 CONSTANT: Button5 5 ! Notify modes CONSTANT: NotifyNormal 0 CONSTANT: NotifyGrab 1 CONSTANT: NotifyUngrab 2 CONSTANT: NotifyWhileGrabbed 3 CONSTANT: NotifyHint 1 ! for MotionNotify events ! Notify detail CONSTANT: NotifyAncestor 0 CONSTANT: NotifyVirtual 1 CONSTANT: NotifyInferior 2 CONSTANT: NotifyNonlinear 3 CONSTANT: NotifyNonlinearVirtual 4 CONSTANT: NotifyPointer 5 CONSTANT: NotifyPointerRoot 6 CONSTANT: NotifyDetailNone 7 ! Visibility notify CONSTANT: VisibilityUnobscured 0 CONSTANT: VisibilityPartiallyObscured 1 CONSTANT: VisibilityFullyObscured 2 ! Circulation request CONSTANT: PlaceOnTop 0 CONSTANT: PlaceOnBottom 1 ! protocol families CONSTANT: FamilyInternet 0 ! IPv4 CONSTANT: FamilyDECnet 1 CONSTANT: FamilyChaos 2 CONSTANT: FamilyInternet6 6 ! IPv6 ! authentication families not tied to a specific protocol CONSTANT: FamilyServerInterpreted 5 ! Property notification CONSTANT: PropertyNewValue 0 CONSTANT: PropertyDelete 1 ! Color Map notification CONSTANT: ColormapUninstalled 0 CONSTANT: ColormapInstalled 1 ! GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes CONSTANT: GrabModeSync 0 CONSTANT: GrabModeAsync 1 ! GrabPointer, GrabKeyboard reply status CONSTANT: GrabSuccess 0 CONSTANT: AlreadyGrabbed 1 CONSTANT: GrabInvalidTime 2 CONSTANT: GrabNotViewable 3 CONSTANT: GrabFrozen 4 ! AllowEvents modes CONSTANT: AsyncPointer 0 CONSTANT: SyncPointer 1 CONSTANT: ReplayPointer 2 CONSTANT: AsyncKeyboard 3 CONSTANT: SyncKeyboard 4 CONSTANT: ReplayKeyboard 5 CONSTANT: AsyncBoth 6 CONSTANT: SyncBoth 7 ! Used in SetInputFocus, GetInputFocus : RevertToNone ( -- n ) None ; : RevertToPointerRoot ( -- n ) PointerRoot ; CONSTANT: RevertToParent 2 ! ***************************************************************** ! * ERROR CODES ! ***************************************************************** CONSTANT: Success 0 ! everything's okay CONSTANT: BadRequest 1 ! bad request code CONSTANT: BadValue 2 ! int parameter out of range CONSTANT: BadWindow 3 ! parameter not a Window CONSTANT: BadPixmap 4 ! parameter not a Pixmap CONSTANT: BadAtom 5 ! parameter not an Atom CONSTANT: BadCursor 6 ! parameter not a Cursor CONSTANT: BadFont 7 ! parameter not a Font CONSTANT: BadMatch 8 ! parameter mismatch CONSTANT: BadDrawable 9 ! parameter not a Pixmap or Window CONSTANT: BadAccess 10 ! depending on context: ! - key/button already grabbed ! - attempt to free an illegal ! cmap entry ! - attempt to store into a read-only ! color map entry. ! - attempt to modify the access control ! list from other than the local host. CONSTANT: BadAlloc 11 ! insufficient resources CONSTANT: BadColor 12 ! no such colormap CONSTANT: BadGC 13 ! parameter not a GC CONSTANT: BadIDChoice 14 ! choice not in range or already used CONSTANT: BadName 15 ! font or color name doesn't exist CONSTANT: BadLength 16 ! Request length incorrect CONSTANT: BadImplementation 17 ! server is defective CONSTANT: FirstExtensionError 128 CONSTANT: LastExtensionError 255 ! ***************************************************************** ! * WINDOW DEFINITIONS ! ***************************************************************** ! Window classes used by CreateWindow ! Note that CopyFromParent is already defined as 0 above CONSTANT: InputOutput 1 CONSTANT: InputOnly 2 ! ConfigureWindow structure : CWX ( -- n ) 0 2^ ; inline : CWY ( -- n ) 1 2^ ; inline : CWWidth ( -- n ) 2 2^ ; inline : CWHeight ( -- n ) 3 2^ ; inline : CWBorderWidth ( -- n ) 4 2^ ; inline : CWSibling ( -- n ) 5 2^ ; inline : CWStackMode ( -- n ) 6 2^ ; inline ! Bit Gravity CONSTANT: ForgetGravity 0 CONSTANT: NorthWestGravity 1 CONSTANT: NorthGravity 2 CONSTANT: NorthEastGravity 3 CONSTANT: WestGravity 4 CONSTANT: CenterGravity 5 CONSTANT: EastGravity 6 CONSTANT: SouthWestGravity 7 CONSTANT: SouthGravity 8 CONSTANT: SouthEastGravity 9 CONSTANT: StaticGravity 10 ! Window gravity + bit gravity above CONSTANT: UnmapGravity 0 ! Used in CreateWindow for backing-store hint CONSTANT: NotUseful 0 CONSTANT: WhenMapped 1 CONSTANT: Always 2 ! Used in GetWindowAttributes reply CONSTANT: IsUnmapped 0 CONSTANT: IsUnviewable 1 CONSTANT: IsViewable 2 ! Used in ChangeSaveSet CONSTANT: SetModeInsert 0 CONSTANT: SetModeDelete 1 ! Used in ChangeCloseDownMode CONSTANT: DestroyAll 0 CONSTANT: RetainPermanent 1 CONSTANT: RetainTemporary 2 ! Window stacking method (in configureWindow) CONSTANT: Above 0 CONSTANT: Below 1 CONSTANT: TopIf 2 CONSTANT: BottomIf 3 CONSTANT: Opposite 4 ! Circulation direction CONSTANT: RaiseLowest 0 CONSTANT: LowerHighest 1 ! Property modes CONSTANT: PropModeReplace 0 CONSTANT: PropModePrepend 1 CONSTANT: PropModeAppend 2 ! ***************************************************************** ! * GRAPHICS DEFINITIONS ! ***************************************************************** ! graphics functions, as in GC.alu CONSTANT: GXclear 0x0 CONSTANT: GXand 0x1 CONSTANT: GXandReverse 0x2 CONSTANT: GXcopy 0x3 CONSTANT: GXandInverted 0x4 CONSTANT: GXnoop 0x5 CONSTANT: GXxor 0x6 CONSTANT: GXor 0x7 CONSTANT: GXnor 0x8 CONSTANT: GXequiv 0x9 CONSTANT: GXinvert 0xa CONSTANT: GXorReverse 0xb CONSTANT: GXcopyInverted 0xc CONSTANT: GXorInverted 0xd CONSTANT: GXnand 0xe CONSTANT: GXset 0xf ! LineStyle CONSTANT: LineSolid 0 CONSTANT: LineOnOffDash 1 CONSTANT: LineDoubleDash 2 ! capStyle CONSTANT: CapNotLast 0 CONSTANT: CapButt 1 CONSTANT: CapRound 2 CONSTANT: CapProjecting 3 ! joinStyle CONSTANT: JoinMiter 0 CONSTANT: JoinRound 1 CONSTANT: JoinBevel 2 ! fillStyle CONSTANT: FillSolid 0 CONSTANT: FillTiled 1 CONSTANT: FillStippled 2 CONSTANT: FillOpaqueStippled 3 ! fillRule CONSTANT: EvenOddRule 0 CONSTANT: WindingRule 1 ! subwindow mode CONSTANT: ClipByChildren 0 CONSTANT: IncludeInferiors 1 ! SetClipRectangles ordering CONSTANT: Unsorted 0 CONSTANT: YSorted 1 CONSTANT: YXSorted 2 CONSTANT: YXBanded 3 ! CoordinateMode for drawing routines CONSTANT: CoordModeOrigin 0 ! relative to the origin CONSTANT: CoordModePrevious 1 ! relative to previous point ! Polygon shapes CONSTANT: Complex 0 ! paths may intersect CONSTANT: Nonconvex 1 ! no paths intersect, but not convex CONSTANT: Convex 2 ! wholly convex ! Arc modes for PolyFillArc CONSTANT: ArcChord 0 ! join endpoints of arc CONSTANT: ArcPieSlice 1 ! join endpoints to center of arc ! GC components: masks used in CreateGC, CopyGC, ChangeGC, OR'ed into ! GC.stateChanges : GCFunction ( -- n ) 0 2^ ; inline : GCPlaneMask ( -- n ) 1 2^ ; inline : GCForeground ( -- n ) 2 2^ ; inline : GCBackground ( -- n ) 3 2^ ; inline : GCLineWidth ( -- n ) 4 2^ ; inline : GCLineStyle ( -- n ) 5 2^ ; inline : GCCapStyle ( -- n ) 6 2^ ; inline : GCJoinStyle ( -- n ) 7 2^ ; inline : GCFillStyle ( -- n ) 8 2^ ; inline : GCFillRule ( -- n ) 9 2^ ; inline : GCTile ( -- n ) 10 2^ ; inline : GCStipple ( -- n ) 11 2^ ; inline : GCTileStipXOrigin ( -- n ) 12 2^ ; inline : GCTileStipYOrigin ( -- n ) 13 2^ ; inline : GCFont ( -- n ) 14 2^ ; inline : GCSubwindowMode ( -- n ) 15 2^ ; inline : GCGraphicsExposures ( -- n ) 16 2^ ; inline : GCClipXOrigin ( -- n ) 17 2^ ; inline : GCClipYOrigin ( -- n ) 18 2^ ; inline : GCClipMask ( -- n ) 19 2^ ; inline : GCDashOffset ( -- n ) 20 2^ ; inline : GCDashList ( -- n ) 21 2^ ; inline : GCArcMode ( -- n ) 22 2^ ; inline ! ***************************************************************** ! * FONTS ! ***************************************************************** ! used in QueryFont -- draw direction CONSTANT: FontLeftToRight 0 CONSTANT: FontRightToLeft 1 CONSTANT: FontChange 255 ! ***************************************************************** ! * IMAGING ! ***************************************************************** ! ImageFormat -- PutImage, GetImage CONSTANT: XYBitmap 0 ! depth 1, XYFormat CONSTANT: XYPixmap 1 ! depth == drawable depth CONSTANT: ZPixmap 2 ! depth == drawable depth ! ***************************************************************** ! * COLOR MAP STUFF ! ***************************************************************** ! For CreateColormap CONSTANT: AllocNone 0 ! create map with no entries CONSTANT: AllocAll 1 ! allocate entire map writeable ! Flags used in StoreNamedColor, StoreColors : DoRed ( -- n ) 0 2^ ; : DoGreen ( -- n ) 1 2^ ; : DoBlue ( -- n ) 2 2^ ; ! ***************************************************************** ! * CURSOR STUFF ! ***************************************************************** ! QueryBestSize Class CONSTANT: CursorShape 0 ! largest size that can be displayed CONSTANT: TileShape 1 ! size tiled fastest CONSTANT: StippleShape 2 ! size stippled fastest ! ***************************************************************** ! * KEYBOARD/POINTER STUFF ! ***************************************************************** CONSTANT: AutoRepeatModeOff 0 CONSTANT: AutoRepeatModeOn 1 CONSTANT: AutoRepeatModeDefault 2 CONSTANT: LedModeOff 0 CONSTANT: LedModeOn 1 ! masks for ChangeKeyboardControl : KBKeyClickPercent ( -- n ) 0 2^ ; : KBBellPercent ( -- n ) 1 2^ ; : KBBellPitch ( -- n ) 2 2^ ; : KBBellDuration ( -- n ) 3 2^ ; : KBLed ( -- n ) 4 2^ ; : KBLedMode ( -- n ) 5 2^ ; : KBKey ( -- n ) 6 2^ ; : KBAutoRepeatMode ( -- n ) 7 2^ ; CONSTANT: MappingSuccess 0 CONSTANT: MappingBusy 1 CONSTANT: MappingFailed 2 CONSTANT: MappingModifier 0 CONSTANT: MappingKeyboard 1 CONSTANT: MappingPointer 2 ! ***************************************************************** ! * SCREEN SAVER STUFF ! ***************************************************************** CONSTANT: DontPreferBlanking 0 CONSTANT: PreferBlanking 1 CONSTANT: DefaultBlanking 2 CONSTANT: DisableScreenSaver 0 CONSTANT: DisableScreenInterval 0 CONSTANT: DontAllowExposures 0 CONSTANT: AllowExposures 1 CONSTANT: DefaultExposures 2 ! for ForceScreenSaver CONSTANT: ScreenSaverReset 0 CONSTANT: ScreenSaverActive 1 ! ***************************************************************** ! * HOSTS AND CONNECTIONS ! ***************************************************************** ! for ChangeHosts CONSTANT: HostInsert 0 CONSTANT: HostDelete 1 ! for ChangeAccessControl CONSTANT: EnableAccess 1 CONSTANT: DisableAccess 0 ! Display classes used in opening the connection ! Note that the statically allocated ones are even numbered and the ! dynamically changeable ones are odd numbered CONSTANT: StaticGray 0 CONSTANT: GrayScale 1 CONSTANT: StaticColor 2 CONSTANT: PseudoColor 3 CONSTANT: TrueColor 4 CONSTANT: DirectColor 5 ! Byte order used in imageByteOrder and bitmapBitOrder CONSTANT: LSBFirst 0 CONSTANT: MSBFirst 1