[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: inline image for Mule 2
白井@違いのわからない奴、です。
From: Katsumi Yamaoka <yamaoka@jpl.org> さん曰く
Subject: [emacs-w3m:03295] Re: inline image for Mule 2
Message-ID: <yosuelh7ey00.fsf@jpl.org>
Date: Tue, 23 Apr 2002 15:21:18 +0900
山岡さん> overlay に無色透明な face を持たせることによって対策できました。
山岡さん> Emacs 20 での画面の見栄えが、かなり良くなったと思います。:-)
これ、実は。。。
From: Katsumi Yamaoka <yamaoka@jpl.org> さん曰く
Subject: [emacs-w3m:03218] Re: inline image for Mule 2
Message-ID: <yosu662xnixa.fsf@jpl.org>
Date: Fri, 12 Apr 2002 22:30:21 +0900
山岡さん> bitmap の絵の色がいまだ w3m-bitmap-image-face で制御できない、
山岡さん>
山岡さん> これの原因がわかってかなり驚いたのですが、Emacs 20 では text
山岡さん> property の face がある場所に overlay があると、face が表示に
山岡さん> 反映されなくなってしまいます。例えば *w3m* バッファで以下を評価
山岡さん> すると
山岡さん>
山岡さん> (make-overlay (point-min) (point-max))
このときから感じていたのですが、なぜか私には全然違いがわからない
のです ^^;;;
# Meadow のせいかな? と思ったんですが、Emacs 20.7/Mule 4.0 でも
# わからなかった。(昔の環境に w3m, w3m.el だけ入れ直したのですが、
# 数年前までこんな遅いマシンを使っていたとは)
で、閑話休題。
(1) 所詮、ON/OFF しか表現できないわけですから、付属のパッチの様
に、お好みで text の face を bitmap image に継承できるように
したらどうでしょうか。
(2) 古いマシンの convert が
% convert -h | head
Version: @(#)ImageMagick 3.7.4 96/07/01 cristy@dupont.com
とめちゃくちゃ古いので気が付いたのですが、この古い convert で多
値画像データを二値化するときにはディザマトリクスを使った普通のディ
ザ(変な説明)を使います。けど、最近使っている convert 5.4.x だと
誤差拡散処理を使っています。
双方を見比べたところ、個人的にはディザを使った方が見やすいように
感じられたので、付属のパッチの様に convert にあたえる argument
を設定できた方がうれしいです。
# commit しちゃおうかなと思ったんですが、違いがわかっていない男
# なので (1) 関連でとりあえず自粛。
P.S.
しかし、最近の convert にいろいろ option を与えても誤差拡散処理
のままで、ディザ使ってくれないのですが、どなたか『これだ!!』っ
ておわかりになりませんか?
## 普通は error diffusion method のことを dither とは言わないと
## 思うんだけどなぁ。。。> ImageMagick
## % convet --help
## -dither apply Floyd/Steinberg error diffusion to image
--
白井秀行@実は P.S. を一番書きたかったらしい。
Index: w3m-bitmap.el
===================================================================
RCS file: /cvsroot/w3m-shirai/emacs-w3m/w3m-bitmap.el,v
retrieving revision 1.25
diff -u -u -r1.25 w3m-bitmap.el
--- w3m-bitmap.el 23 Apr 2002 06:23:11 -0000 1.25
+++ w3m-bitmap.el 23 Apr 2002 09:45:58 -0000
@@ -235,6 +235,16 @@
"Face used to highlight bitmap images."
:group 'w3m-face)
+(defcustom w3m-bitmap-convert-arguments nil
+ "*List of the arguments of `convert' from any image to xbm."
+ :group 'w3m
+ :type '(repeat string))
+
+(defcustom w3m-bitmap-image-face-inherit nil
+ "*If non-nil, inherit face of image from the original face."
+ :group 'w3m
+ :type 'boolean)
+
(defcustom w3m-bitmap-cache-image-hook nil
"*Hook run with use cached image."
:group 'w3m
@@ -416,13 +426,15 @@
(insert data)
(apply 'w3m-imagick-start-convert-buffer
handler type "xbm"
- (if set-size
- (list "-geometry"
- (concat (number-to-string
- (car size))
- "x"
- (number-to-string
- (cdr size)) "!"))))))
+ (append
+ (if set-size
+ (list "-geometry"
+ (concat (number-to-string
+ (car size))
+ "x"
+ (number-to-string
+ (cdr size)) "!")))
+ w3m-bitmap-convert-arguments))))
(when success
(let ((image (w3m-bitmap-image-buffer (current-buffer))))
(push (cons (if set-size (list url size) url)
@@ -432,9 +444,11 @@
(defun w3m-insert-image (beg end image url)
"Display image on the current buffer.
Buffer string between BEG and END are replaced with IMAGE."
- (let ((properties (text-properties-at beg))
- (name (buffer-substring beg end))
- (ovr (w3m-bitmap-image-get-overlay beg)))
+ (let* ((properties (text-properties-at beg))
+ (name (buffer-substring beg end))
+ (ovr (w3m-bitmap-image-get-overlay beg))
+ (face (and w3m-bitmap-image-face-inherit
+ (nth 1 (memq 'face properties)))))
(when (equal (nth 1 (memq 'w3m-image properties)) url)
(w3m-bitmap-image-delete-internal beg ovr (- end beg))
(w3m-bitmap-image-insert beg image
@@ -442,7 +456,8 @@
'w3m-image-status 'on
'w3m-bitmap-image t
'w3m-image-name name
- 'face 'w3m-bitmap-image-face)
+ 'face
+ (or face 'w3m-bitmap-image-face))
ovr))))
(defun w3m-remove-image (beg end)