scx/scheme/examples/hello.scm

62 lines
1.6 KiB
Scheme
Executable File

#!/bin/sh
../../scx <<EOF
,batch on
,open xlib
(define (hello text)
(let* ((dpy (open-display))
(cm (copy-colormap-and-free (display-default-colormap dpy)))
;; many ways to get color in your progs.
(black (black-pixel dpy))
(white (white-pixel dpy))
(blue (alloc-color! cm (make-color 0 0 1)))
(green (alloc-named-color cm "#00FF00"))
(red (alloc-named-color cm 'red))
(win (create-window
(display-default-root-window dpy)
100 200 300 200 10
'copy-from-parent 'copy-from-parent 'copy-from-parent
(quasiquote
((,(set-window-attribute event-mask) . (exposure button-press))
(,(set-window-attribute background-pixel) . ,white)
(,(set-window-attribute colormap) . ,cm)))))
(gc (create-gcontext
win
(list (cons (gc-value background) white)
(cons (gc-value foreground) black))))
(font (open-font dpy "*-new century schoolbook-bold-r*24*"))
(font2 (open-font dpy "*times*18*")))
(set-wm-name! win '("scx Hello World Program"))
(map-window win)
(let event-loop ()
(display-flush-output dpy)
(let ((e (wait-event dpy)))
(if
(case (event-type e)
((expose)
(set-gcontext-font! gc font)
(set-gcontext-foreground! gc black)
(draw-poly-text win gc 10 25 text '1-byte)
(set-gcontext-foreground! gc blue)
(draw-poly-text win gc 20 50 (list font text) '1-byte)
(set-gcontext-foreground! gc red)
(set-gcontext-font! gc font2)
(draw-image-text win gc 30 75 text '1-byte)
#t)
(else #f))
(event-loop)
#f)))
(close-display dpy)))
(hello "Hello World!")
,exit
EOF