-;;; gnus-fun.el --- various frivoluos extension functions to Gnus
+;;; gnus-fun.el --- various frivolous extension functions to Gnus
;; Copyright (C) 2002, 2003 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;;; Code:
+(eval-when-compile
+ (require 'cl)
+ (require 'mm-util))
+
(defcustom gnus-x-face-directory (expand-file-name "x-faces" gnus-directory)
"*Directory where X-Face PBM files are stored."
:group 'gnus-fun
(while (and (not done)
(> quant 1))
(setq attempt
- (gnus-shell-command-to-string
- (format gnus-convert-image-to-face-command
- (shell-quote-argument (expand-file-name file))
- quant)))
- (if (> (length attempt) 740)
+ (let ((coding-system-for-read 'binary))
+ (gnus-shell-command-to-string
+ (format gnus-convert-image-to-face-command
+ (shell-quote-argument (expand-file-name file))
+ quant))))
+ (if (> (length attempt) 726)
(progn
(setq quant (- quant 2))
(message "Length %d; trying quant %d"
(length attempt) quant))
(setq done t)))
(if done
- (mm-with-unibyte-buffer
+ (mm-with-unibyte-buffer
(insert attempt)
(gnus-face-encode))
nil))))
(base64-decode-region (point-min) (point-max)))
(buffer-string)))
-;;;#autoload
+;;;###autoload
(defun gnus-convert-png-to-face (file)
"Convert FILE to a Face.
FILE should be a PNG file that's 48x48 and smaller than or equal to
-740 bytes."
+726 bytes."
(mm-with-unibyte-buffer
(insert-file-contents file)
- (when (> (buffer-size) 740)
+ (when (> (buffer-size) 726)
(error "The file is %d bytes long, which is too long"
(buffer-size)))
(gnus-face-encode)))
(if (gnus-image-type-available-p 'xface)
(gnus-create-image
(concat "X-Face: " data)
- 'xface t :ascent 'center :face 'gnus-x-face)
+ 'xface t :face 'gnus-x-face)
(gnus-create-image
- pbm 'pbm t :ascent 'center :face 'gnus-x-face))))
+ pbm 'pbm t :face 'gnus-x-face)) nil 'xface))
(gnus-add-wash-type 'xface))))))
(defun gnus-grab-cam-x-face ()
(sleep-for 1))
(setq file (car file))
(shell-command
- (format "pnmcut -left 110 -top 30 -width 144 -height 144 '%s' | ppmnorm 2>/dev/null | pnmscale -width 48 -height 48 | ppmtopgm > /tmp/gnus.face.ppm"
+ (format "pnmcut -left 110 -top 30 -width 144 -height 144 '%s' | pnmscale -width 48 -height 48 | ppmtopgm > /tmp/gnus.face.ppm"
file))
(let ((gnus-convert-image-to-face-command
- (format "cat '%%s' | ppmchange %s | ppmquant %%d | pnmtopng"
+ (format "cat '%%s' | ppmquant %%d | ppmchange %s | pnmtopng"
(gnus-fun-ppm-change-string))))
(setq result (gnus-face-from-file "/tmp/gnus.face.ppm")))
(delete-file file)