X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/9899d01a0ccec166e04caa60657a44e614be50cd..f172d0f8f64c51c1de47f23b637cc486833bbd1b:/lisp/image.el diff --git a/lisp/image.el b/lisp/image.el index 3b0dd87d1e..c824b1824f 100644 --- a/lisp/image.el +++ b/lisp/image.el @@ -1,7 +1,7 @@ ;;; image.el --- image API ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, -;; 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +;; 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. ;; Maintainer: FSF ;; Keywords: multimedia @@ -34,7 +34,7 @@ (defconst image-type-header-regexps - '(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm) + `(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm) ("\\`P[1-6][[:space:]]+\\(?:#.*[[:space:]]+\\)*[0-9]+[[:space:]]+[0-9]+" . pbm) ("\\`GIF8[79]a" . gif) ("\\`\x89PNG\r\n\x1a\n" . png) @@ -43,7 +43,15 @@ static char \\1_bits" . xbm) ("\\`\\(?:MM\0\\*\\|II\\*\0\\)" . tiff) ("\\`[\t\n\r ]*%!PS" . postscript) - ("\\`\xff\xd8" . (image-jpeg-p . jpeg))) + ("\\`\xff\xd8" . (image-jpeg-p . jpeg)) + (,(let* ((incomment-re "\\(?:[^-]\\|-[^-]\\)") + (comment-re (concat "\\(?:!--" incomment-re "*-->[ \t\r\n]*<\\)"))) + (concat "\\(?:<\\?xml[ \t\r\n]+[^>]*>\\)?[ \t\r\n]*<" + comment-re "*" + "\\(?:!DOCTYPE[ \t\r\n]+[^>]*>[ \t\r\n]*<[ \t\r\n]*" comment-re "*\\)?" + "[Ss][Vv][Gg]")) + . svg) + ) "Alist of (REGEXP . IMAGE-TYPE) pairs used to auto-detect image types. When the first bytes of an image file match REGEXP, it is assumed to be of image type IMAGE-TYPE if IMAGE-TYPE is a symbol. If not a symbol, @@ -60,7 +68,9 @@ a non-nil value, TYPE is the image's type.") ("\\.pbm\\'" . pbm) ("\\.xbm\\'" . xbm) ("\\.ps\\'" . postscript) - ("\\.tiff?\\'" . tiff)) + ("\\.tiff?\\'" . tiff) + ("\\.svgz?\\'" . svg) + ) "Alist of (REGEXP . IMAGE-TYPE) pairs used to identify image files. When the name of an image file match REGEXP, it is assumed to be of image type IMAGE-TYPE.") @@ -77,6 +87,7 @@ be of image type IMAGE-TYPE.") (xpm . nil) (jpeg . maybe) (tiff . maybe) + (svg . maybe) (postscript . nil)) "Alist of (IMAGE-TYPE . AUTODETECT) pairs used to auto-detect image files. \(See `image-type-auto-detected-p'). @@ -312,7 +323,7 @@ Optional DATA-P non-nil means SOURCE is a string containing image data." (or (image-type-from-file-header source) (image-type-from-file-name source)))) (or type (error "Cannot determine image type"))) - (or (memq type image-types) + (or (memq type (and (boundp 'image-types) image-types)) (error "Invalid image type `%s'" type)) type) @@ -327,15 +338,17 @@ Image types are symbols like `xbm' or `jpeg'." ;;;###autoload (defun image-type-auto-detected-p () - "Return t iff the current buffer contains an auto-detectable image. + "Return t if the current buffer contains an auto-detectable image. This function is intended to be used from `magic-fallback-mode-alist'. The buffer is considered to contain an auto-detectable image if its beginning matches an image type in `image-type-header-regexps', -and that image type is present in `image-type-auto-detectable'." +and that image type is present in `image-type-auto-detectable' with a +non-nil value. If that value is non-nil, but not t, then the image type +must be available." (let* ((type (image-type-from-buffer)) (auto (and type (cdr (assq type image-type-auto-detectable))))) - (and type + (and auto (or (eq auto t) (image-type-available-p type))))) @@ -352,7 +365,12 @@ Optional PROPS are additional image attributes to assign to the image, like, e.g. `:mask MASK'. Value is the image created, or nil if images of type TYPE are not supported. -Images should not be larger than specified by `max-image-size'." +Images should not be larger than specified by `max-image-size'. + +Image file names that are not absolute are searched for in the +\"images\" sub-directory of `data-directory' and +`x-bitmap-file-path' (in that order)." + ;; It is x_find_image_file in image.c that sets the search path. (setq type (image-type file-or-data type data-p)) (when (image-type-available-p type) (append (list 'image :type type (if data-p :data :file) file-or-data)