RosettaCodeData/Task/Bitmap-Read-a-PPM-file/Racket/bitmap-read-a-ppm-file.rkt
2023-07-01 13:44:08 -04:00

22 lines
704 B
Racket

#lang racket
(require racket/draw)
(define (read-ppm port)
(parameterize ([current-input-port port])
(define magic (read))
(define width (read))
(define height (read))
(define maxcol (read))
(define bm (make-object bitmap% width height))
(define dc (new bitmap-dc% [bitmap bm]))
(send dc set-smoothing 'unsmoothed)
(define (adjust v) (* 255 (/ v maxcol)))
(for/list ([x width])
(for/list ([y height])
(define red (read))
(define green (read))
(define blue (read))
(define color (make-object color% (adjust red) (adjust green) (adjust blue)))
(send dc set-pen color 1 'solid)
(send dc draw-point x y)))
bm))