]> gitweb.factorcode.org Git - factor.git/commitdiff
Moved most of my stuff from x11-wrunt into x11. Added a few things to
authorAlex Chapman <chapman.alex@gmail.com>
Mon, 19 Dec 2005 02:02:43 +0000 (02:02 +0000)
committerAlex Chapman <chapman.alex@gmail.com>
Mon, 19 Dec 2005 02:02:43 +0000 (02:02 +0000)
Edouardo's xlib.factor to make my stuff work. Removed all but xlib.factor from
x11-wrunt. I have left that there because there may still be things in it that
are not yet in the other xlib.factor.

I've also added load2.factor which will load the files when factor's cwd is its
root dir.

16 files changed:
contrib/x11/glx.factor [new file with mode: 0644]
contrib/x11/keysymdef.factor [new file with mode: 0644]
contrib/x11/lesson2.factor [new file with mode: 0644]
contrib/x11/load2.factor [new file with mode: 0644]
contrib/x11/x-constants.factor [new file with mode: 0644]
contrib/x11/x-events.factor [new file with mode: 0644]
contrib/x11/x11-wrunt/README.txt [deleted file]
contrib/x11/x11-wrunt/glx.factor [deleted file]
contrib/x11/x11-wrunt/keysymdef.factor [deleted file]
contrib/x11/x11-wrunt/lesson2.factor [deleted file]
contrib/x11/x11-wrunt/load.factor [deleted file]
contrib/x11/x11-wrunt/x-events.factor [deleted file]
contrib/x11/x11-wrunt/x.factor [deleted file]
contrib/x11/x11-wrunt/xutil.factor [deleted file]
contrib/x11/xlib.factor
contrib/x11/xutil.factor [new file with mode: 0644]

diff --git a/contrib/x11/glx.factor b/contrib/x11/glx.factor
new file mode 100644 (file)
index 0000000..9c6f3be
--- /dev/null
@@ -0,0 +1,84 @@
+#! based on glx.h from xfree86, and some of glxtokens.h
+IN: x11
+USING: alien ;
+
+LIBRARY: gl
+
+! Visual Config Attributes (glXGetConfig, glXGetFBConfigAttrib)
+: GLX_USE_GL           1  ; ! support GLX rendering
+: GLX_BUFFER_SIZE      2  ; ! depth of the color buffer
+: GLX_LEVEL            3  ; ! level in plane stacking
+: GLX_RGBA             4  ; ! true if RGBA mode
+: GLX_DOUBLEBUFFER     5  ; ! double buffering supported
+: GLX_STEREO           6  ; ! stereo buffering supported
+: GLX_AUX_BUFFERS      7  ; ! number of aux buffers
+: GLX_RED_SIZE         8  ; ! number of red component bits
+: GLX_GREEN_SIZE       9  ; ! number of green component bits
+: GLX_BLUE_SIZE                10 ; ! number of blue component bits
+: GLX_ALPHA_SIZE       11 ; ! number of alpha component bits
+: GLX_DEPTH_SIZE       12 ; ! number of depth bits
+: GLX_STENCIL_SIZE     13 ; ! number of stencil bits
+: GLX_ACCUM_RED_SIZE   14 ; ! number of red accum bits
+: GLX_ACCUM_GREEN_SIZE 15 ; ! number of green accum bits
+: GLX_ACCUM_BLUE_SIZE  16 ; ! number of blue accum bits
+: GLX_ACCUM_ALPHA_SIZE 17 ; ! number of alpha accum bits
+
+TYPEDEF: XID GLXContextID
+TYPEDEF: XID GLXPixmap
+TYPEDEF: XID GLXDrawable
+TYPEDEF: XID GLXPbuffer
+TYPEDEF: XID GLXWindow
+TYPEDEF: XID GLXFBConfigID
+TYPEDEF: void* GLXContext  ! typedef struct __GLXcontextRec *GLXContext;
+TYPEDEF: void* GLXFBConfig ! typedef struct __GLXFBConfigRec *GLXFBConfig;
+
+FUNCTION: XVisualInfo* glXChooseVisual ( Display* dpy, int screen, int* attribList ) ;
+FUNCTION: void glXCopyContext ( Display* dpy, GLXContext src, GLXContext dst, ulong mask ) ;
+FUNCTION: GLXContext glXCreateContext ( Display* dpy, XVisualInfo* vis, GLXContext shareList, bool direct ) ;
+FUNCTION: GLXPixmap glXCreateGLXPixmap ( Display* dpy, XVisualInfo* vis, Pixmap pixmap ) ;
+FUNCTION: void glXDestroyContext ( Display* dpy, GLXContext ctx ) ;
+FUNCTION: void glXDestroyGLXPixmap ( Display* dpy, GLXPixmap pix ) ;
+FUNCTION: int glXGetConfig ( Display* dpy, XVisualInfo* vis, int attrib, int* value) ;
+FUNCTION: GLXContext glXGetCurrentContext ( ) ;
+FUNCTION: GLXDrawable glXGetCurrentDrawable ( ) ;
+FUNCTION: bool glXIsDirect ( Display* dpy, GLXContext ctx ) ;
+FUNCTION: bool glXMakeCurrent ( Display* dpy, GLXDrawable drawable, GLXContext ctx ) ;
+FUNCTION: bool glXQueryExtension ( Display* dpy, int* errorBase, int* eventBase ) ;
+FUNCTION: bool glXQueryVersion ( Display* dpy, int* major, int* minor ) ;
+FUNCTION: void glXSwapBuffers ( Display* dpy, GLXDrawable drawable ) ;
+FUNCTION: void glXUseXFont ( Font font, int first, int count, int listBase ) ;
+FUNCTION: void glXWaitGL ( ) ;
+FUNCTION: void glXWaitX ( ) ;
+FUNCTION: char* glXGetClientString ( Display* dpy, int name ) ;
+FUNCTION: char* glXQueryServerString ( Display* dpy, int screen, int name ) ;
+FUNCTION: char* glXQueryExtensionsString ( Display* dpy, int screen ) ;
+
+! New for GLX 1.3
+FUNCTION: GLXFBConfig* glXGetFBConfigs ( Display* dpy, int screen, int* nelements ) ;
+FUNCTION: GLXFBConfig* glXChooseFBConfig ( Display* dpy, int screen, int* attrib_list, int* nelements ) ;
+FUNCTION: int glXGetFBConfigAttrib ( Display* dpy, GLXFBConfig config, int attribute, int* value ) ;
+FUNCTION: XVisualInfo* glXGetVisualFromFBConfig ( Display* dpy, GLXFBConfig config ) ;
+FUNCTION: GLXWindow glXCreateWindow ( Display* dpy, GLXFBConfig config, Window win, int* attrib_list ) ;
+FUNCTION: void glXDestroyWindow ( Display* dpy, GLXWindow win ) ;
+FUNCTION: GLXPixmap glXCreatePixmap ( Display* dpy, GLXFBConfig config, Pixmap pixmap, int* attrib_list ) ;
+FUNCTION: void glXDestroyPixmap ( Display* dpy, GLXPixmap pixmap ) ;
+FUNCTION: GLXPbuffer glXCreatePbuffer ( Display* dpy, GLXFBConfig config, int* attrib_list ) ;
+FUNCTION: void glXDestroyPbuffer ( Display* dpy, GLXPbuffer pbuf ) ;
+FUNCTION: void glXQueryDrawable ( Display* dpy, GLXDrawable draw, int attribute, uint* value ) ;
+FUNCTION: GLXContext glXCreateNewContext ( Display* dpy, GLXFBConfig config, int render_type, GLXContext share_list, bool direct ) ;
+FUNCTION: bool glXMakeContextCurrent ( Display* display, GLXDrawable draw, GLXDrawable read, GLXContext ctx ) ;
+FUNCTION: GLXDrawable glXGetCurrentReadDrawable ( ) ;
+FUNCTION: Display*  glXGetCurrentDisplay ( ) ;
+FUNCTION: int glXQueryContext ( Display* dpy, GLXContext ctx, int attribute, int* value ) ;
+FUNCTION: void glXSelectEvent ( Display* dpy, GLXDrawable draw, ulong event_mask ) ;
+FUNCTION: void glXGetSelectedEvent ( Display* dpy, GLXDrawable draw, ulong* event_mask ) ;
+
+! GLX 1.4 and later
+! extern void (*glXGetProcAddress(const GLubyte* procname))(void ) ;
+
+! glxext stuff skipped
+
+
+! GLX Events
+! (also skipped for now. only has GLXPbufferClobberEvent, the rest is handled by xlib methinks
+
diff --git a/contrib/x11/keysymdef.factor b/contrib/x11/keysymdef.factor
new file mode 100644 (file)
index 0000000..a93fbf4
--- /dev/null
@@ -0,0 +1,69 @@
+! remarkably similar to parts of keysymdef.h
+IN: x11
+
+: XK_BackSpace         HEX: FF08 ; ! back space, back char
+: XK_Tab               HEX: FF09 ;
+: XK_Linefeed          HEX: FF0A ; ! Linefeed, LF
+: XK_Clear             HEX: FF0B ;
+: XK_Return            HEX: FF0D ; ! Return, enter
+: XK_Pause             HEX: FF13 ; ! Pause, hold
+: XK_Scroll_Lock       HEX: FF14 ;
+: XK_Sys_Req           HEX: FF15 ;
+: XK_Escape            HEX: FF1B ;
+: XK_Delete            HEX: FFFF ; ! Delete, rubout
+
+! Cursor control & motion
+
+: XK_Home              HEX: FF50 ;
+: XK_Left              HEX: FF51 ; ! Move left, left arrow
+: XK_Up                        HEX: FF52 ; ! Move up, up arrow
+: XK_Right             HEX: FF53 ; ! Move right, right arrow
+: XK_Down              HEX: FF54 ; ! Move down, down arrow
+: XK_Prior             HEX: FF55 ; ! Prior, previous
+: XK_Page_Up           HEX: FF55 ;
+: XK_Next              HEX: FF56 ; ! Next
+: XK_Page_Down         HEX: FF56 ;
+: XK_End               HEX: FF57 ; ! EOL
+: XK_Begin             HEX: FF58 ; ! BOL
+
+! Keypad Functions, keypad numbers cleverly chosen to map to ascii
+
+: XK_KP_Space          HEX: FF80 ; ! space
+: XK_KP_Tab            HEX: FF89 ;
+: XK_KP_Enter          HEX: FF8D ; ! enter
+: XK_KP_F1             HEX: FF91 ; ! PF1, KP_A, ...
+: XK_KP_F2             HEX: FF92 ;
+: XK_KP_F3             HEX: FF93 ;
+: XK_KP_F4             HEX: FF94 ;
+: XK_KP_Home           HEX: FF95 ;
+: XK_KP_Left           HEX: FF96 ;
+: XK_KP_Up             HEX: FF97 ;
+: XK_KP_Right          HEX: FF98 ;
+: XK_KP_Down           HEX: FF99 ;
+: XK_KP_Prior          HEX: FF9A ;
+: XK_KP_Page_Up                HEX: FF9A ;
+: XK_KP_Next           HEX: FF9B ;
+: XK_KP_Page_Down      HEX: FF9B ;
+: XK_KP_End            HEX: FF9C ;
+: XK_KP_Begin          HEX: FF9D ;
+: XK_KP_Insert         HEX: FF9E ;
+: XK_KP_Delete         HEX: FF9F ;
+: XK_KP_Equal          HEX: FFBD ; ! equals
+: XK_KP_Multiply       HEX: FFAA ;
+: XK_KP_Add            HEX: FFAB ;
+: XK_KP_Separator      HEX: FFAC ; ! separator, often comma
+: XK_KP_Subtract       HEX: FFAD ;
+: XK_KP_Decimal                HEX: FFAE ;
+: XK_KP_Divide         HEX: FFAF ;
+
+: XK_KP_0              HEX: FFB0 ;
+: XK_KP_1              HEX: FFB1 ;
+: XK_KP_2              HEX: FFB2 ;
+: XK_KP_3              HEX: FFB3 ;
+: XK_KP_4              HEX: FFB4 ;
+: XK_KP_5              HEX: FFB5 ;
+: XK_KP_6              HEX: FFB6 ;
+: XK_KP_7              HEX: FFB7 ;
+: XK_KP_8              HEX: FFB8 ;
+: XK_KP_9              HEX: FFB9 ;
+
diff --git a/contrib/x11/lesson2.factor b/contrib/x11/lesson2.factor
new file mode 100644 (file)
index 0000000..fa4afae
--- /dev/null
@@ -0,0 +1,167 @@
+IN: nehe
+USING: opengl x11 xlib syntax kernel sequences alien namespaces math threads generic io prettyprint ;
+
+TUPLE: gl-window dpy screen win ctx x y width height depth ;
+SYMBOL: current-window
+
+SYMBOL: dpy
+SYMBOL: screen
+SYMBOL: root
+SYMBOL: win
+SYMBOL: ctx
+SYMBOL: title
+SYMBOL: vi
+SYMBOL: x
+SYMBOL: y
+SYMBOL: width
+SYMBOL: height
+
+: >int-array ( seq -- int-array )
+    dup length dup <int-array> -rot [
+       pick set-int-nth
+    ] 2each ;
+
+: attr-list ( -- c-array )
+    [
+        GLX_RGBA , GLX_DOUBLEBUFFER ,
+        GLX_RED_SIZE , 4 ,
+        GLX_GREEN_SIZE , 4 ,
+        GLX_BLUE_SIZE , 4 ,
+        GLX_DEPTH_SIZE , 16 ,
+        None ,
+    ] f make >int-array ;
+
+: resize-gl-scene ( glwin -- )
+    0 0 rot [ gl-window-width ] keep [ gl-window-height ] keep >r glViewport
+    GL_PROJECTION glMatrixMode
+    glLoadIdentity
+    45 r> [ gl-window-width ] keep gl-window-height / 0.1 100 gluPerspective
+    GL_MODELVIEW glMatrixMode ;
+
+: gl-init ( glwin -- )
+    GL_SMOOTH glShadeModel
+    0 0 0 0 glClearColor
+    1 glClearDepth
+    GL_DEPTH_TEST glEnable
+    GL_LEQUAL glDepthFunc
+    GL_PERSPECTIVE_CORRECTION_HINT GL_NICEST glHint
+    resize-gl-scene
+    glFlush ;
+
+: normal-XSetWindowAttributes ( cmap -- valuemask attr )
+    <XSetWindowAttributes> [
+       set-XSetWindowAttributes-colormap
+    ] keep
+    ExposureMask KeyPressMask bitor ButtonPressMask bitor StructureNotifyMask bitor
+    over set-XSetWindowAttributes-event_mask
+    dup 1 swap set-XSetWindowAttributes-border_pixel
+    CWBorderPixel CWColormap bitor CWEventMask bitor swap ;
+
+: make-display ( display-num -- display )
+    XOpenDisplay dup dpy set ;
+
+: make-screen ( display -- screen )
+    XDefaultScreen dup screen set ;
+
+: make-vi ( display screen -- vi )
+    attr-list glXChooseVisual dup vi set ;
+
+: make-ctx ( display vi -- )
+    0 <alien> GL_TRUE glXCreateContext ctx set ;
+
+: make-colormap ( -- cmap )
+    dpy get vi get 2dup XVisualInfo-screen XRootWindow dup root set
+    swap XVisualInfo-visual AllocNone XCreateColormap ;
+
+: make-win ( valuemask attr -- win )
+    >r >r dpy get root get x get y get width get height get 0 vi get
+    dup XVisualInfo-depth InputOutput rot XVisualInfo-visual r> r> XCreateWindow dup win set ;
+
+: make-gl-window ( display-num x y width height depth title -- glwin )
+    [
+        title set depth set height set width set y set x set
+        make-display dup dup make-screen make-vi make-ctx
+        make-colormap normal-XSetWindowAttributes make-win
+        dpy get swap 2dup over "WM_DELETE_WINDOW" 1 XInternAtom <int> 1 XSetWMProtocols drop
+        2dup title get dup None 0 <alien> 0 over XSetStandardProperties drop
+        2dup XMapRaised drop
+        2dup ctx get glXMakeCurrent 2drop
+        screen get win get ctx get x get y get width get height get depth get <gl-window>
+        dup gl-init
+       dup global [ current-window set ] bind
+    ] with-scope ;
+
+: draw-gl-scene ( -- )
+    GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT bitor glClear
+    glLoadIdentity
+    -1.5 0 -6 glTranslatef
+    GL_TRIANGLES [
+       0 1 0 glVertex3f
+       -1 -1 0 glVertex3f
+       1 -1 0 glVertex3f
+    ] do-state
+    3 0 0 glTranslatef
+    GL_QUADS [
+        -1 1 1 glVertex3f
+       1 1 0 glVertex3f
+       1 -1 0 glVertex3f
+       -1 -1 0 glVertex3f
+    ] do-state
+    current-window get dup gl-window-dpy swap gl-window-win glXSwapBuffers ;
+
+: kill-gl-window ( glwin -- )
+    dup gl-window-ctx [
+       over gl-window-dpy dup None 0 <alien> glXMakeCurrent drop
+        swap glXDestroyContext
+       0 over set-gl-window-ctx
+    ] when*
+    gl-window-dpy XCloseDisplay ;
+
+GENERIC: (handle-event) ( glwin xevent -- continue? )
+
+M: x-expose-event (handle-event)
+    nip XExposeEvent-count 0 = [ draw-gl-scene ] when t ;
+
+M: x-configure-notify-event (handle-event)
+    #! resize if the width or height has changed
+    [ XConfigureEvent-width swap gl-window-width = ] 2keep
+    [ XConfigureEvent-height swap gl-window-height = and ] 2keep rot [
+       2drop
+    ] [
+        [ XConfigureEvent-width swap set-gl-window-width ] 2keep
+       [ XConfigureEvent-height swap set-gl-window-height ] 2keep
+       drop resize-gl-scene
+    ] if t ;
+
+M: x-button-press-event (handle-event)
+    #! quit if a mouse button is pressed
+    2drop f ;
+
+PREDICATE: x-key-press-event quit-key-event
+    0 XLookupKeysym dup CHAR: q = swap XK_Escape = or ;
+
+M: quit-key-event (handle-event)
+    2drop f ;
+
+M: x-client-message-event (handle-event)
+    swap gl-window-dpy swap XClientMessageEvent-message_type XGetAtomName
+    "WM_PROTOCOLS" = not ;
+
+M: object (handle-event)
+    #! unknown event, ignore and continue
+    2drop t ;
+
+: handle-event ( glwin xevent -- continue? )
+    over gl-window-dpy over XNextEvent drop (handle-event) ;
+
+: (loop) ( glwin xevent -- continue? )
+    over gl-window-dpy XPending 0 > [
+       2dup handle-event [ (loop) ] [ 2drop f ] if
+    ] [ 2drop t ] if ;
+
+: loop ( glwin xevent -- )
+    2dup (loop) [ draw-gl-scene loop ] [ 2drop ] if ;
+
+: main ( -- )
+    ":0.0" 10 10 640 480 16 "NeHe Lesson 2" make-gl-window
+    dup <XEvent> loop kill-gl-window ;
diff --git a/contrib/x11/load2.factor b/contrib/x11/load2.factor
new file mode 100644 (file)
index 0000000..297c259
--- /dev/null
@@ -0,0 +1,9 @@
+USING: kernel alien parser sequences words compiler ;
+
+"X11" "libX11.so" "cdecl" add-library
+
+[ "x-constants.factor" "xlib.factor" "xutil.factor" "keysymdef.factor" "x-events.factor" "glx.factor" ] [ "contrib/x11/" swap append run-file ] each
+
+"x11" words [ try-compile ] each
+"xlib" words [ try-compile ] each
+clear
diff --git a/contrib/x11/x-constants.factor b/contrib/x11/x-constants.factor
new file mode 100644 (file)
index 0000000..6d9ce5e
--- /dev/null
@@ -0,0 +1,597 @@
+! Based on X.h
+IN: x11
+USING: alien math ;
+
+TYPEDEF: ulong XID
+TYPEDEF: ulong Mask
+TYPEDEF: ulong Atom
+TYPEDEF: ulong VisualID
+TYPEDEF: ulong Time
+TYPEDEF: ulong VisualID
+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
+: None 0 ;
+: ParentRelative 1 ;
+: CopyFromParent 0 ;
+: PointerWindow 0 ;
+: InputFocus 1 ;
+: PointerRoot 1 ;
+: AnyPropertyType 0 ;
+: AnyKey 0 ;
+: AnyButton 0 ;
+: AllTemporary 0 ;
+: CurrentTime 0 ;
+: NoSymbol 0 ;
+
+! Event Definitions
+: NoEventMask                  0 ;
+: KeyPressMask                 1 0  shift ;
+: KeyReleaseMask               1 1  shift ;
+: ButtonPressMask              1 2  shift ;
+: ButtonReleaseMask            1 3  shift ;
+: EnterWindowMask              1 4  shift ;
+: LeaveWindowMask              1 5  shift ;
+: PointerMotionMask            1 6  shift ;
+: PointerMotionHintMask                1 7  shift ;
+: Button1MotionMask            1 8  shift ;
+: Button2MotionMask            1 9  shift ;
+: Button3MotionMask            1 10 shift ;
+: Button4MotionMask            1 11 shift ;
+: Button5MotionMask            1 12 shift ;
+: ButtonMotionMask             1 13 shift ;
+: KeymapStateMask              1 14 shift ;
+: ExposureMask                 1 15 shift ;
+: VisibilityChangeMask         1 16 shift ;
+: StructureNotifyMask          1 17 shift ;
+: ResizeRedirectMask           1 18 shift ;
+: SubstructureNotifyMask       1 19 shift ;
+: SubstructureRedirectMask     1 20 shift ;
+: FocusChangeMask              1 21 shift ;
+: PropertyChangeMask           1 22 shift ;
+: ColormapChangeMask           1 23 shift ;
+: OwnerGrabButtonMask          1 24 shift ;
+
+! 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.
+: KeyPress        2 ;
+: KeyRelease      3 ;
+: ButtonPress     4 ;
+: ButtonRelease           5 ;
+: MotionNotify    6 ;
+: EnterNotify     7 ;
+: LeaveNotify     8 ;
+: FocusIn         9 ;
+: FocusOut        10 ;
+: KeymapNotify    11 ;
+: Expose          12 ;
+: GraphicsExpose   13 ;
+: NoExpose        14 ;
+: VisibilityNotify 15 ;
+: CreateNotify    16 ;
+: DestroyNotify           17 ;
+: UnmapNotify     18 ;
+: MapNotify       19 ;
+: MapRequest      20 ;
+: ReparentNotify   21 ;
+: ConfigureNotify  22 ;
+: ConfigureRequest 23 ;
+: GravityNotify           24 ;
+: ResizeRequest           25 ;
+: CirculateNotify  26 ;
+: CirculateRequest 27 ;
+: PropertyNotify   28 ;
+: SelectionClear   29 ;
+: SelectionRequest 30 ;
+: SelectionNotify  31 ;
+: ColormapNotify   32 ;
+: ClientMessage           33 ;
+: MappingNotify           34 ;
+: LASTEvent       35 ; ! must be bigger than any event #
+
+! Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
+!   state in various key-, mouse-, and button-related events.
+
+: ShiftMask    1 0 shift ;
+: LockMask     1 1 shift ;
+: ControlMask  1 2 shift ;
+: Mod1Mask     1 3 shift ;
+: Mod2Mask     1 4 shift ;
+: Mod3Mask     1 5 shift ;
+: Mod4Mask     1 6 shift ;
+: Mod5Mask     1 7 shift ;
+
+! 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.
+
+: Button1Mask          1 8  shift ;
+: Button2Mask          1 9  shift ;
+: Button3Mask          1 10 shift ;
+: Button4Mask          1 11 shift ;
+: Button5Mask          1 12 shift ;
+
+: AnyModifier          1 15 shift ; ! 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".
+
+: Button1      1 ;
+: Button2      2 ;
+: Button3      3 ;
+: Button4      4 ;
+: Button5      5 ;
+
+! 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         None ;
+: RevertToPointerRoot  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 ;
+
+! Window attributes for CreateWindow and ChangeWindowAttributes
+
+: CWBackPixmap         1 0 shift ;
+: CWBackPixel          1 1 shift ;
+: CWBorderPixmap       1 2 shift ;
+: CWBorderPixel         1 3 shift ;
+: CWBitGravity         1 4 shift ;
+: CWWinGravity         1 5 shift ;
+: CWBackingStore        1 6 shift ;
+: CWBackingPlanes       1 7 shift ;
+: CWBackingPixel        1 8 shift ;
+: CWOverrideRedirect   1 9 shift ;
+: CWSaveUnder          1 10 shift ;
+: CWEventMask          1 11 shift ;
+: CWDontPropagate       1 12 shift ;
+: CWColormap           1 13 shift ;
+: CWCursor             1 14 shift ;
+
+! ConfigureWindow structure
+
+: CWX                  1 0 shift ;
+: CWY                  1 1 shift ;
+: CWWidth              1 2 shift ;
+: CWHeight             1 3 shift ;
+: CWBorderWidth                1 4 shift ;
+: CWSibling            1 5 shift ;
+: CWStackMode          1 6 shift ;
+
+
+! Bit Gravity
+
+: ForgetGravity                0 ;
+: NorthWestGravity     1 ;
+: NorthGravity         2 ;
+: NorthEastGravity     3 ;
+: WestGravity          4 ;
+: CenterGravity                5 ;
+: EastGravity          6 ;
+: SouthWestGravity     7 ;
+: SouthGravity         8 ;
+: SouthEastGravity     9 ;
+: StaticGravity                10 ;
+
+! Window gravity + bit gravity above
+
+: UnmapGravity         0 ;
+
+! Used in CreateWindow for backing-store hint
+
+: NotUseful               0 ;
+: WhenMapped              1 ;
+: Always                  2 ;
+
+! Used in GetWindowAttributes reply
+
+: IsUnmapped           0 ;
+: IsUnviewable         1 ;
+: IsViewable           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
+! *****************************************************************
+
+! graphics functions, as in GC.alu
+
+: GXclear              HEX: 0 ; ! 0
+: GXand                        HEX: 1 ; ! src AND dst
+: GXandReverse         HEX: 2 ; ! src AND NOT dst
+: GXcopy               HEX: 3 ; ! src
+: GXandInverted                HEX: 4 ; ! NOT src AND dst
+: GXnoop               HEX: 5 ; ! dst
+: GXxor                        HEX: 6 ; ! src XOR dst
+: GXor                 HEX: 7 ; ! src OR dst
+: GXnor                        HEX: 8 ; ! NOT src AND NOT dst
+: GXequiv              HEX: 9 ; ! NOT src XOR dst
+: GXinvert             HEX: a ; ! NOT dst
+: GXorReverse          HEX: b ; ! src OR NOT dst
+: GXcopyInverted       HEX: c ; ! NOT src
+: GXorInverted         HEX: d ; ! NOT src OR dst
+: GXnand               HEX: e ; ! NOT src OR NOT dst
+: GXset                        HEX: f ; ! 1
+
+! 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
+
+! GC components: masks used in CreateGC, CopyGC, ChangeGC, OR'ed into
+! GC.stateChanges
+
+: GCFunction          1 0 shift ;
+: GCPlaneMask         1 1 shift ;
+: GCForeground        1 2 shift ;
+: GCBackground        1 3 shift ;
+: GCLineWidth         1 4 shift ;
+: GCLineStyle         1 5 shift ;
+: GCCapStyle          1 6 shift ;
+: GCJoinStyle        1 7 shift ;
+: GCFillStyle        1 8 shift ;
+: GCFillRule         1 9 shift  ;
+: GCTile             1 10 shift ;
+: GCStipple          1 11 shift ;
+: GCTileStipXOrigin   1 12 shift ;
+: GCTileStipYOrigin   1 13 shift ;
+: GCFont             1 14 shift ;
+: GCSubwindowMode     1 15 shift ;
+: GCGraphicsExposures 1 16 shift ;
+: GCClipXOrigin              1 17 shift ;
+: GCClipYOrigin              1 18 shift ;
+: GCClipMask         1 19 shift ;
+: GCDashOffset       1 20 shift ;
+: GCDashList         1 21 shift ;
+: GCArcMode          1 22 shift ;
+: GCLastBit          22 ;
+
+! *****************************************************************
+! * 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                1 0 shift ;
+: DoGreen      1 1 shift ;
+: DoBlue       1 2 shift ;
+
+! *****************************************************************
+! * 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    1 0 shift ;
+: KBBellPercent                1 1 shift ;
+: KBBellPitch          1 2 shift ;
+: KBBellDuration       1 3 shift ;
+: KBLed                        1 4 shift ;
+: KBLedMode            1 5 shift ;
+: KBKey                        1 6 shift ;
+: KBAutoRepeatMode     1 7 shift ;
+
+: 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 ;
+
diff --git a/contrib/x11/x-events.factor b/contrib/x11/x-events.factor
new file mode 100644 (file)
index 0000000..3286c79
--- /dev/null
@@ -0,0 +1,40 @@
+IN: x11
+USING: alien kernel sequences namespaces strings syntax math generic parser ;
+
+: x-event-type
+    #! XEvent is a union of the various X*Event structs. All of them have
+    #! 'int type' as their first field.
+    0 alien-signed-4 ;
+
+PREDICATE: integer upper
+    dup CHAR: A >= swap CHAR: Z <= and ;
+: uncapitalise ( "Capitalised" | "capitalised" -- "capitalised" )
+    dup first ch>lower swap >sbuf 0 swap [ set-nth ] keep >string ;
+
+GENERIC: (camel>dashed)
+M: upper (camel>dashed) ( CHAR: X -- )
+    CHAR: - , ch>lower , ;
+M: object (camel>dashed) ( CHAR: x -- ) , ;
+
+: camel>dashed ( "SomeName" -- "some-name" )
+    uncapitalise [ [ (camel>dashed) ] each ] "" make ;
+
+: x-event-predicate ( EventName -- )
+    #! creates a predicate for x-event-name-event
+    #! EventName should be a valid XEvent.type (defined in x.factor)
+    #! note: c structs are represented as byte-arrays in factor
+    [ "IN: x11 PREDICATE: byte-array x-" % dup camel>dashed % "-event x-event-type " %
+      % " = ;" % ] "" make eval ;
+
+[
+    "KeyPress" "KeyRelease" "ButtonPress" "ButtonRelease" "MotionNotify"
+    "EnterNotify" "LeaveNotify" "FocusIn" "FocusOut" "KeymapNotify"
+    "Expose" "GraphicsExpose" "NoExpose" "VisibilityNotify" "CreateNotify"
+    "DestroyNotify" "UnmapNotify" "MapNotify" "MapRequest" "ReparentNotify"
+    "ConfigureNotify" "ConfigureRequest" "GravityNotify" "ResizeRequest"
+    "CirculateNotify" "CirculateRequest" "PropertyNotify" "SelectionClear"
+    "SelectionRequest" "SelectionNotify" "ColormapNotify" "ClientMessage"
+    "MappingNotify"
+] [ x-event-predicate ] each
+
diff --git a/contrib/x11/x11-wrunt/README.txt b/contrib/x11/x11-wrunt/README.txt
deleted file mode 100644 (file)
index 94ee7ce..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Most of these files take their content from corresponding C files:
-x.factor     -- X.h
-xlib.factor  -- Xlib.h
-xutil.factor -- Xutil.h
-glx.factor   -- glx.h and glxtokens.h
-keysymdef.factor -- keysymdef.h
-
-x-events.factor defines x-event predicates (see lesson2.factor for usage)
-
-Not all of these are complete, but they are complete to run lesson 2 of the
-nehe opengl tutorials (and the other tutorials with small changes). To see a
-demo run from factor's root dir:
-  "contrib/x11/x11-wrunt/load.factor" run-file
-  ( then wait for everything to compile... )
-  USE: nehe
-  main
-
-Pressing 'q' or esc, or clicking the mouse will exit. If something goes wrong
-you can kill off the window with:
-  current-window get kill-gl-window
diff --git a/contrib/x11/x11-wrunt/glx.factor b/contrib/x11/x11-wrunt/glx.factor
deleted file mode 100644 (file)
index 9c6f3be..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-#! based on glx.h from xfree86, and some of glxtokens.h
-IN: x11
-USING: alien ;
-
-LIBRARY: gl
-
-! Visual Config Attributes (glXGetConfig, glXGetFBConfigAttrib)
-: GLX_USE_GL           1  ; ! support GLX rendering
-: GLX_BUFFER_SIZE      2  ; ! depth of the color buffer
-: GLX_LEVEL            3  ; ! level in plane stacking
-: GLX_RGBA             4  ; ! true if RGBA mode
-: GLX_DOUBLEBUFFER     5  ; ! double buffering supported
-: GLX_STEREO           6  ; ! stereo buffering supported
-: GLX_AUX_BUFFERS      7  ; ! number of aux buffers
-: GLX_RED_SIZE         8  ; ! number of red component bits
-: GLX_GREEN_SIZE       9  ; ! number of green component bits
-: GLX_BLUE_SIZE                10 ; ! number of blue component bits
-: GLX_ALPHA_SIZE       11 ; ! number of alpha component bits
-: GLX_DEPTH_SIZE       12 ; ! number of depth bits
-: GLX_STENCIL_SIZE     13 ; ! number of stencil bits
-: GLX_ACCUM_RED_SIZE   14 ; ! number of red accum bits
-: GLX_ACCUM_GREEN_SIZE 15 ; ! number of green accum bits
-: GLX_ACCUM_BLUE_SIZE  16 ; ! number of blue accum bits
-: GLX_ACCUM_ALPHA_SIZE 17 ; ! number of alpha accum bits
-
-TYPEDEF: XID GLXContextID
-TYPEDEF: XID GLXPixmap
-TYPEDEF: XID GLXDrawable
-TYPEDEF: XID GLXPbuffer
-TYPEDEF: XID GLXWindow
-TYPEDEF: XID GLXFBConfigID
-TYPEDEF: void* GLXContext  ! typedef struct __GLXcontextRec *GLXContext;
-TYPEDEF: void* GLXFBConfig ! typedef struct __GLXFBConfigRec *GLXFBConfig;
-
-FUNCTION: XVisualInfo* glXChooseVisual ( Display* dpy, int screen, int* attribList ) ;
-FUNCTION: void glXCopyContext ( Display* dpy, GLXContext src, GLXContext dst, ulong mask ) ;
-FUNCTION: GLXContext glXCreateContext ( Display* dpy, XVisualInfo* vis, GLXContext shareList, bool direct ) ;
-FUNCTION: GLXPixmap glXCreateGLXPixmap ( Display* dpy, XVisualInfo* vis, Pixmap pixmap ) ;
-FUNCTION: void glXDestroyContext ( Display* dpy, GLXContext ctx ) ;
-FUNCTION: void glXDestroyGLXPixmap ( Display* dpy, GLXPixmap pix ) ;
-FUNCTION: int glXGetConfig ( Display* dpy, XVisualInfo* vis, int attrib, int* value) ;
-FUNCTION: GLXContext glXGetCurrentContext ( ) ;
-FUNCTION: GLXDrawable glXGetCurrentDrawable ( ) ;
-FUNCTION: bool glXIsDirect ( Display* dpy, GLXContext ctx ) ;
-FUNCTION: bool glXMakeCurrent ( Display* dpy, GLXDrawable drawable, GLXContext ctx ) ;
-FUNCTION: bool glXQueryExtension ( Display* dpy, int* errorBase, int* eventBase ) ;
-FUNCTION: bool glXQueryVersion ( Display* dpy, int* major, int* minor ) ;
-FUNCTION: void glXSwapBuffers ( Display* dpy, GLXDrawable drawable ) ;
-FUNCTION: void glXUseXFont ( Font font, int first, int count, int listBase ) ;
-FUNCTION: void glXWaitGL ( ) ;
-FUNCTION: void glXWaitX ( ) ;
-FUNCTION: char* glXGetClientString ( Display* dpy, int name ) ;
-FUNCTION: char* glXQueryServerString ( Display* dpy, int screen, int name ) ;
-FUNCTION: char* glXQueryExtensionsString ( Display* dpy, int screen ) ;
-
-! New for GLX 1.3
-FUNCTION: GLXFBConfig* glXGetFBConfigs ( Display* dpy, int screen, int* nelements ) ;
-FUNCTION: GLXFBConfig* glXChooseFBConfig ( Display* dpy, int screen, int* attrib_list, int* nelements ) ;
-FUNCTION: int glXGetFBConfigAttrib ( Display* dpy, GLXFBConfig config, int attribute, int* value ) ;
-FUNCTION: XVisualInfo* glXGetVisualFromFBConfig ( Display* dpy, GLXFBConfig config ) ;
-FUNCTION: GLXWindow glXCreateWindow ( Display* dpy, GLXFBConfig config, Window win, int* attrib_list ) ;
-FUNCTION: void glXDestroyWindow ( Display* dpy, GLXWindow win ) ;
-FUNCTION: GLXPixmap glXCreatePixmap ( Display* dpy, GLXFBConfig config, Pixmap pixmap, int* attrib_list ) ;
-FUNCTION: void glXDestroyPixmap ( Display* dpy, GLXPixmap pixmap ) ;
-FUNCTION: GLXPbuffer glXCreatePbuffer ( Display* dpy, GLXFBConfig config, int* attrib_list ) ;
-FUNCTION: void glXDestroyPbuffer ( Display* dpy, GLXPbuffer pbuf ) ;
-FUNCTION: void glXQueryDrawable ( Display* dpy, GLXDrawable draw, int attribute, uint* value ) ;
-FUNCTION: GLXContext glXCreateNewContext ( Display* dpy, GLXFBConfig config, int render_type, GLXContext share_list, bool direct ) ;
-FUNCTION: bool glXMakeContextCurrent ( Display* display, GLXDrawable draw, GLXDrawable read, GLXContext ctx ) ;
-FUNCTION: GLXDrawable glXGetCurrentReadDrawable ( ) ;
-FUNCTION: Display*  glXGetCurrentDisplay ( ) ;
-FUNCTION: int glXQueryContext ( Display* dpy, GLXContext ctx, int attribute, int* value ) ;
-FUNCTION: void glXSelectEvent ( Display* dpy, GLXDrawable draw, ulong event_mask ) ;
-FUNCTION: void glXGetSelectedEvent ( Display* dpy, GLXDrawable draw, ulong* event_mask ) ;
-
-! GLX 1.4 and later
-! extern void (*glXGetProcAddress(const GLubyte* procname))(void ) ;
-
-! glxext stuff skipped
-
-
-! GLX Events
-! (also skipped for now. only has GLXPbufferClobberEvent, the rest is handled by xlib methinks
-
diff --git a/contrib/x11/x11-wrunt/keysymdef.factor b/contrib/x11/x11-wrunt/keysymdef.factor
deleted file mode 100644 (file)
index a93fbf4..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-! remarkably similar to parts of keysymdef.h
-IN: x11
-
-: XK_BackSpace         HEX: FF08 ; ! back space, back char
-: XK_Tab               HEX: FF09 ;
-: XK_Linefeed          HEX: FF0A ; ! Linefeed, LF
-: XK_Clear             HEX: FF0B ;
-: XK_Return            HEX: FF0D ; ! Return, enter
-: XK_Pause             HEX: FF13 ; ! Pause, hold
-: XK_Scroll_Lock       HEX: FF14 ;
-: XK_Sys_Req           HEX: FF15 ;
-: XK_Escape            HEX: FF1B ;
-: XK_Delete            HEX: FFFF ; ! Delete, rubout
-
-! Cursor control & motion
-
-: XK_Home              HEX: FF50 ;
-: XK_Left              HEX: FF51 ; ! Move left, left arrow
-: XK_Up                        HEX: FF52 ; ! Move up, up arrow
-: XK_Right             HEX: FF53 ; ! Move right, right arrow
-: XK_Down              HEX: FF54 ; ! Move down, down arrow
-: XK_Prior             HEX: FF55 ; ! Prior, previous
-: XK_Page_Up           HEX: FF55 ;
-: XK_Next              HEX: FF56 ; ! Next
-: XK_Page_Down         HEX: FF56 ;
-: XK_End               HEX: FF57 ; ! EOL
-: XK_Begin             HEX: FF58 ; ! BOL
-
-! Keypad Functions, keypad numbers cleverly chosen to map to ascii
-
-: XK_KP_Space          HEX: FF80 ; ! space
-: XK_KP_Tab            HEX: FF89 ;
-: XK_KP_Enter          HEX: FF8D ; ! enter
-: XK_KP_F1             HEX: FF91 ; ! PF1, KP_A, ...
-: XK_KP_F2             HEX: FF92 ;
-: XK_KP_F3             HEX: FF93 ;
-: XK_KP_F4             HEX: FF94 ;
-: XK_KP_Home           HEX: FF95 ;
-: XK_KP_Left           HEX: FF96 ;
-: XK_KP_Up             HEX: FF97 ;
-: XK_KP_Right          HEX: FF98 ;
-: XK_KP_Down           HEX: FF99 ;
-: XK_KP_Prior          HEX: FF9A ;
-: XK_KP_Page_Up                HEX: FF9A ;
-: XK_KP_Next           HEX: FF9B ;
-: XK_KP_Page_Down      HEX: FF9B ;
-: XK_KP_End            HEX: FF9C ;
-: XK_KP_Begin          HEX: FF9D ;
-: XK_KP_Insert         HEX: FF9E ;
-: XK_KP_Delete         HEX: FF9F ;
-: XK_KP_Equal          HEX: FFBD ; ! equals
-: XK_KP_Multiply       HEX: FFAA ;
-: XK_KP_Add            HEX: FFAB ;
-: XK_KP_Separator      HEX: FFAC ; ! separator, often comma
-: XK_KP_Subtract       HEX: FFAD ;
-: XK_KP_Decimal                HEX: FFAE ;
-: XK_KP_Divide         HEX: FFAF ;
-
-: XK_KP_0              HEX: FFB0 ;
-: XK_KP_1              HEX: FFB1 ;
-: XK_KP_2              HEX: FFB2 ;
-: XK_KP_3              HEX: FFB3 ;
-: XK_KP_4              HEX: FFB4 ;
-: XK_KP_5              HEX: FFB5 ;
-: XK_KP_6              HEX: FFB6 ;
-: XK_KP_7              HEX: FFB7 ;
-: XK_KP_8              HEX: FFB8 ;
-: XK_KP_9              HEX: FFB9 ;
-
diff --git a/contrib/x11/x11-wrunt/lesson2.factor b/contrib/x11/x11-wrunt/lesson2.factor
deleted file mode 100644 (file)
index 4a6f8cd..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-IN: nehe
-USING: opengl x11 syntax kernel sequences alien namespaces math threads generic io prettyprint ;
-
-TUPLE: gl-window dpy screen win ctx x y width height depth ;
-SYMBOL: current-window
-
-SYMBOL: dpy
-SYMBOL: screen
-SYMBOL: root
-SYMBOL: win
-SYMBOL: ctx
-SYMBOL: title
-SYMBOL: vi
-SYMBOL: x
-SYMBOL: y
-SYMBOL: width
-SYMBOL: height
-
-: >int-array ( seq -- int-array )
-    dup length dup <int-array> -rot [
-       pick set-int-nth
-    ] 2each ;
-
-: attr-list ( -- c-array )
-    [
-        GLX_RGBA , GLX_DOUBLEBUFFER ,
-        GLX_RED_SIZE , 4 ,
-        GLX_GREEN_SIZE , 4 ,
-        GLX_BLUE_SIZE , 4 ,
-        GLX_DEPTH_SIZE , 16 ,
-        None ,
-    ] f make >int-array ;
-
-: resize-gl-scene ( glwin -- )
-    0 0 rot [ gl-window-width ] keep [ gl-window-height ] keep >r glViewport
-    GL_PROJECTION glMatrixMode
-    glLoadIdentity
-    45 r> [ gl-window-width ] keep gl-window-height / 0.1 100 gluPerspective
-    GL_MODELVIEW glMatrixMode ;
-
-: gl-init ( glwin -- )
-    GL_SMOOTH glShadeModel
-    0 0 0 0 glClearColor
-    1 glClearDepth
-    GL_DEPTH_TEST glEnable
-    GL_LEQUAL glDepthFunc
-    GL_PERSPECTIVE_CORRECTION_HINT GL_NICEST glHint
-    resize-gl-scene
-    glFlush ;
-
-: normal-XSetWindowAttributes ( cmap -- valuemask attr )
-    <XSetWindowAttributes> [
-       set-XSetWindowAttributes-colormap
-    ] keep
-    ExposureMask KeyPressMask bitor ButtonPressMask bitor StructureNotifyMask bitor
-    over set-XSetWindowAttributes-event_mask
-    dup 1 swap set-XSetWindowAttributes-border_pixel
-    CWBorderPixel CWColormap bitor CWEventMask bitor swap ;
-
-: make-display ( display-num -- display )
-    XOpenDisplay dup dpy set ;
-
-: make-screen ( display -- screen )
-    XDefaultScreen dup screen set ;
-
-: make-vi ( display screen -- vi )
-    attr-list glXChooseVisual dup vi set ;
-
-: make-ctx ( display vi -- )
-    0 <alien> GL_TRUE glXCreateContext ctx set ;
-
-: make-colormap ( -- cmap )
-    dpy get vi get 2dup XVisualInfo-screen XRootWindow dup root set
-    swap XVisualInfo-visual AllocNone XCreateColormap ;
-
-: make-win ( valuemask attr -- win )
-    >r >r dpy get root get x get y get width get height get 0 vi get
-    dup XVisualInfo-depth InputOutput rot XVisualInfo-visual r> r> XCreateWindow dup win set ;
-
-: make-gl-window ( display-num x y width height depth title -- glwin )
-    [
-        title set depth set height set width set y set x set
-        make-display dup dup make-screen make-vi make-ctx
-        make-colormap normal-XSetWindowAttributes make-win
-        dpy get swap 2dup over "WM_DELETE_WINDOW" t XInternAtom <int> 1 XSetWMProtocols drop
-        2dup title get dup None 0 <alien> 0 over XSetStandardProperties drop
-        2dup XMapRaised drop
-        2dup ctx get glXMakeCurrent 2drop
-        screen get win get ctx get x get y get width get height get depth get <gl-window>
-        dup gl-init
-       dup global [ current-window set ] bind
-    ] with-scope ;
-
-: draw-gl-scene ( -- )
-    GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT bitor glClear
-    glLoadIdentity
-    -1.5 0 -6 glTranslatef
-    GL_TRIANGLES [
-       0 1 0 glVertex3f
-       -1 -1 0 glVertex3f
-       1 -1 0 glVertex3f
-    ] do-state
-    3 0 0 glTranslatef
-    GL_QUADS [
-        -1 1 1 glVertex3f
-       1 1 0 glVertex3f
-       1 -1 0 glVertex3f
-       -1 -1 0 glVertex3f
-    ] do-state
-    current-window get dup gl-window-dpy swap gl-window-win glXSwapBuffers ;
-
-: kill-gl-window ( glwin -- )
-    dup gl-window-ctx [
-       over gl-window-dpy dup None 0 <alien> glXMakeCurrent drop
-        swap glXDestroyContext
-       0 over set-gl-window-ctx
-    ] when*
-    gl-window-dpy XCloseDisplay ;
-
-GENERIC: (handle-event) ( glwin xevent -- continue? )
-
-M: x-expose-event (handle-event)
-    nip XExposeEvent-count 0 = [ draw-gl-scene ] when t ;
-
-M: x-configure-notify-event (handle-event)
-    #! resize if the width or height has changed
-    [ XConfigureEvent-width swap gl-window-width = ] 2keep
-    [ XConfigureEvent-height swap gl-window-height = and ] 2keep rot [
-       2drop
-    ] [
-        [ XConfigureEvent-width swap set-gl-window-width ] 2keep
-       [ XConfigureEvent-height swap set-gl-window-height ] 2keep
-       drop resize-gl-scene
-    ] if t ;
-
-M: x-button-press-event (handle-event)
-    #! quit if a mouse button is pressed
-    2drop f ;
-
-PREDICATE: x-key-press-event quit-key-event
-    0 XLookupKeysym dup CHAR: q = swap XK_Escape = or ;
-
-M: quit-key-event (handle-event)
-    2drop f ;
-
-M: x-client-message-event (handle-event)
-    swap gl-window-dpy swap XClientMessageEvent-message_type XGetAtomName
-    "WM_PROTOCOLS" = not ;
-
-M: object (handle-event)
-    #! unknown event, ignore and continue
-    2drop t ;
-
-: handle-event ( glwin xevent -- continue? )
-    over gl-window-dpy over XNextEvent drop (handle-event) ;
-
-: (loop) ( glwin xevent -- continue? )
-    over gl-window-dpy XPending 0 > [
-       2dup handle-event [ (loop) ] [ 2drop f ] if
-    ] [ 2drop t ] if ;
-
-: loop ( glwin xevent -- )
-    2dup (loop) [ draw-gl-scene loop ] [ 2drop ] if ;
-
-: main ( -- )
-    ":0.0" 10 10 640 480 16 "NeHe Lesson 2" make-gl-window
-    dup <XEvent> loop kill-gl-window ;
diff --git a/contrib/x11/x11-wrunt/load.factor b/contrib/x11/x11-wrunt/load.factor
deleted file mode 100644 (file)
index a7b22c3..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-USING: kernel alien parser sequences words compiler ;
-
-"X11" "libX11.so" "cdecl" add-library
-
-[ "x.factor" "xlib.factor" "xutil.factor" "keysymdef.factor" "x-events.factor" 
-  "glx.factor" "lesson2.factor" ] [ "contrib/x11/x11-wrunt/" swap append run-file ] each
-
-"x11" words [ try-compile ] each
-
diff --git a/contrib/x11/x11-wrunt/x-events.factor b/contrib/x11/x11-wrunt/x-events.factor
deleted file mode 100644 (file)
index 3286c79..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-IN: x11
-USING: alien kernel sequences namespaces strings syntax math generic parser ;
-
-: x-event-type
-    #! XEvent is a union of the various X*Event structs. All of them have
-    #! 'int type' as their first field.
-    0 alien-signed-4 ;
-
-PREDICATE: integer upper
-    dup CHAR: A >= swap CHAR: Z <= and ;
-: uncapitalise ( "Capitalised" | "capitalised" -- "capitalised" )
-    dup first ch>lower swap >sbuf 0 swap [ set-nth ] keep >string ;
-
-GENERIC: (camel>dashed)
-M: upper (camel>dashed) ( CHAR: X -- )
-    CHAR: - , ch>lower , ;
-M: object (camel>dashed) ( CHAR: x -- ) , ;
-
-: camel>dashed ( "SomeName" -- "some-name" )
-    uncapitalise [ [ (camel>dashed) ] each ] "" make ;
-
-: x-event-predicate ( EventName -- )
-    #! creates a predicate for x-event-name-event
-    #! EventName should be a valid XEvent.type (defined in x.factor)
-    #! note: c structs are represented as byte-arrays in factor
-    [ "IN: x11 PREDICATE: byte-array x-" % dup camel>dashed % "-event x-event-type " %
-      % " = ;" % ] "" make eval ;
-
-[
-    "KeyPress" "KeyRelease" "ButtonPress" "ButtonRelease" "MotionNotify"
-    "EnterNotify" "LeaveNotify" "FocusIn" "FocusOut" "KeymapNotify"
-    "Expose" "GraphicsExpose" "NoExpose" "VisibilityNotify" "CreateNotify"
-    "DestroyNotify" "UnmapNotify" "MapNotify" "MapRequest" "ReparentNotify"
-    "ConfigureNotify" "ConfigureRequest" "GravityNotify" "ResizeRequest"
-    "CirculateNotify" "CirculateRequest" "PropertyNotify" "SelectionClear"
-    "SelectionRequest" "SelectionNotify" "ColormapNotify" "ClientMessage"
-    "MappingNotify"
-] [ x-event-predicate ] each
-
diff --git a/contrib/x11/x11-wrunt/x.factor b/contrib/x11/x11-wrunt/x.factor
deleted file mode 100644 (file)
index 6d9ce5e..0000000
+++ /dev/null
@@ -1,597 +0,0 @@
-! Based on X.h
-IN: x11
-USING: alien math ;
-
-TYPEDEF: ulong XID
-TYPEDEF: ulong Mask
-TYPEDEF: ulong Atom
-TYPEDEF: ulong VisualID
-TYPEDEF: ulong Time
-TYPEDEF: ulong VisualID
-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
-: None 0 ;
-: ParentRelative 1 ;
-: CopyFromParent 0 ;
-: PointerWindow 0 ;
-: InputFocus 1 ;
-: PointerRoot 1 ;
-: AnyPropertyType 0 ;
-: AnyKey 0 ;
-: AnyButton 0 ;
-: AllTemporary 0 ;
-: CurrentTime 0 ;
-: NoSymbol 0 ;
-
-! Event Definitions
-: NoEventMask                  0 ;
-: KeyPressMask                 1 0  shift ;
-: KeyReleaseMask               1 1  shift ;
-: ButtonPressMask              1 2  shift ;
-: ButtonReleaseMask            1 3  shift ;
-: EnterWindowMask              1 4  shift ;
-: LeaveWindowMask              1 5  shift ;
-: PointerMotionMask            1 6  shift ;
-: PointerMotionHintMask                1 7  shift ;
-: Button1MotionMask            1 8  shift ;
-: Button2MotionMask            1 9  shift ;
-: Button3MotionMask            1 10 shift ;
-: Button4MotionMask            1 11 shift ;
-: Button5MotionMask            1 12 shift ;
-: ButtonMotionMask             1 13 shift ;
-: KeymapStateMask              1 14 shift ;
-: ExposureMask                 1 15 shift ;
-: VisibilityChangeMask         1 16 shift ;
-: StructureNotifyMask          1 17 shift ;
-: ResizeRedirectMask           1 18 shift ;
-: SubstructureNotifyMask       1 19 shift ;
-: SubstructureRedirectMask     1 20 shift ;
-: FocusChangeMask              1 21 shift ;
-: PropertyChangeMask           1 22 shift ;
-: ColormapChangeMask           1 23 shift ;
-: OwnerGrabButtonMask          1 24 shift ;
-
-! 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.
-: KeyPress        2 ;
-: KeyRelease      3 ;
-: ButtonPress     4 ;
-: ButtonRelease           5 ;
-: MotionNotify    6 ;
-: EnterNotify     7 ;
-: LeaveNotify     8 ;
-: FocusIn         9 ;
-: FocusOut        10 ;
-: KeymapNotify    11 ;
-: Expose          12 ;
-: GraphicsExpose   13 ;
-: NoExpose        14 ;
-: VisibilityNotify 15 ;
-: CreateNotify    16 ;
-: DestroyNotify           17 ;
-: UnmapNotify     18 ;
-: MapNotify       19 ;
-: MapRequest      20 ;
-: ReparentNotify   21 ;
-: ConfigureNotify  22 ;
-: ConfigureRequest 23 ;
-: GravityNotify           24 ;
-: ResizeRequest           25 ;
-: CirculateNotify  26 ;
-: CirculateRequest 27 ;
-: PropertyNotify   28 ;
-: SelectionClear   29 ;
-: SelectionRequest 30 ;
-: SelectionNotify  31 ;
-: ColormapNotify   32 ;
-: ClientMessage           33 ;
-: MappingNotify           34 ;
-: LASTEvent       35 ; ! must be bigger than any event #
-
-! Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
-!   state in various key-, mouse-, and button-related events.
-
-: ShiftMask    1 0 shift ;
-: LockMask     1 1 shift ;
-: ControlMask  1 2 shift ;
-: Mod1Mask     1 3 shift ;
-: Mod2Mask     1 4 shift ;
-: Mod3Mask     1 5 shift ;
-: Mod4Mask     1 6 shift ;
-: Mod5Mask     1 7 shift ;
-
-! 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.
-
-: Button1Mask          1 8  shift ;
-: Button2Mask          1 9  shift ;
-: Button3Mask          1 10 shift ;
-: Button4Mask          1 11 shift ;
-: Button5Mask          1 12 shift ;
-
-: AnyModifier          1 15 shift ; ! 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".
-
-: Button1      1 ;
-: Button2      2 ;
-: Button3      3 ;
-: Button4      4 ;
-: Button5      5 ;
-
-! 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         None ;
-: RevertToPointerRoot  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 ;
-
-! Window attributes for CreateWindow and ChangeWindowAttributes
-
-: CWBackPixmap         1 0 shift ;
-: CWBackPixel          1 1 shift ;
-: CWBorderPixmap       1 2 shift ;
-: CWBorderPixel         1 3 shift ;
-: CWBitGravity         1 4 shift ;
-: CWWinGravity         1 5 shift ;
-: CWBackingStore        1 6 shift ;
-: CWBackingPlanes       1 7 shift ;
-: CWBackingPixel        1 8 shift ;
-: CWOverrideRedirect   1 9 shift ;
-: CWSaveUnder          1 10 shift ;
-: CWEventMask          1 11 shift ;
-: CWDontPropagate       1 12 shift ;
-: CWColormap           1 13 shift ;
-: CWCursor             1 14 shift ;
-
-! ConfigureWindow structure
-
-: CWX                  1 0 shift ;
-: CWY                  1 1 shift ;
-: CWWidth              1 2 shift ;
-: CWHeight             1 3 shift ;
-: CWBorderWidth                1 4 shift ;
-: CWSibling            1 5 shift ;
-: CWStackMode          1 6 shift ;
-
-
-! Bit Gravity
-
-: ForgetGravity                0 ;
-: NorthWestGravity     1 ;
-: NorthGravity         2 ;
-: NorthEastGravity     3 ;
-: WestGravity          4 ;
-: CenterGravity                5 ;
-: EastGravity          6 ;
-: SouthWestGravity     7 ;
-: SouthGravity         8 ;
-: SouthEastGravity     9 ;
-: StaticGravity                10 ;
-
-! Window gravity + bit gravity above
-
-: UnmapGravity         0 ;
-
-! Used in CreateWindow for backing-store hint
-
-: NotUseful               0 ;
-: WhenMapped              1 ;
-: Always                  2 ;
-
-! Used in GetWindowAttributes reply
-
-: IsUnmapped           0 ;
-: IsUnviewable         1 ;
-: IsViewable           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
-! *****************************************************************
-
-! graphics functions, as in GC.alu
-
-: GXclear              HEX: 0 ; ! 0
-: GXand                        HEX: 1 ; ! src AND dst
-: GXandReverse         HEX: 2 ; ! src AND NOT dst
-: GXcopy               HEX: 3 ; ! src
-: GXandInverted                HEX: 4 ; ! NOT src AND dst
-: GXnoop               HEX: 5 ; ! dst
-: GXxor                        HEX: 6 ; ! src XOR dst
-: GXor                 HEX: 7 ; ! src OR dst
-: GXnor                        HEX: 8 ; ! NOT src AND NOT dst
-: GXequiv              HEX: 9 ; ! NOT src XOR dst
-: GXinvert             HEX: a ; ! NOT dst
-: GXorReverse          HEX: b ; ! src OR NOT dst
-: GXcopyInverted       HEX: c ; ! NOT src
-: GXorInverted         HEX: d ; ! NOT src OR dst
-: GXnand               HEX: e ; ! NOT src OR NOT dst
-: GXset                        HEX: f ; ! 1
-
-! 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
-
-! GC components: masks used in CreateGC, CopyGC, ChangeGC, OR'ed into
-! GC.stateChanges
-
-: GCFunction          1 0 shift ;
-: GCPlaneMask         1 1 shift ;
-: GCForeground        1 2 shift ;
-: GCBackground        1 3 shift ;
-: GCLineWidth         1 4 shift ;
-: GCLineStyle         1 5 shift ;
-: GCCapStyle          1 6 shift ;
-: GCJoinStyle        1 7 shift ;
-: GCFillStyle        1 8 shift ;
-: GCFillRule         1 9 shift  ;
-: GCTile             1 10 shift ;
-: GCStipple          1 11 shift ;
-: GCTileStipXOrigin   1 12 shift ;
-: GCTileStipYOrigin   1 13 shift ;
-: GCFont             1 14 shift ;
-: GCSubwindowMode     1 15 shift ;
-: GCGraphicsExposures 1 16 shift ;
-: GCClipXOrigin              1 17 shift ;
-: GCClipYOrigin              1 18 shift ;
-: GCClipMask         1 19 shift ;
-: GCDashOffset       1 20 shift ;
-: GCDashList         1 21 shift ;
-: GCArcMode          1 22 shift ;
-: GCLastBit          22 ;
-
-! *****************************************************************
-! * 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                1 0 shift ;
-: DoGreen      1 1 shift ;
-: DoBlue       1 2 shift ;
-
-! *****************************************************************
-! * 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    1 0 shift ;
-: KBBellPercent                1 1 shift ;
-: KBBellPitch          1 2 shift ;
-: KBBellDuration       1 3 shift ;
-: KBLed                        1 4 shift ;
-: KBLedMode            1 5 shift ;
-: KBKey                        1 6 shift ;
-: KBAutoRepeatMode     1 7 shift ;
-
-: 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 ;
-
diff --git a/contrib/x11/x11-wrunt/xutil.factor b/contrib/x11/x11-wrunt/xutil.factor
deleted file mode 100644 (file)
index b226272..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-! from Xutil.h, incomplete
-IN: x11
-USING: alien ;
-
-LIBRARY: X11
-
-BEGIN-STRUCT: XSizeHints
-    FIELD: long flags  ! marks which fields in this structure are defined
-    FIELD: int x       ! obsolete for new window mgrs, but clients
-    FIELD: int y       ! should set so old wm's don't mess up
-    FIELD: int width   
-    FIELD: int height
-    FIELD: int min_width
-    FIELD: int min_height
-    FIELD: int max_width
-    FIELD: int max_height
-    FIELD: int width_inc
-    FIELD: int height_inc
-    ! struct {
-    !  int x;  /* numerator */
-    !  int y;  /* denominator */
-    ! } min_aspect, max_aspect;
-    FIELD: int min_aspect_x
-    FIELD: int min_aspect_y
-    FIELD: int max_aspect_x
-    FIELD: int max_aspect_y
-    FIELD: int base_width      ! added by ICCCM version 1
-    FIELD: int base_height
-    FIELD: int win_gravity;    ! added by ICCCM version 1
-END-STRUCT
-
-FUNCTION: int XSetStandardProperties ( Display* display, Window w, char* window_name, char* icon_name, Pixmap icon_pixmap, char** argv, int argc, XSizeHints* hints ) ;
-
-! Information used by the visual utility routines to find desired visual
-! type from the many visuals a display may support.
-
-BEGIN-STRUCT: XVisualInfo
-    FIELD: Visual* visual
-    FIELD: VisualID visualid
-    FIELD: int screen
-    FIELD: int depth
-! #if defined(__cplusplus) || defined(c_plusplus)
-!   int c_class;                                       /* C++ */
-! #else
-    FIELD: int class
-! #endif
-    FIELD: ulong red_mask
-    FIELD: ulong green_mask
-    FIELD: ulong blue_mask
-    FIELD: int colormap_size
-    FIELD: int bits_per_rgb
-END-STRUCT
-
-BEGIN-STRUCT: XComposeStatus
-    FIELD: XPointer compose_ptr ! state table pointer
-    FIELD: int chars_matched    ! match state
-END-STRUCT
-
index f8bf6fd12a7769c691fd6903ba9d23bad6e539a5..a9cab1264a4225879178a920d86cc2e50ea963e2 100644 (file)
@@ -9,7 +9,7 @@
 ! and are wondering what part of the file to modify, just find the
 ! function or data structure in the manual and note the section.
 
-IN: xlib USING: kernel vectors alien math ;
+IN: xlib USING: kernel arrays alien math ;
 
 LIBRARY: xlib
 
@@ -27,6 +27,7 @@ TYPEDEF: XID KeySym
 
 TYPEDEF: ulong Atom
 
+TYPEDEF: char* XPointer
 TYPEDEF: void* Display*
 TYPEDEF: void* Screen*
 TYPEDEF: void* GC
@@ -67,6 +68,9 @@ FUNCTION: int XQLength ( Display* display ) ;
 FUNCTION: int XScreenCount ( Display* display ) ;
 FUNCTION: int XConnectionNumber ( Display* display ) ;
 
+! 2.5 Closing the Display
+FUNCTION: int XCloseDisplay ( Display* display ) ;
+
 !
 ! 3 - Window Functions
 !
@@ -123,6 +127,7 @@ END-STRUCT
 
 ! 3.3 - Creating Windows
 
+FUNCTION: Window XCreateWindow ( Display* display, Window parent, int x, int y, uint width, uint height, uint border_width, int depth, uint class, Visual* visual, ulong valuemask, XSetWindowAttributes* attributes ) ;
 FUNCTION: Window XCreateSimpleWindow ( Display* display, Window parent, int x, int y, uint width, uint height, uint border_width, ulong border, ulong background ) ;
 FUNCTION: Status XDestroyWindow ( Display* display, Window w ) ;
 FUNCTION: Status XMapWindow ( Display* display, Window window ) ;
@@ -130,6 +135,10 @@ FUNCTION: Status XMapSubwindows ( Display* display, Window window ) ;
 FUNCTION: Status XUnmapWindow ( Display* display, Window w ) ;
 FUNCTION: Status XUnmapSubwindows ( Display* display, Window w ) ;
 
+! 3.5 Mapping Windows
+
+FUNCTION: int XMapRaised ( Display* display, Window w ) ;
+
 ! 3.7 - Configuring Windows
 
 : CWX                  1 0 shift ;
@@ -265,6 +274,10 @@ FUNCTION: Status XLookupColor ( Display* display, Colormap colormap, char* color
 FUNCTION: Status XAllocColor ( Display* display, Colormap colormap, XColor* screen_in_out ) ;
 FUNCTION: Status XQueryColor ( Display* display, Colormap colormap, XColor* def_in_out ) ;
 
+! 6.4 Creating, Copying, and Destroying Colormaps
+
+FUNCTION: Colormap XCreateColormap ( Display* display, Window w, Visual* visual, int alloc ) ;
+
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 ! 7 - Graphics Context Functions
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -525,10 +538,10 @@ TYPEDEF: XButtonEvent XButtonPressedEvent
 TYPEDEF: XButtonEvent XButtonReleasedEvent
 
 : XButtonEvent-position ( event -- { x y } )
-  dup XButtonEvent-x swap XButtonEvent-y 2vector ;
+  dup XButtonEvent-x swap XButtonEvent-y 2array ;
 
 : XButtonEvent-root-position ( event -- { x y } )
-  dup XButtonEvent-x swap XButtonEvent-y 2vector ;
+  dup XButtonEvent-x swap XButtonEvent-y 2array ;
 
 
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -1087,6 +1100,10 @@ FUNCTION: Status XWarpPointer ( Display* display, Window src_w, Window dest_w, i
 ! 14 - Inter-Client Communication Functions
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
+! 14.1 Client to Window Manager Communication
+
+FUNCTION: Status XSetWMProtocols ( Display* display, Window w, Atom* protocols, int count ) ;
+
 FUNCTION: Status XFetchName ( Display* display, Window w, char** window_name_return ) ;
 FUNCTION: Status XGetTransientForHint ( Display* display, Window w, Window* prop_window_return ) ;
 
@@ -1094,8 +1111,14 @@ FUNCTION: Status XGetTransientForHint ( Display* display, Window w, Window* prop
 ! 16 - Application Utility Functions
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
+! 16.1 Keyboard Utility Functions
+
+FUNCTION: KeySym XLookupKeysym ( XKeyEvent* key_event, int index ) ;
+
+
 FUNCTION: int XLookupString ( XKeyEvent* event_struct, char* buffer_return, int bytes_buffer, KeySym* keysym_return, XComposeStatus* status_in_out ) ;
 
+
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
 : CurrentTime 0 ;
diff --git a/contrib/x11/xutil.factor b/contrib/x11/xutil.factor
new file mode 100644 (file)
index 0000000..b226272
--- /dev/null
@@ -0,0 +1,58 @@
+! from Xutil.h, incomplete
+IN: x11
+USING: alien ;
+
+LIBRARY: X11
+
+BEGIN-STRUCT: XSizeHints
+    FIELD: long flags  ! marks which fields in this structure are defined
+    FIELD: int x       ! obsolete for new window mgrs, but clients
+    FIELD: int y       ! should set so old wm's don't mess up
+    FIELD: int width   
+    FIELD: int height
+    FIELD: int min_width
+    FIELD: int min_height
+    FIELD: int max_width
+    FIELD: int max_height
+    FIELD: int width_inc
+    FIELD: int height_inc
+    ! struct {
+    !  int x;  /* numerator */
+    !  int y;  /* denominator */
+    ! } min_aspect, max_aspect;
+    FIELD: int min_aspect_x
+    FIELD: int min_aspect_y
+    FIELD: int max_aspect_x
+    FIELD: int max_aspect_y
+    FIELD: int base_width      ! added by ICCCM version 1
+    FIELD: int base_height
+    FIELD: int win_gravity;    ! added by ICCCM version 1
+END-STRUCT
+
+FUNCTION: int XSetStandardProperties ( Display* display, Window w, char* window_name, char* icon_name, Pixmap icon_pixmap, char** argv, int argc, XSizeHints* hints ) ;
+
+! Information used by the visual utility routines to find desired visual
+! type from the many visuals a display may support.
+
+BEGIN-STRUCT: XVisualInfo
+    FIELD: Visual* visual
+    FIELD: VisualID visualid
+    FIELD: int screen
+    FIELD: int depth
+! #if defined(__cplusplus) || defined(c_plusplus)
+!   int c_class;                                       /* C++ */
+! #else
+    FIELD: int class
+! #endif
+    FIELD: ulong red_mask
+    FIELD: ulong green_mask
+    FIELD: ulong blue_mask
+    FIELD: int colormap_size
+    FIELD: int bits_per_rgb
+END-STRUCT
+
+BEGIN-STRUCT: XComposeStatus
+    FIELD: XPointer compose_ptr ! state table pointer
+    FIELD: int chars_matched    ! match state
+END-STRUCT
+