;;; 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 (image-format pnm image) (export make-pnm-image pnm-image? pnm-image-type pnm-image-width pnm-image-height pnm-image-maxval pnm-image-data pnm-image-pixel-getter pnm-image-pixel-setter pnm-image-ref pnm-image-set!) (import (scheme base) (scheme case-lambda)) (begin (define-record-type (make-pnm-image type width height maxval data pixel-getter pixel-setter) pnm-image? (type pnm-image-type) (width pnm-image-width) (height pnm-image-height) (maxval pnm-image-maxval) (data pnm-image-data) (pixel-getter pnm-image-pixel-getter) (pixel-setter pnm-image-pixel-setter)) (define (pnm-image-ref pnm-image x y) ((pnm-image-pixel-getter pnm-image) x y)) (define pnm-image-set! (case-lambda ((pnm-image x y v) ((pnm-image-pixel-setter pnm-image) x y v)) ((pnm-image x y r g b) ((pnm-image-pixel-setter pnm-image) x y r g b))))))