Next: XBM Images, Previous: Image Formats, Up: Images [Contents][Index]
イメージディスクリプタ(image
descriptor)とは、イメージにたいする基礎的なデータと表示する方法を指定するリストです。これは通常はオーバーレイプロパティかテキストプロパティdisplay
(Other Display Specsを参照)の値を通じて使用されますが、バッファーにイメージを挿入する便利なヘルパー関数についてはShowing Imagesを参照してください。
イメージディスクリプタはそれぞれ(image
.
props)
という形式をもちます。ここでpropsはキーワードシンボルと値のペアーからなるプロパティリストであり、少なくともそのイメージタイプを指定するペアー:type
type
を含みます。
以下はすべてのイメージタイプにたいして意味のあるプロパティのリストです(以降のサブセクションで説明するように特定のイメージタイプにたいしてのみ意味があるプロパティも存在する):
:type type
イメージタイプ。 Image Formatsを参照のこと。 すべてのイメージディスクリプタは。このプロパティを含まなければならない。
:file file
これはファイルfileからイメージをロードすることを意味する。fileが絶対ファイル名でなければdata-directory
内で展開される。
:data data
これはrawイメージデータを指定する。すべてのイメージディスクリプタは:data
か:file
のいずれかをもたなければならないが両方もつことはできない。
ほとんどのイメージタイプにたいして、:data
プロパティの値はイメージデータを含む文字列であること。いくつかのイメージタイプは:data
をサポートしない。それ以外のイメージタイプにたいしては:data
単独では不十分であり、:data
とともに他のイメージプロパティを使用する必要がある。詳細は以下のサブセクションを参照のこと。
:margin margin
これはイメージ周囲に余分なマージンとして何ピクセル追加するかを指定する。値marginは非負の数値か、そのような数値のペアー(x
.
y)
でなければならない。ペアーならxは水平方向に追加するピクセル数、yは垂直方向に追加するピクセル数を指定する。:margin
が指定されない場合のデフォルトは0。
:ascent ascent
これはイメージのアセント(ベースラインの上の部分)に使用するイメージの高さの分量を指定する。値ascentは0から100の数値かシンボルcenter
でなければならない。
ascentが数値ならアセントに使用するイメージの高さのパーセンテージであること。
ascentがcenter
なら、イメージにたいしてテキストプロパティやオーバーレイプロパティにより指定される方法で、センターライン(そのイメージ位置にテキストを描画する際の垂直方向のセンターライン)の垂直方向中心にイメージが配置される。
このプロパティが省略された場合のデフォルトは50。
:relief relief
これはイメージ周辺にシャドー矩形を追加する。値reliefはシャドーライン幅をピクセルで指定する。reliefが負ならボタンを押下した状態、それ以外はボタンを押下していない状態のイメージでシャドーを描画する。
:conversion algorithm
これはイメージを表示する前に適用するべき変換アルゴリズムを指定する。値algorithmは何のアルゴリズムかを指定する。
laplace
emboss
カラーの大きな差異を強調して小さな差異を不鮮明にするラプラスエッジ検出アルゴリズム(Laplace edge detection algorithm)を指定する。無効なボタンのイメージ表示に、これが役立つと考える人もいます。
(edge-detection :matrix matrix :color-adjust adjust)
一般的なエッジ検出アルゴリズムを指定する。matrixは数値からなる9要素のリストかベクターでなければならない。変換されたイメージ内の位置x/yにあるピクセルは、その位置周辺にある元のピクセルから計算される。matrixはx/yに近接する各ピクセルにたいして、そのピクセルが変換先ピクセルに影響するファクター(factor: 要因)を指定する。以下のように要素0はx-1/y-1にあるピクセルのファクター、要素1はx/y-1にあるピクセルにたいするファクター、...を指定する。
(x-1/y-1 x/y-1 x+1/y-1 x-1/y x/y x+1/y x-1/y+1 x/y+1 x+1/y+1)
結果となるピクセルは周辺ピクセルのRGB値を合計したカラーを指定されたファクターで乗じて、その合計をファクター絶対値の合計で除した色強度から計算される。
ラプラスエッジ検出は現在のところは以下のマトリクス
(1 0 0 0 0 0 0 0 -1)
エンボスエッジ検出(Emboss edge-detection)は以下のマトリクスを使用する
( 2 -1 0 -1 0 1 0 1 -2)
disabled
イメージが無効(disabled)に見えるよう変換することを指定する。
:mask mask
maskがheuristic
か(heuristic
bg)
なら、フレームのバックグラウンドがイメージ背後に見えるようにイメージのクリッピングマスクを構築する。bgが未指定かt
なら、イメージ4隅に最頻するカラーをそのイメージのバックグラウンドカラーとみなしてバックグラウンドカラーを決定する。それ以外ならbgはイメージのバックグラウンドとみなすべきカラーを指定するリスト(red
green blue)
でなければならない。
maskがnil
なら、イメージがマスクをもつ場合にはマスクを削除する。マスクを含むフォーマットのイメージは:mask
nil
を指定することにより削除される可能性がある。
:pointer shape
これはマウスポインターがそのイメージ上にある際のポインターシェイプを指定する。利用可能なポインターシェイプについてはPointer Shapeを参照のこと。
:map map
これはイメージにホットスポット(hot spots)のイメージマップを関連付ける。
イメージマップは各要素が(area id
plist)
という形式をもつalist。areaにはrectangle(矩形)、circle(円)、またはpolygon(ポリゴン、多角形)のいずれかを指定する。
rectangleは矩形エリアの左上隅と右下隅のピクセル座標を指定するコンス(rect . ((x0 . y0)
. (x1 . y1)))
。
circleは円の中心と半径を指定するコンス(circle . ((x0 . y0)
. r))
。rは整数か浮動小数点数。
polygonは各ペアーが多角形の1つの頂点を記述するコンス(poly . [x0 y0 x1
y1 ...])
。
マウスポインターがホットスポット上にある際には、ホットスポットのplistが参照される。これがhelp-echo
プロパティを含むならそのホットスポットのツールチップ、pointer
プロパティを含む場合はマウスカーソルがホットスポット上にあるときのマウスカーソルのシェイプを指定する。利用可能なポインターシェイプについてはPointer Shapeを参照のこと。
マウスポインターがホットスポット上にあるときにマウスをクリックしたときのイベントは、ホットスポットのidとマウスイベントを組み合わせて構成される。たとえばホットスポットのidがarea4
なら[area4
mouse-1]
。
この関数はイメージspecがマスクビットマップをもつならt
をリターンする。frameはそのイメージが表示されるフレーム。frameがnil
か省略された場合には選択されたフレームが使用される(Input Focusを参照)。