changeset 28721:b4ea18c92e38

(find-image): New function. (defimage): Rewritten to find image at load time.
author Gerd Moellmann <gerd@gnu.org>
date Wed, 26 Apr 2000 17:34:09 +0000
parents f8379b011476
children a4c4a68597f5
files lisp/image.el
diffstat 1 files changed, 27 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/image.el	Wed Apr 26 17:33:40 2000 +0000
+++ b/lisp/image.el	Wed Apr 26 17:34:09 2000 +0000
@@ -176,8 +176,8 @@
 
 
 ;;;###autoload
-(defmacro defimage (symbol specs &optional doc)
-  "Define SYMBOL as an image.
+(defun find-image (specs)
+  "Find an image, choosing one of a list of image specifications.
 
 SPECS is a list of image specifications.  DOC is an optional
 documentation string.
@@ -189,12 +189,7 @@
 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\")))"
+define SYMBOL."
   (let (image)
     (while (and specs (null image))
       (let* ((spec (car specs))
@@ -216,7 +211,30 @@
 		((not (null data))
 		 (setq image (cons 'image spec)))))
 	(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)