aboutsummaryrefslogtreecommitdiff
path: root/pnm/write.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/write.scm
parent831e793851d6a3be1b3fb0e6050af84715618aca (diff)
Split pnm/pgm.scm and pnm/ppm.scm to organize interfaces
Diffstat (limited to 'pnm/write.scm')
-rw-r--r--pnm/write.scm25
1 files changed, 25 insertions, 0 deletions
diff --git a/pnm/write.scm b/pnm/write.scm
new file mode 100644
index 0000000..038bf82
--- /dev/null
+++ b/pnm/write.scm
@@ -0,0 +1,25 @@
+(define-library (pnm write)
+ (export image-write)
+ (import (scheme base)
+ (pnm image))
+ (begin
+ (define (image-write image out)
+ (define (write-string-u8 str)
+ (string-for-each (lambda (c) (write-u8 (char->integer c) out))
+ str))
+ (case (image-type image)
+ ((ppm)
+ (write-string-u8 "P6\n"))
+ ((pgm)
+ (write-string-u8 "P5\n"))
+ (else
+ (error "(pnm write) pnm-write: Not supported type" (image-type image))))
+ (write-string-u8 (number->string (image-width image)))
+ (write-string-u8 "\n")
+ (write-string-u8 (number->string (image-height image)))
+ (write-string-u8 "\n")
+ (case (image-type image)
+ ((pgm ppm)
+ (write-string-u8 (number->string (image-maxval image)))
+ (write-string-u8 "\n")))
+ (write-bytevector (image-data image) out))))