Welcome to the CHICKEN Scheme pasting service

sample xlib painter added by dsp on Wed May 9 21:30:38 2012

 (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))))))

Your annotation:

Enter a new annotation:

Your nick:
The title of your paste:
Your paste (mandatory) :
Which procedure returns the number of elements in a list?
Visually impaired? Let me spell it for you (wav file) download WAV