interpreted/compiled added by alexshendi on Sun Sep 13 19:44:40 2015
;; Output: ;; Interpreted (csi -s) Compiled ;; (csi -s) (csc -d2 -strict-types -specialize) ;; 0 0 ;; 1 1 ;; 2 2 ;; 3 3 ;; 4 4 ;; 5 5 ;; 6 6 ;; 7 7 ;; 8 8 ;; 8 0 (define (make-color r g b a) (vector r g b a)) (define (color-red c) (vector-ref c 0)) (define (color-green c) (vector-ref c 1)) (define (color-blue c) (vector-ref c 2)) (define (color-alpha c) (vector-ref c 3)) (define (read-texture filename factor) (with-input-from-file filename (lambda () (let ((header (reverse (let loop ((i 4) (l '())) (if (zero? i) (begin (read-char) l) (loop (- i 1) (cons (read) l))))))) ; (read-char) (let ((len (* (cadr header) (caddr header)))) (let ((texture (make-vector len))) (let loop ((i 0)) (if (= i len) texture (let* ((r (quotient (char->integer (read-char)) factor)) (g (quotient (char->integer (read-char)) factor)) (b (quotient (char->integer (read-char)) factor))) (vector-set! texture i (make-color r g b 255)) (loop (+ i 1))))))))))) (define (read-all-textures factor) (let ((l '()) (textures (list "resources/bluestone.ppm" "resources/colorstone.ppm" "resources/eagle.ppm" "resources/greystone.ppm" "resources/mossy.ppm" "resources/purplestone.ppm" "resources/redbrick.ppm" "resources/wood.ppm"))) (for-each (lambda (s) (set! l (cons (read-texture s factor) l)) (display (length l) (current-error-port)) (newline (current-error-port))) textures) (display (length l) (current-error-port)) (newline (current-error-port)) (list->vector (reverse l)))) (define *textures* (read-all-textures 1))