;;; R7RS-PNM --- Library for reading and writing PNM (Portable Any Map) files for R7RS ;;; Copyright © 2024 Masaya Tojo ;;; ;;; This file is part of R7RS-PNM. ;;; ;;; R7RS-PNM is free software: you can redistribute it and/or modify it ;;; under the terms of the GNU Lesser General Public License as published ;;; by the Free Software Foundation, either version 3 of the License, or ;;; (at your option) any later version. ;;; ;;; R7RS-PNM is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU Lesser General Public License for more details. ;;; ;;; You should have received a copy of the GNU Lesser General Public License ;;; along with R7RS-PNM. If not, see . (define-library (pnm image) (export make-image image? image-type image-width image-height image-maxval image-data image-pixel-getter image-pixel-setter image-pixel-ref image-pixel-set!) (import (scheme base) (scheme case-lambda)) (begin (define-record-type (make-image type width height maxval data pixel-getter pixel-setter) image? (type image-type) (width image-width) (height image-height) (maxval image-maxval) (data image-data) (pixel-getter image-pixel-getter) (pixel-setter image-pixel-setter)) (define (image-pixel-ref image x y) ((image-pixel-getter image) x y)) (define image-pixel-set! (case-lambda ((image x y v) ((image-pixel-setter image) x y v)) ((image x y r g b) ((image-pixel-setter image) x y r g b))))))