(import scheme (chicken base) cairo miscmacros (chicken random))
(define *rotation* 0)
(define *delta* 2.7)
(define *width* 18)
(define *height* 26)
(define *box-size* 15)
(define s (cairo-pdf-surface-create "schotter.pdf" 842 1190)) ; A3
(define c (cairo-create s))
;; use millimeters as units from here on
(cairo-scale c (/ 72 25.4) (/ 72 25.4))
(cairo-set-source-rgba c 1 0 0 1)
(dotimes (y *height*)
(dotimes (x *width*)
(cairo-save c)
(cairo-set-line-width c .3)
(cairo-translate c (+ 12 (* x *box-size*)) (+ 16 (* y *box-size*)))
(cairo-rotate c (* (if (> 1 (pseudo-random-integer 2)) -1 1)
(/ cairo-pi 180)
(* *rotation* (pseudo-random-real))))
(cairo-rectangle c 0 0 *box-size* *box-size*)
(cairo-set-source-rgba c 0 0 0 1)
(cairo-stroke c)
(cairo-restore c))
(set! *rotation* (+ *rotation* *delta*)))
(cairo-surface-show-page s)
(cairo-destroy c)
(cairo-surface-finish s)
(cairo-surface-destroy s)