;;; Maintainer: MORIOKA Tomohiko <morioka@jaist.ac.jp>
;;; Created: 1995/12/15
;;; Version:
-;;; $Id: tm-image.el,v 4.0 1996/01/31 17:15:55 morioka Exp $
+;;; $Id: tm-image.el,v 4.6 1996/02/13 17:56:43 morioka Exp $
;;;
;;; Keywords: mail, news, MIME, multimedia, image, picture
;;;
"image/x-tiff" "image/x-pic" "image/x-mag" "image/x-xbm"))
(defun bitmap-read-xbm (file)
- (let ((gl (make-glyph file)))
+ (let (gl)
+ (while (progn
+ (setq gl (make-glyph file))
+ (eq (image-instance-type (glyph-image-instance gl))
+ 'text)
+ ))
(make-annotation gl (point) 'text)
))
+
+ (defvar mime-preview/x-face-function
+ (function mime-preview/x-face-function-for-xemacs))
)
((boundp 'MULE)
(require 'bitmap)
(defvar tm-image/inline-image-types '("image/x-mag" "image/x-xbm"))
+
+ (defvar mime-preview/x-face-function
+ (function mime-preview/x-face-function-for-mule))
))
(defvar mime-viewer/shell-command "/bin/sh")
("image/x-mag" . "magtoppm < %s | ppmtoxpm > %s")
))
+(defvar mime-viewer/x-face-to-xbm-command
+ (concat mime-viewer/x-face-to-pbm-command " | pbmtoxbm"))
+
+(add-hook 'mime-viewer/content-header-filter-hook
+ mime-preview/x-face-function)
+
+(defun mime-preview/x-face-function-for-xemacs ()
+ (save-restriction
+ (narrow-to-region (point-min) (re-search-forward "^$" nil t))
+ (goto-char (point-min))
+ (if (re-search-forward "^X-Face:[ \t]*" nil t)
+ (let ((beg (match-end 0))
+ (end (rfc822/field-end))
+ (xbm-file
+ (make-temp-name (expand-file-name "tmxf" mime/tmp-dir))
+ ))
+ (call-process-region
+ beg end "sh" nil 0 nil
+ "-c"
+ (format "%s > %s"
+ mime-viewer/x-face-to-xbm-command
+ xbm-file))
+ (while (not (file-exists-p xbm-file)))
+ (delete-region beg end)
+ (bitmap-read-xbm xbm-file)
+ (condition-case nil
+ (delete-file xbm-file)
+ (error nil))
+ ))))
+
+(defun mime-preview/x-face-function-for-mule ()
+ (save-restriction
+ (narrow-to-region (point-min) (re-search-forward "^$" nil t))
+ (goto-char (point-min))
+ (if (re-search-forward "^X-Face:[ \t]*" nil t)
+ (let ((p (match-beginning 0))
+ (beg (match-end 0))
+ (end (rfc822/field-end))
+ (xbm-file
+ (concat
+ (make-temp-name (expand-file-name "tmxf" mime/tmp-dir))
+ ".xbm")
+ ))
+ (if (< end (point-max))
+ (setq end (1+ end))
+ )
+ (while (progn
+ (call-process-region
+ beg end "sh" nil 0 nil
+ "-c"
+ (format "%s > %s"
+ mime-viewer/x-face-to-xbm-command
+ xbm-file))
+ (not (file-exists-p xbm-file))
+ ))
+ (save-restriction
+ (narrow-to-region p end)
+ (delete-region p end)
+ (goto-char p)
+ (while (progn
+ (condition-case nil
+ (bitmap-read-xbm xbm-file)
+ (error nil))
+ (kill-buffer
+ (some-element
+ (function
+ (lambda (buf)
+ (string-equal (buffer-file-name buf) xbm-file)
+ ))
+ (buffer-list)))
+ (= (point-min) (point-max))
+ ))
+ (goto-char p)
+ (insert "X-Face: ")
+ (while (re-search-forward "^." nil t)
+ (goto-char (match-beginning 0))
+ (insert " ")
+ ))
+ (condition-case nil
+ (delete-file xbm-file)
+ (error nil))
+ ))))
+
;;; @ content filter for images
;;;
)
(setq gl (make-glyph xbm-file))
(setq annot (make-annotation gl (point) 'text))
- (delete-file orig-file)
- (delete-file xbm-file)
+ (unwind-protect
+ (delete-file orig-file)
+ (condition-case nil
+ (delete-file xbm-file)
+ (error nil)))
(goto-char (point-max))
(insert "\n")
(message "Translation done.")