;; Visualization experiments (import (chicken io) (chicken process) (chicken port) (chicken string)) ;; Generic Wish interface (define wish-in '()) (define wish-out '()) (define (wish-startup w h) (let-values (((in-port out-port id) (process (conc "wish -geometry " w "x" h)))) (set! wish-in in-port) (set! wish-out out-port))) (define (wish-shutdown) (wish% "destroy .") (close-input-port wish-in) (close-output-port wish-out)) (define (wish% . args) (with-output-to-port wish-out (lambda () (apply print args)))) ;; High-level visualization commands (define (visualizer-open w h) (wish-startup w h) (wish% "canvas .c -width " w " -height " h " -bg black") (wish% "pack .c") (wish% "image create photo core -width " w " -height " h " -palette 256/256/256") (wish% ".c create image 0 0 -anchor nw -image core")) (define (set-pixel x y col) (wish% "core put " col " -to " x " " y)) (define (visualizer-close) (wish-shutdown)) ;; Test code (visualizer-open 640 480) (set-pixel 10 10 "red") (sleep 3) (visualizer-close)