Commit 349c034d authored by Gerd Moellmann's avatar Gerd Moellmann
Browse files

(find-image): New function.

(defimage): Rewritten to find image at load time.
parent d7d47268
...@@ -176,8 +176,8 @@ BUFFER nil or omitted means use the current buffer." ...@@ -176,8 +176,8 @@ BUFFER nil or omitted means use the current buffer."
;;;###autoload ;;;###autoload
(defmacro defimage (symbol specs &optional doc) (defun find-image (specs)
"Define SYMBOL as an image. "Find an image, choosing one of a list of image specifications.
SPECS is a list of image specifications. DOC is an optional SPECS is a list of image specifications. DOC is an optional
documentation string. documentation string.
...@@ -189,12 +189,7 @@ least contain the properties `:type TYPE' and either `:file FILE' or ...@@ -189,12 +189,7 @@ least contain the properties `:type TYPE' and either `:file FILE' or
e.g. `xbm', FILE is the file to load the image from, and DATA is a e.g. `xbm', FILE is the file to load the image from, and DATA is a
string containing the actual image data. The first image string containing the actual image data. The first image
specification whose TYPE is supported, and FILE exists, is used to specification whose TYPE is supported, and FILE exists, is used to
define SYMBOL. define SYMBOL."
Example:
(defimage test-image ((:type xpm :file \"~/test1.xpm\")
(:type xbm :file \"~/test1.xbm\")))"
(let (image) (let (image)
(while (and specs (null image)) (while (and specs (null image))
(let* ((spec (car specs)) (let* ((spec (car specs))
...@@ -216,7 +211,30 @@ Example: ...@@ -216,7 +211,30 @@ Example:
((not (null data)) ((not (null data))
(setq image (cons 'image spec))))) (setq image (cons 'image spec)))))
(setq specs (cdr specs)))) (setq specs (cdr specs))))
`(defvar ,symbol ',image ,doc))) image))
;;;###autoload
(defmacro defimage (symbol specs &optional doc)
"Define SYMBOL as an image.
SPECS is a list of image specifications. DOC is an optional
documentation string.
Each image specification in SPECS is a property list. The contents of
a specification are image type dependent. All specifications must at
least contain the properties `:type TYPE' and either `:file FILE' or
`:data DATA', where TYPE is a symbol specifying the image type,
e.g. `xbm', FILE is the file to load the image from, and DATA is a
string containing the actual image data. The first image
specification whose TYPE is supported, and FILE exists, is used to
define SYMBOL.
Example:
(defimage test-image ((:type xpm :file \"~/test1.xpm\")
(:type xbm :file \"~/test1.xbm\")))"
`(defvar ,symbol (find-image ',specs) ,doc))
(provide 'image) (provide 'image)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment