(let ((display (xopendisplay #f))) (assert display) (let* ((screen (xdefaultscreen display)) (root (xrootwindow display screen)) (window (xcreatesimplewindow display root 100 200 300 50 0 (xblackpixel display screen) (xwhitepixel display screen)))) (assert window) (let ((font (xloadfont display "10x20"))) (assert font) (let ((gc (xcreategc display window 0 #f)) (event (make-xevent)) (depth (xdefaultdepth display screen)) (ts1 (make-xsegment)) (ts2 (make-xsegment))) (let ((painter (lambda (x y s1 s2) (xsetforeground display gc (xblackpixel display screen)) (xsetbackground display gc (xwhitepixel display screen)) (xsetfunction display gc GXCOPY) (xsetfont display gc font) (xselectinput display window (bitwise-ior EXPOSUREMASK BUTTONPRESSMASK)) (xmapwindow display window) (xnextevent display event) (xdrawstring display window gc 100 30 "Paranoia is being computed..." 28) (xdrawrectangle display window gc x y s1 s2) (set-xsegment-x1! ts1 10) (set-xsegment-x2! ts1 222) (set-xsegment-y1! ts1 30) (set-xsegment-y2! ts1 10) (set-xsegment-x1! ts2 22) (set-xsegment-x2! ts2 130) (set-xsegment-y1! ts2 333) (set-xsegment-y2! ts2 129) ;;THIS LINE HERE NEEDS a C_POINTER not a list (xdrawsegments display window gc (pointer ts1 ts2) 2) (letrec ((leloop (lambda (num) (cond ((< num 10) (xdrawarc display window gc x y (/ s1 num) (/ s2 num) 0 (/ 19000 num)) ;(xdrawline display window gc (+ x (/ x num)) (+ y (/ y num)) (/ s1 2) (/ s2 2)) (if (> num 2) (xdrawrectangle display window gc (+ x (/ s1 num)) (+ y (/ s2 num)) (/ s1 num ) (/ s2 num ))) (leloop (+ num 1))))))) (leloop 1)) (xflush display) (xnextevent display event)))) (painter 90 500 200 200))))))