+;;; @ content filter for support in-line image types
+;;;
+;; (for XEmacs 19.14 or later)
+
+(defun mime-preview/filter-for-inline-image (ctype params encoding)
+ (let* ((mode mime::preview/original-major-mode)
+ (m (assq mode mime-viewer/code-converter-alist))
+ (charset (assoc "charset" params))
+ (beg (point-min)) (end (point-max))
+ )
+ (remove-text-properties beg end '(face nil))
+ (mime-decode-region beg end encoding)
+ (let ((data (buffer-string))
+ (minor (assoc-value ctype mime-viewer/image-converter-alist))
+ gl)
+ (delete-region (point-min)(point-max))
+ (while (progn
+ (setq gl (make-glyph (vector minor :data data)))
+ (eq (image-instance-type (glyph-image-instance gl))
+ 'text)
+ ))
+ (make-annotation gl (point) 'text)
+ )
+ (insert "\n")
+ ))
+
+
+;;; @ content filter for Postscript
+;;;
+;; (for XEmacs 19.14 or later)
+
+(defun mime-preview/filter-for-application/postscript (ctype params encoding)
+ (let* ((mode mime::preview/original-major-mode)
+ (m (assq mode mime-viewer/code-converter-alist))
+ (beg (point-min)) (end (point-max))
+ (file-base (make-temp-name (expand-file-name "tm" mime/tmp-dir)))
+ (ps-file (concat file-base ".ps"))
+ (gif-file (concat file-base ".gif"))
+ )
+ (remove-text-properties beg end '(face nil))
+ (mime-decode-region beg end encoding)
+ (write-region (point-min)(point-max) ps-file)
+ (delete-region (point-min)(point-max))
+ (call-process mime-viewer/ps-to-gif-command nil nil nil ps-file)
+ (let (gl)
+ (while (progn
+ (setq gl (make-glyph (vector 'gif :file gif-file)))
+ (eq (image-instance-type (glyph-image-instance gl))
+ 'text)
+ ))
+ (make-annotation gl (point) 'text)
+ )
+ (delete-file ps-file)
+ (delete-file gif-file)
+ ))
+
+(set-alist 'mime-viewer/content-filter-alist
+ "application/postscript"
+ (function mime-preview/filter-for-application/postscript))
+
+