409 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			409 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Factor
		
	
	
! Copyright (C) 2005, 2006 Eduardo Cavazos and Alex Chapman
 | 
						|
! See http://factorcode.org/license.txt for BSD license.
 | 
						|
 | 
						|
! Based on X.h
 | 
						|
 | 
						|
USING: alien alien.syntax math x11.xlib ;
 | 
						|
IN: x11.constants
 | 
						|
 | 
						|
TYPEDEF: ulong Mask
 | 
						|
 | 
						|
TYPEDEF: uchar KeyCode
 | 
						|
 | 
						|
! Reserved Resource and Constant Definitions
 | 
						|
 | 
						|
: ParentRelative 1 ;
 | 
						|
: CopyFromParent 0 ;
 | 
						|
: PointerWindow 0 ;
 | 
						|
: InputFocus 1 ;
 | 
						|
: PointerRoot 1 ;
 | 
						|
: AnyPropertyType 0 ;
 | 
						|
: AnyKey 0 ;
 | 
						|
: AnyButton 0 ;
 | 
						|
: AllTemporary 0 ;
 | 
						|
: CurrentTime 0 ;
 | 
						|
: NoSymbol 0 ;
 | 
						|
 | 
						|
! Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
 | 
						|
!   state in various key-, mouse-, and button-related events.
 | 
						|
 | 
						|
 | 
						|
! modifier names.  Used to build a SetModifierMapping request or
 | 
						|
! to read a GetModifierMapping request.  These correspond to the
 | 
						|
! masks defined above.
 | 
						|
: ShiftMapIndex         0 ;
 | 
						|
: LockMapIndex          1 ;
 | 
						|
: ControlMapIndex       2 ;
 | 
						|
: Mod1MapIndex          3 ;
 | 
						|
: Mod2MapIndex          4 ;
 | 
						|
: Mod3MapIndex          5 ;
 | 
						|
: Mod4MapIndex          6 ;
 | 
						|
: Mod5MapIndex          7 ;
 | 
						|
 | 
						|
 | 
						|
! button masks.  Used in same manner as Key masks above. Not to be confused
 | 
						|
! with button names below.
 | 
						|
 | 
						|
 | 
						|
: 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".
 | 
						|
 | 
						|
! Notify modes
 | 
						|
 | 
						|
: NotifyNormal          0 ;
 | 
						|
: NotifyGrab            1 ;
 | 
						|
: NotifyUngrab          2 ;
 | 
						|
: NotifyWhileGrabbed    3 ;
 | 
						|
 | 
						|
: NotifyHint            1 ; ! for MotionNotify events
 | 
						|
                       
 | 
						|
! Notify detail
 | 
						|
 | 
						|
: NotifyAncestor         0 ;
 | 
						|
: NotifyVirtual          1 ;
 | 
						|
: NotifyInferior         2 ;
 | 
						|
: NotifyNonlinear        3 ;
 | 
						|
: NotifyNonlinearVirtual 4 ;
 | 
						|
: NotifyPointer          5 ;
 | 
						|
: NotifyPointerRoot      6 ;
 | 
						|
: NotifyDetailNone       7 ;
 | 
						|
 | 
						|
! Visibility notify
 | 
						|
 | 
						|
: VisibilityUnobscured          0 ;
 | 
						|
: VisibilityPartiallyObscured   1 ;
 | 
						|
: VisibilityFullyObscured       2 ;
 | 
						|
 | 
						|
! Circulation request
 | 
						|
 | 
						|
: PlaceOnTop            0 ;
 | 
						|
: PlaceOnBottom         1 ;
 | 
						|
 | 
						|
! protocol families
 | 
						|
 | 
						|
: FamilyInternet        0 ;     ! IPv4
 | 
						|
: FamilyDECnet          1 ;
 | 
						|
: FamilyChaos           2 ;
 | 
						|
: FamilyInternet6       6 ;     ! IPv6
 | 
						|
 | 
						|
! authentication families not tied to a specific protocol
 | 
						|
: FamilyServerInterpreted 5 ;
 | 
						|
 | 
						|
! Property notification
 | 
						|
 | 
						|
: PropertyNewValue      0 ;
 | 
						|
: PropertyDelete        1 ;
 | 
						|
 | 
						|
! Color Map notification
 | 
						|
 | 
						|
: ColormapUninstalled   0 ;
 | 
						|
: ColormapInstalled     1 ;
 | 
						|
 | 
						|
! GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes
 | 
						|
 | 
						|
: GrabModeSync          0 ;
 | 
						|
: GrabModeAsync         1 ;
 | 
						|
 | 
						|
! GrabPointer, GrabKeyboard reply status
 | 
						|
 | 
						|
: GrabSuccess           0 ;
 | 
						|
: AlreadyGrabbed        1 ;
 | 
						|
: GrabInvalidTime       2 ;
 | 
						|
: GrabNotViewable       3 ;
 | 
						|
: GrabFrozen            4 ;
 | 
						|
 | 
						|
! AllowEvents modes
 | 
						|
 | 
						|
: AsyncPointer          0 ;
 | 
						|
: SyncPointer           1 ;
 | 
						|
: ReplayPointer         2 ;
 | 
						|
: AsyncKeyboard         3 ;
 | 
						|
: SyncKeyboard          4 ;
 | 
						|
: ReplayKeyboard        5 ;
 | 
						|
: AsyncBoth             6 ;
 | 
						|
: SyncBoth              7 ;
 | 
						|
 | 
						|
! Used in SetInputFocus, GetInputFocus
 | 
						|
 | 
						|
: RevertToNone         ( -- n ) None ;
 | 
						|
: RevertToPointerRoot  ( -- n ) PointerRoot ;
 | 
						|
: RevertToParent        2 ;
 | 
						|
 | 
						|
! *****************************************************************
 | 
						|
! * ERROR CODES 
 | 
						|
! *****************************************************************
 | 
						|
 | 
						|
: Success          0 ; ! everything's okay
 | 
						|
: BadRequest       1 ; ! bad request code
 | 
						|
: BadValue         2 ; ! int parameter out of range
 | 
						|
: BadWindow        3 ; ! parameter not a Window
 | 
						|
: BadPixmap        4 ; ! parameter not a Pixmap
 | 
						|
: BadAtom          5 ; ! parameter not an Atom
 | 
						|
: BadCursor        6 ; ! parameter not a Cursor
 | 
						|
: BadFont          7 ; ! parameter not a Font
 | 
						|
: BadMatch         8 ; ! parameter mismatch
 | 
						|
: BadDrawable      9 ; ! parameter not a Pixmap or Window
 | 
						|
: 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.
 | 
						|
: BadAlloc          11 ; ! insufficient resources
 | 
						|
: BadColor          12 ; ! no such colormap
 | 
						|
: BadGC             13 ; ! parameter not a GC
 | 
						|
: BadIDChoice       14 ; ! choice not in range or already used
 | 
						|
: BadName           15 ; ! font or color name doesn't exist
 | 
						|
: BadLength         16 ; ! Request length incorrect
 | 
						|
: BadImplementation 17 ; ! server is defective
 | 
						|
 | 
						|
: FirstExtensionError   128 ;
 | 
						|
: LastExtensionError    255 ;
 | 
						|
 | 
						|
! *****************************************************************
 | 
						|
! * WINDOW DEFINITIONS 
 | 
						|
! *****************************************************************
 | 
						|
 | 
						|
! Window classes used by CreateWindow
 | 
						|
! Note that CopyFromParent is already defined as 0 above
 | 
						|
 | 
						|
: InputOutput           1 ;
 | 
						|
: InputOnly             2 ;
 | 
						|
 | 
						|
! Used in CreateWindow for backing-store hint
 | 
						|
 | 
						|
: NotUseful               0 ;
 | 
						|
: WhenMapped              1 ;
 | 
						|
: Always                  2 ;
 | 
						|
 | 
						|
! Used in ChangeSaveSet
 | 
						|
 | 
						|
: SetModeInsert           0 ;
 | 
						|
: SetModeDelete           1 ;
 | 
						|
 | 
						|
! Used in ChangeCloseDownMode
 | 
						|
 | 
						|
: DestroyAll              0 ;
 | 
						|
: RetainPermanent         1 ;
 | 
						|
: RetainTemporary         2 ;
 | 
						|
 | 
						|
! Window stacking method (in configureWindow)
 | 
						|
 | 
						|
: Above                   0 ;
 | 
						|
: Below                   1 ;
 | 
						|
: TopIf                   2 ;
 | 
						|
: BottomIf                3 ;
 | 
						|
: Opposite                4 ;
 | 
						|
 | 
						|
! Circulation direction
 | 
						|
 | 
						|
: RaiseLowest             0 ;
 | 
						|
: LowerHighest            1 ;
 | 
						|
 | 
						|
! Property modes
 | 
						|
 | 
						|
: PropModeReplace         0 ;
 | 
						|
: PropModePrepend         1 ;
 | 
						|
: PropModeAppend          2 ;
 | 
						|
 | 
						|
! *****************************************************************
 | 
						|
! * GRAPHICS DEFINITIONS
 | 
						|
! *****************************************************************
 | 
						|
 | 
						|
! LineStyle
 | 
						|
 | 
						|
: LineSolid             0 ;
 | 
						|
: LineOnOffDash         1 ;
 | 
						|
: LineDoubleDash        2 ;
 | 
						|
 | 
						|
! capStyle
 | 
						|
 | 
						|
: CapNotLast            0 ;
 | 
						|
: CapButt               1 ;
 | 
						|
: CapRound              2 ;
 | 
						|
: CapProjecting         3 ;
 | 
						|
 | 
						|
! joinStyle
 | 
						|
 | 
						|
: JoinMiter             0 ;
 | 
						|
: JoinRound             1 ;
 | 
						|
: JoinBevel             2 ;
 | 
						|
 | 
						|
! fillStyle
 | 
						|
 | 
						|
: FillSolid             0 ;
 | 
						|
: FillTiled             1 ;
 | 
						|
: FillStippled          2 ;
 | 
						|
: FillOpaqueStippled    3 ;
 | 
						|
 | 
						|
! fillRule
 | 
						|
 | 
						|
: EvenOddRule           0 ;
 | 
						|
: WindingRule           1 ;
 | 
						|
 | 
						|
! subwindow mode
 | 
						|
 | 
						|
: ClipByChildren        0 ;
 | 
						|
: IncludeInferiors      1 ;
 | 
						|
 | 
						|
! SetClipRectangles ordering
 | 
						|
 | 
						|
: Unsorted              0 ;
 | 
						|
: YSorted               1 ;
 | 
						|
: YXSorted              2 ;
 | 
						|
: YXBanded              3 ;
 | 
						|
 | 
						|
! CoordinateMode for drawing routines
 | 
						|
 | 
						|
: CoordModeOrigin   0 ; ! relative to the origin
 | 
						|
: CoordModePrevious 1 ; ! relative to previous point
 | 
						|
 | 
						|
! Polygon shapes
 | 
						|
 | 
						|
: Complex       0 ; ! paths may intersect
 | 
						|
: Nonconvex     1 ; ! no paths intersect, but not convex
 | 
						|
: Convex        2 ; ! wholly convex
 | 
						|
 | 
						|
! Arc modes for PolyFillArc
 | 
						|
 | 
						|
: ArcChord    0 ; ! join endpoints of arc
 | 
						|
: ArcPieSlice 1 ; ! join endpoints to center of arc
 | 
						|
 | 
						|
! *****************************************************************
 | 
						|
! * FONTS 
 | 
						|
! *****************************************************************
 | 
						|
 | 
						|
! used in QueryFont -- draw direction
 | 
						|
 | 
						|
: FontLeftToRight               0 ;
 | 
						|
: FontRightToLeft               1 ;
 | 
						|
 | 
						|
: FontChange            255 ;
 | 
						|
 | 
						|
! *****************************************************************
 | 
						|
! *  IMAGING 
 | 
						|
! *****************************************************************
 | 
						|
 | 
						|
! ImageFormat -- PutImage, GetImage
 | 
						|
 | 
						|
: XYBitmap              0 ; ! depth 1, XYFormat
 | 
						|
: XYPixmap              1 ; ! depth == drawable depth
 | 
						|
: ZPixmap               2 ; ! depth == drawable depth
 | 
						|
 | 
						|
! *****************************************************************
 | 
						|
! *  COLOR MAP STUFF 
 | 
						|
! *****************************************************************
 | 
						|
 | 
						|
! For CreateColormap
 | 
						|
 | 
						|
: AllocNone             0 ; ! create map with no entries
 | 
						|
: 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
 | 
						|
 | 
						|
: CursorShape           0 ; ! largest size that can be displayed
 | 
						|
: TileShape             1 ; ! size tiled fastest
 | 
						|
: StippleShape          2 ; ! size stippled fastest
 | 
						|
 | 
						|
! ***************************************************************** 
 | 
						|
! * KEYBOARD/POINTER STUFF
 | 
						|
! *****************************************************************
 | 
						|
 | 
						|
: AutoRepeatModeOff     0 ;
 | 
						|
: AutoRepeatModeOn      1 ;
 | 
						|
: AutoRepeatModeDefault 2 ;
 | 
						|
 | 
						|
: LedModeOff            0 ;
 | 
						|
: 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^ ;
 | 
						|
 | 
						|
: MappingSuccess        0 ;
 | 
						|
: MappingBusy           1 ;
 | 
						|
: MappingFailed         2 ;
 | 
						|
 | 
						|
: MappingModifier               0 ;
 | 
						|
: MappingKeyboard               1 ;
 | 
						|
: MappingPointer                2 ;
 | 
						|
 | 
						|
! *****************************************************************
 | 
						|
! * SCREEN SAVER STUFF 
 | 
						|
! *****************************************************************
 | 
						|
 | 
						|
: DontPreferBlanking    0 ;
 | 
						|
: PreferBlanking        1 ;
 | 
						|
: DefaultBlanking       2 ;
 | 
						|
 | 
						|
: DisableScreenSaver    0 ;
 | 
						|
: DisableScreenInterval 0 ;
 | 
						|
 | 
						|
: DontAllowExposures    0 ;
 | 
						|
: AllowExposures        1 ;
 | 
						|
: DefaultExposures      2 ;
 | 
						|
 | 
						|
! for ForceScreenSaver
 | 
						|
 | 
						|
: ScreenSaverReset 0 ;
 | 
						|
: ScreenSaverActive 1 ;
 | 
						|
 | 
						|
! *****************************************************************
 | 
						|
! * HOSTS AND CONNECTIONS
 | 
						|
! *****************************************************************
 | 
						|
 | 
						|
! for ChangeHosts
 | 
						|
 | 
						|
: HostInsert            0 ;
 | 
						|
: HostDelete            1 ;
 | 
						|
 | 
						|
! for ChangeAccessControl
 | 
						|
 | 
						|
: EnableAccess          1 ;
 | 
						|
: 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
 | 
						|
 | 
						|
: StaticGray            0 ;
 | 
						|
: GrayScale             1 ;
 | 
						|
: StaticColor           2 ;
 | 
						|
: PseudoColor           3 ;
 | 
						|
: TrueColor             4 ;
 | 
						|
: DirectColor           5 ;
 | 
						|
 | 
						|
 | 
						|
! Byte order  used in imageByteOrder and bitmapBitOrder
 | 
						|
 | 
						|
: LSBFirst              0 ;
 | 
						|
: MSBFirst              1 ;
 | 
						|
 | 
						|
! *****************************************************************
 | 
						|
! * EXTENDED WINDOW MANAGER HINTS
 | 
						|
! *****************************************************************
 | 
						|
 | 
						|
C-ENUM: _NET_WM_STATE_REMOVE _NET_WM_STATE_ADD _NET_WM_STATE_TOGGLE ; |