aboutsummaryrefslogtreecommitdiff
path: root/pnm/image.scm
diff options
context:
space:
mode:
authorMasaya Tojo <masaya@tojo.tokyo>2024-08-03 17:09:05 +0900
committerMasaya Tojo <masaya@tojo.tokyo>2024-08-03 17:09:05 +0900
commitf7fed1949869f64c4f71936d12c8ae032e8f9005 (patch)
tree42a9065e0a31adb42136363d159db82c7285f718 /pnm/image.scm
parent831e793851d6a3be1b3fb0e6050af84715618aca (diff)
Split pnm/pgm.scm and pnm/ppm.scm to organize interfaces
Diffstat (limited to 'pnm/image.scm')
-rw-r--r--pnm/image.scm35
1 files changed, 35 insertions, 0 deletions
diff --git a/pnm/image.scm b/pnm/image.scm
new file mode 100644
index 0000000..449afc6
--- /dev/null
+++ b/pnm/image.scm
@@ -0,0 +1,35 @@
+(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-ref
+ image-set!)
+ (import (scheme base)
+ (scheme case-lambda))
+ (begin
+ (define-record-type <image>
+ (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-ref image x y)
+ ((image-pixel-getter image) x y))
+
+ (define image-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))))))