-
Notifications
You must be signed in to change notification settings - Fork 1
/
exports.lisp
35 lines (26 loc) · 1.18 KB
/
exports.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
(in-package #:net.hexapodia.image)
(defgeneric export-image (image sink &key &allow-other-keys))
(defun export-to-file (image name &key (format :gif) comment)
(case format
(:gif (export-to-gif image name comment))
(:png (export-to-png image name))))
(defun export-to-stream (image stream &key format comment)
(case format
(:gif (write-gif-to-stream image stream comment))
(:png (write-png-to-stream image stream))))
(defmethod export-image (image (filename string) &key format (comment "a"))
(let ((format (or format
(format-from-name filename))))
(export-to-file image filename :format format :comment comment)))
(defmethod export-image (image (filename pathname) &key format (comment "a"))
(let ((format (or format
(format-from-name filename))))
(export-to-file image filename :format format :comment comment)))
#+support-clx
(defmethod export-image (image (sink xlib:drawable) &key)
(export-to-x11 image sink))
#+support-clx
(defmethod export-image (image (sink xlib:display) &key)
(export-to-x11 image sink))
(defmethod export-image (image (sink stream) &key (format :gif) (comment "a"))
(export-to-file image sink :format format :comment comment))