diff --git a/basis/opengl/opengl.factor b/basis/opengl/opengl.factor index 4b2906db95..e08a7487ae 100644 --- a/basis/opengl/opengl.factor +++ b/basis/opengl/opengl.factor @@ -42,7 +42,7 @@ MACRO: all-enabled ( seq quot -- ) [ words>values ] dip '[ _ _ (all-enabled) ] ; MACRO: all-enabled-client-state ( seq quot -- ) - [ words>values ] dip '[ _ (all-enabled-client-state) ] ; + [ words>values ] dip '[ _ _ (all-enabled-client-state) ] ; : do-matrix ( mode quot -- ) swap [ glMatrixMode glPushMatrix call ] keep diff --git a/basis/tools/vocabs/browser/browser.factor b/basis/tools/vocabs/browser/browser.factor index 3550424b83..7896cabd2e 100644 --- a/basis/tools/vocabs/browser/browser.factor +++ b/basis/tools/vocabs/browser/browser.factor @@ -288,7 +288,7 @@ M: vocab-tag article-name name>> ; M: vocab-tag article-content \ $tagged-vocabs swap name>> 2array ; -M: vocab-tag article-parent drop "vocab-index" ; +M: vocab-tag article-parent drop "vocab-tags" ; M: vocab-tag summary article-title ; @@ -302,6 +302,6 @@ M: vocab-author article-name name>> ; M: vocab-author article-content \ $authored-vocabs swap name>> 2array ; -M: vocab-author article-parent drop "vocab-index" ; +M: vocab-author article-parent drop "vocab-authors" ; M: vocab-author summary article-title ; diff --git a/basis/ui/gadgets/canvas/canvas.factor b/basis/ui/gadgets/canvas/canvas.factor index 1c36f4f9fd..710a9fb492 100644 --- a/basis/ui/gadgets/canvas/canvas.factor +++ b/basis/ui/gadgets/canvas/canvas.factor @@ -1,14 +1,14 @@ -! Copyright (C) 2007 Slava Pestov. +! Copyright (C) 2007, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: ui.backend ui.gadgets -ui.gadgets.worlds ui.render opengl opengl.gl kernel namespaces -classes.tuple colors accessors ; +USING: ui.backend ui.gadgets ui.gadgets.worlds ui.pens.solid opengl +opengl.gl kernel namespaces classes.tuple colors colors.constants +accessors ; IN: ui.gadgets.canvas TUPLE: canvas < gadget dlist ; : new-canvas ( class -- canvas ) - new black >>interior ; inline + new COLOR: black >>interior ; inline : delete-canvas-dlist ( canvas -- ) [ find-gl-context ] @@ -23,8 +23,6 @@ TUPLE: canvas < gadget dlist ; [ 2nip ] [ drop make-canvas-dlist ] if ; inline : draw-canvas ( canvas quot -- ) - origin get [ - cache-canvas-dlist glCallList - ] with-translation ; inline + cache-canvas-dlist glCallList ; inline M: canvas ungraft* delete-canvas-dlist ; diff --git a/basis/ui/pens/polygon/polygon-docs.factor b/basis/ui/pens/polygon/polygon-docs.factor index 706c1449a6..dfe687f398 100644 --- a/basis/ui/pens/polygon/polygon-docs.factor +++ b/basis/ui/pens/polygon/polygon-docs.factor @@ -1,5 +1,5 @@ +USING: colors help.markup help.syntax ui.pens ; IN: ui.pens.polygon -USING: help.markup help.syntax ; HELP: polygon { $class-description "A class implementing the " { $link draw-boundary } " and " { $link draw-interior } " generic words to draw a solid outline or a solid filled polygon, respectively. Instances of " { $link polygon } " have two slots:" diff --git a/basis/ui/pens/polygon/polygon.factor b/basis/ui/pens/polygon/polygon.factor index 4fc05c468b..4d7793dd65 100644 --- a/basis/ui/pens/polygon/polygon.factor +++ b/basis/ui/pens/polygon/polygon.factor @@ -1,6 +1,7 @@ ! Copyright (C) 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: ; +USING: accessors colors help.markup help.syntax kernel opengl +opengl.gl sequences specialized-arrays.float ui.pens ; IN: ui.pens.polygon ! Polygon pen diff --git a/basis/ui/windows/summary.txt b/basis/ui/windows/summary.txt deleted file mode 100644 index 9a0a894850..0000000000 --- a/basis/ui/windows/summary.txt +++ /dev/null @@ -1 +0,0 @@ -Windows UI backend diff --git a/basis/ui/x11/summary.txt b/basis/ui/x11/summary.txt deleted file mode 100644 index 046c83ad89..0000000000 --- a/basis/ui/x11/summary.txt +++ /dev/null @@ -1 +0,0 @@ -X11 UI backend diff --git a/basis/ui/x11/x11.factor b/basis/ui/x11/x11.factor deleted file mode 100755 index 2a622a6985..0000000000 --- a/basis/ui/x11/x11.factor +++ /dev/null @@ -1,297 +0,0 @@ -! Copyright (C) 2005, 2008 Eduardo Cavazos and Slava Pestov -! See http://factorcode.org/license.txt for BSD license. -USING: accessors alien alien.c-types arrays ui ui.gadgets -ui.gestures ui.backend ui.clipboards ui.gadgets.worlds ui.render -ui.event-loop assocs kernel math namespaces opengl sequences -strings x11.xlib x11.events x11.xim x11.glx x11.clipboard -x11.constants x11.windows io.encodings.string io.encodings.ascii -io.encodings.utf8 combinators combinators.short-circuit command-line -math.vectors classes.tuple opengl.gl threads math.geometry.rect -environment ascii ; -IN: ui.x11 - -SINGLETON: x11-ui-backend - -: XA_NET_WM_NAME ( -- atom ) "_NET_WM_NAME" x-atom ; - -TUPLE: x11-handle-base glx ; -TUPLE: x11-handle < x11-handle-base xic window ; -TUPLE: x11-pixmap-handle < x11-handle-base pixmap glx-pixmap ; - -C: x11-handle -C: x11-pixmap-handle - -M: world expose-event nip relayout ; - -M: world configure-event - over configured-loc >>window-loc - swap configured-dim >>dim - ! In case dimensions didn't change - relayout-1 ; - -CONSTANT: modifiers - { - { S+ HEX: 1 } - { C+ HEX: 4 } - { A+ HEX: 8 } - } - -CONSTANT: key-codes - H{ - { HEX: FF08 "BACKSPACE" } - { HEX: FF09 "TAB" } - { HEX: FF0D "RET" } - { HEX: FF8D "ENTER" } - { HEX: FF1B "ESC" } - { HEX: FFFF "DELETE" } - { HEX: FF50 "HOME" } - { HEX: FF51 "LEFT" } - { HEX: FF52 "UP" } - { HEX: FF53 "RIGHT" } - { HEX: FF54 "DOWN" } - { HEX: FF55 "PAGE_UP" } - { HEX: FF56 "PAGE_DOWN" } - { HEX: FF57 "END" } - { HEX: FF58 "BEGIN" } - { HEX: FFBE "F1" } - { HEX: FFBF "F2" } - { HEX: FFC0 "F3" } - { HEX: FFC1 "F4" } - { HEX: FFC2 "F5" } - { HEX: FFC3 "F6" } - { HEX: FFC4 "F7" } - { HEX: FFC5 "F8" } - { HEX: FFC6 "F9" } - } - -: key-code ( keysym -- keycode action? ) - dup key-codes at [ t ] [ 1string f ] ?if ; - -: event-modifiers ( event -- seq ) - XKeyEvent-state modifiers modifier ; - -: valid-input? ( string gesture -- ? ) - over empty? [ 2drop f ] [ - mods>> { f { S+ } } member? [ - [ { [ 127 = not ] [ CHAR: \s >= ] } 1&& ] all? - ] [ - [ { [ 127 = not ] [ CHAR: \s >= ] [ alpha? not ] } 1&& ] all? - ] if - ] if ; - -: key-down-event>gesture ( event world -- string gesture ) - dupd - handle>> xic>> lookup-string - [ swap event-modifiers ] dip key-code ; - -M: world key-down-event - [ key-down-event>gesture ] keep - [ propagate-key-gesture drop ] - [ 2over valid-input? [ nip user-input ] [ 3drop ] if ] - 3bi ; - -: key-up-event>gesture ( event -- gesture ) - dup event-modifiers swap 0 XLookupKeysym key-code ; - -M: world key-up-event - [ key-up-event>gesture ] dip propagate-key-gesture ; - -: mouse-event>gesture ( event -- modifiers button loc ) - [ event-modifiers ] - [ XButtonEvent-button ] - [ mouse-event-loc ] - tri ; - -M: world button-down-event - [ mouse-event>gesture [ ] dip ] dip - send-button-down ; - -M: world button-up-event - [ mouse-event>gesture [ ] dip ] dip - send-button-up ; - -: mouse-event>scroll-direction ( event -- pair ) - XButtonEvent-button { - { 4 { 0 -1 } } - { 5 { 0 1 } } - { 6 { -1 0 } } - { 7 { 1 0 } } - } at ; - -M: world wheel-event - [ [ mouse-event>scroll-direction ] [ mouse-event-loc ] bi ] dip - send-wheel ; - -M: world enter-event motion-event ; - -M: world leave-event 2drop forget-rollover ; - -M: world motion-event - [ [ XMotionEvent-x ] [ XMotionEvent-y ] bi 2array ] dip - move-hand fire-motion ; - -M: world focus-in-event - nip - dup handle>> xic>> XSetICFocus focus-world ; - -M: world focus-out-event - nip - dup handle>> xic>> XUnsetICFocus unfocus-world ; - -M: world selection-notify-event - [ handle>> window>> selection-from-event ] keep - user-input ; - -: supported-type? ( atom -- ? ) - { "UTF8_STRING" "STRING" "TEXT" } - [ x-atom = ] with any? ; - -: clipboard-for-atom ( atom -- clipboard ) - { - { XA_PRIMARY [ selection get ] } - { XA_CLIPBOARD [ clipboard get ] } - [ drop ] - } case ; - -: encode-clipboard ( string type -- bytes ) - XSelectionRequestEvent-target - XA_UTF8_STRING = utf8 ascii ? encode ; - -: set-selection-prop ( evt -- ) - dpy get swap - [ XSelectionRequestEvent-requestor ] keep - [ XSelectionRequestEvent-property ] keep - [ XSelectionRequestEvent-target ] keep - [ 8 PropModeReplace ] dip - [ - XSelectionRequestEvent-selection - clipboard-for-atom contents>> - ] keep encode-clipboard dup length XChangeProperty drop ; - -M: world selection-request-event - drop dup XSelectionRequestEvent-target { - { [ dup supported-type? ] [ drop dup set-selection-prop send-notify-success ] } - { [ dup "TARGETS" x-atom = ] [ drop dup set-targets-prop send-notify-success ] } - { [ dup "TIMESTAMP" x-atom = ] [ drop dup set-timestamp-prop send-notify-success ] } - [ drop send-notify-failure ] - } cond ; - -M: x11-ui-backend (close-window) ( handle -- ) - dup xic>> XDestroyIC - dup glx>> destroy-glx - window>> dup unregister-window - destroy-window ; - -M: world client-event - swap close-box? [ ungraft ] [ drop ] if ; - -: gadget-window ( world -- ) - dup window-loc>> over rect-dim glx-window - over "Factor" create-xic rot - 2dup window>> register-window - >>handle drop ; - -: wait-event ( -- event ) - QueuedAfterFlush events-queued 0 > [ - next-event dup - None XFilterEvent zero? [ drop wait-event ] unless - ] [ - ui-wait wait-event - ] if ; - -M: x11-ui-backend do-events - wait-event dup XAnyEvent-window window dup - [ handle-event ] [ 2drop ] if ; - -: x-clipboard@ ( gadget clipboard -- prop win ) - atom>> swap - find-world handle>> window>> ; - -M: x-clipboard copy-clipboard - [ x-clipboard@ own-selection ] keep - (>>contents) ; - -M: x-clipboard paste-clipboard - [ find-world handle>> window>> ] dip atom>> convert-selection ; - -: init-clipboard ( -- ) - XA_PRIMARY selection set-global - XA_CLIPBOARD clipboard set-global ; - -: set-title-old ( dpy window string -- ) - dup [ 127 <= ] all? [ XStoreName drop ] [ 3drop ] if ; - -: set-title-new ( dpy window string -- ) - [ XA_NET_WM_NAME XA_UTF8_STRING 8 PropModeReplace ] dip - utf8 encode dup length XChangeProperty drop ; - -M: x11-ui-backend set-title ( string world -- ) - handle>> window>> swap - [ dpy get ] 2dip [ set-title-old ] [ set-title-new ] 3bi ; - -M: x11-ui-backend set-fullscreen* ( ? world -- ) - handle>> window>> "XClientMessageEvent" - tuck set-XClientMessageEvent-window - swap _NET_WM_STATE_ADD _NET_WM_STATE_REMOVE ? - over set-XClientMessageEvent-data0 - ClientMessage over set-XClientMessageEvent-type - dpy get over set-XClientMessageEvent-display - "_NET_WM_STATE" x-atom over set-XClientMessageEvent-message_type - 32 over set-XClientMessageEvent-format - "_NET_WM_STATE_FULLSCREEN" x-atom over set-XClientMessageEvent-data1 - [ dpy get root get 0 SubstructureNotifyMask ] dip XSendEvent drop ; - -M: x11-ui-backend (open-window) ( world -- ) - dup gadget-window - handle>> window>> dup set-closable map-window ; - -M: x11-ui-backend raise-window* ( world -- ) - handle>> [ - dpy get swap window>> XRaiseWindow drop - ] when* ; - -M: x11-handle select-gl-context ( handle -- ) - dpy get swap - [ window>> ] [ glx>> ] bi glXMakeCurrent - [ "Failed to set current GLX context" throw ] unless ; - -M: x11-handle flush-gl-context ( handle -- ) - dpy get swap window>> glXSwapBuffers ; - -M: x11-pixmap-handle select-gl-context ( handle -- ) - dpy get swap - [ glx-pixmap>> ] [ glx>> ] bi glXMakeCurrent - [ "Failed to set current GLX context" throw ] unless ; - -M: x11-pixmap-handle flush-gl-context ( handle -- ) - drop ; - -M: x11-ui-backend (open-offscreen-buffer) ( world -- ) - dup dim>> glx-pixmap >>handle drop ; -M: x11-ui-backend (close-offscreen-buffer) ( handle -- ) - dpy get swap - [ glx-pixmap>> glXDestroyGLXPixmap ] - [ pixmap>> XFreePixmap drop ] - [ glx>> glXDestroyContext ] 2tri ; - -M: x11-ui-backend offscreen-pixels ( world -- alien w h ) - [ [ dim>> ] [ handle>> pixmap>> ] bi pixmap-bits ] [ dim>> first2 ] bi ; - -M: x11-ui-backend ui ( -- ) - [ - f [ - [ - init-clipboard - start-ui - event-loop - ] with-xim - ] with-x - ] ui-running ; - -M: x11-ui-backend beep ( -- ) - dpy get 100 XBell drop ; - -x11-ui-backend ui-backend set-global - -[ "DISPLAY" os-env "ui" "listener" ? ] -main-vocab-hook set-global diff --git a/extra/annotations/annotations.factor b/extra/annotations/annotations.factor index 6685e4e036..b3eccad6a3 100644 --- a/extra/annotations/annotations.factor +++ b/extra/annotations/annotations.factor @@ -1,6 +1,7 @@ ! (c)2009 Joe Groff, Doug Coleman. see BSD license USING: accessors combinators.short-circuit definitions functors -kernel lexer namespaces parser prettyprint sequences words ; +kernel lexer namespaces parser prettyprint tools.crossref +sequences words ; IN: annotations << diff --git a/extra/bunny/outlined/outlined.factor b/extra/bunny/outlined/outlined.factor index c91a895ce1..7491ed8bcb 100755 --- a/extra/bunny/outlined/outlined.factor +++ b/extra/bunny/outlined/outlined.factor @@ -1,6 +1,6 @@ USING: arrays bunny.model bunny.cel-shaded continuations destructors kernel math multiline opengl opengl.shaders -opengl.framebuffers opengl.gl opengl.demo-support fry +opengl.framebuffers opengl.gl opengl.textures opengl.demo-support fry opengl.capabilities sequences ui.gadgets combinators accessors macros locals ; IN: bunny.outlined diff --git a/extra/color-picker/color-picker.factor b/extra/color-picker/color-picker.factor index 69c21b10f7..d7919aafd1 100755 --- a/extra/color-picker/color-picker.factor +++ b/extra/color-picker/color-picker.factor @@ -2,8 +2,8 @@ ! See http://factorcode.org/license.txt for BSD license. USING: kernel math math.functions math.parser models models.arrow models.range models.product sequences ui -ui.gadgets ui.gadgets.frames ui.gadgets.labels ui.gadgets.packs -ui.gadgets.sliders ui.render math.rectangles accessors +ui.gadgets ui.gadgets.tracks ui.gadgets.labels ui.gadgets.packs +ui.gadgets.sliders ui.pens.solid ui.render math.rectangles accessors ui.gadgets.grids colors ; IN: color-picker @@ -12,7 +12,7 @@ IN: color-picker TUPLE: color-preview < gadget ; : ( model -- gadget ) - color-preview new-gadget + color-preview new swap >>model { 100 100 } >>dim ; @@ -32,16 +32,16 @@ M: color-preview model-changed bi ; : ( -- gadget ) - + vertical { 5 5 } >>gap - [ @top grid-add ] + [ f track-add ] [ - [ @center grid-add ] + [ 1 track-add ] [ [ [ truncate number>string ] map " " join ] - @bottom grid-add + f track-add ] bi ] bi* ; diff --git a/extra/demos/demos.factor b/extra/demos/demos.factor index b411df1e30..fd7aafb601 100644 --- a/extra/demos/demos.factor +++ b/extra/demos/demos.factor @@ -10,7 +10,7 @@ IN: demos : demo-vocabs ( -- seq ) "demos" tagged [ second ] map concat [ name>> ] map ; : ( vocab-name -- button ) - dup '[ drop [ _ run ] call-listener ] { 0 0 } >>align ; + dup '[ drop [ _ run ] call-listener ] ; : ( -- gadget ) 1 >>fill demo-vocabs [ add-gadget ] each ; diff --git a/extra/game-input/game-input-tests.factor b/extra/game-input/game-input-tests.factor new file mode 100644 index 0000000000..a5c79e0268 --- /dev/null +++ b/extra/game-input/game-input-tests.factor @@ -0,0 +1,7 @@ +IN: game-input.tests +USING: game-input tools.test kernel system ; + +os windows? os macosx? or [ + [ ] [ open-game-input ] unit-test + [ ] [ close-game-input ] unit-test +] when \ No newline at end of file diff --git a/extra/images/viewer/viewer.factor b/extra/images/viewer/viewer.factor index faed31a0e5..b920b60430 100644 --- a/extra/images/viewer/viewer.factor +++ b/extra/images/viewer/viewer.factor @@ -19,7 +19,7 @@ M: image-gadget draw-gadget* ( gadget -- ) image>> draw-image ; : ( image -- gadget ) - \ image-gadget new-gadget + \ image-gadget new swap >>image ; : image-window ( path -- gadget ) diff --git a/extra/joystick-demo/joystick-demo.factor b/extra/joystick-demo/joystick-demo.factor index c7a774af31..3f24a5bb39 100755 --- a/extra/joystick-demo/joystick-demo.factor +++ b/extra/joystick-demo/joystick-demo.factor @@ -1,7 +1,7 @@ USING: ui ui.gadgets sequences kernel arrays math colors -ui.render math.vectors accessors fry ui.gadgets.packs game-input -ui.gadgets.labels ui.gadgets.borders alarms -calendar locals strings ui.gadgets.buttons +colors.constants ui.render ui.pens.polygon ui.pens.solid math.vectors +accessors fry ui.gadgets.packs game-input ui.gadgets.labels +ui.gadgets.borders alarms calendar locals strings ui.gadgets.buttons combinators math.parser assocs threads ; IN: joystick-demo @@ -56,11 +56,11 @@ CONSTANT: pov-polygons [ z-indicator>> (>>loc) ] 2bi* ; : move-pov ( gadget pov -- ) - swap pov>> [ interior>> -rot = [ gray ] [ white ] if >>color drop ] + swap pov>> [ interior>> -rot = COLOR: gray COLOR: white ? >>color drop ] with assoc-each ; :: add-pov-gadget ( gadget direction polygon -- gadget direction gadget ) - gadget white polygon [ add-gadget ] keep + gadget COLOR: white polygon [ add-gadget ] keep direction swap ; : add-pov-gadgets ( gadget -- gadget ) @@ -69,14 +69,14 @@ CONSTANT: pov-polygons : ( -- gadget ) axis-gadget new add-pov-gadgets - black [ >>z-indicator ] [ add-gadget ] bi - red [ >>indicator ] [ add-gadget ] bi + COLOR: black [ >>z-indicator ] [ add-gadget ] bi + COLOR: red [ >>indicator ] [ add-gadget ] bi dup [ 0.0 0.0 0.0 move-axis ] [ f move-pov ] bi ; TUPLE: joystick-demo-gadget < pack axis raxis controller buttons alarm ; : add-gadget-with-border ( parent child -- parent ) - { 2 2 } gray >>boundary add-gadget ; + { 2 2 } COLOR: gray >>boundary add-gadget ; : add-controller-label ( gadget controller -- gadget ) [ >>controller ] [ product-string