factor/library/x11/ui.factor

49 lines
1.2 KiB
Factor
Raw Normal View History

2006-03-20 00:05:04 -05:00
IN: x11
USING: arrays errors freetype gadgets gadgets-launchpad
2006-03-20 00:05:04 -05:00
gadgets-layouts gadgets-listener hashtables kernel
kernel-internals math namespaces opengl sequences x11 ;
M: world handle-expose-event ( event world -- )
nip draw-world ;
2006-03-20 00:05:04 -05:00
M: world handle-resize-event ( event world -- )
>r
dup XConfigureEvent-width swap XConfigureEvent-height 0
3array
r> set-gadget-dim ;
: gadget-window ( world -- window )
dup rect-dim first2 choose-visual [
create-window 2dup windows get set-hash dup map-window
] keep create-context 2array swap set-world-handle ;
IN: gadgets
: repaint-handle ( handle -- )
drop ; ! windows get hash draw-glx-world ;
: in-window ( gadget status dim title -- )
>r <world> r> drop gadget-window ;
: select-gl-context ( handle -- )
second >r dpy get swap r> glXMakeCurrent
[ "Failed to set current GLX context" throw ] unless ;
: flush-gl-context ( handle -- )
dpy get swap first glXSwapBuffers ;
2006-03-20 00:05:04 -05:00
IN: shells
: ui ( -- )
[
f [
launchpad-window
listener-window
event-loop
] with-x
] with-freetype ;
IN: kernel
! : default-shell "DISPLAY" getenv empty? "tty" "ui" ? ;