[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: [MD:4078] XPM color



>>>>> [meadow-develop : No.4081] にて
>>>>> "三好" = 私は書きました:
三好> 次のような実装状況です(多分)。

三好> o 実装済み
三好> :type, :file, :data, :ascent, :margin, :relief,
三好>  :conversion, :background, :foreground

三好> o 未実装
三好> :heuristic-mask, :mask, :color-symbols,

:color-symbols を実装しました。

EmacsChess もちゃんと表示できます。
http://www.boreas.dti.ne.jp/~miyoshi/Meadow2/image/EmacsChess.png

;; T-gnus の起動画面が地味になったのはちょっと残念^^;;


以下余談。

(1) :color-symbols
:color-symbols というのは、 XPM 画像の色をファイル読込時に動的に
変更するためのプロパティです。

例えば、
> "~ c red s gray",
は、ピクセル値 `~' の色は `red' 、シンボル名(symbolic name)は `gray'
という意味です。

ここで、画像のプロパティとして、
> :color-symbols '(("gray" . "#808080"))
と指定すると、シンボル名 `gray' の色を `red' ではなくて、#808080 
に変更できます。

チェスの駒のように、形は同じで色だけが違う画像を、単一の画像で生
成できるので便利な機能ではあります。

(2) 実装
ImageMagick で XPM 画像を読んだときに、パレット(colormap)情報が欠
落してしまうために、XPM の読込み関数(decoder) を ImageMagick の枠
組みで再定義しました。

当初は、ImageMagick での読込み後に、独自に XPM データをパースして
必要な情報を抽出する2パスで実装してました。でも、全データをパース
する必要がある(*)ことが、後で分かったため、ImageMagick の読込み関
数を再定義しました。

(*) 透明色(色が `None')の画像の場合、パレットデータだけでなく、ピ
    クセルデータまでパースする必要がある。というのは、フルカラー
    画像(DirectClass)として読み込まれるため、パレットの変更だけで
    は対応できないから。

--
三好 雅則 mailto:miyoshi@xxxxxxxxxxxxxxxx
          http://www.boreas.dti.ne.jp/~miyoshi/ (Meadow2 のページ始めました)