Next: , Previous: , Up: Images   [Contents][Index]


37.17.8 イメージの定義

関数create-imagedefimagefind-imageはイメージディスクリプタを作成するための便利な手段を提供します。

Function: create-image file-or-data &optional type data-p &rest props

この関数はfile-or-data内のデータを使用するイメージディスクリプタを作成してリターンする。file-or-dataはファイル名、またはイメージデータを含む文字列を指定できる。前者ならdata-pnil、後者なら非nilであること。

オプション引数typeはイメージタイプを指定するシンボル。typeが省略かnilなら、create-imageはファイル先頭の数バイトかファイル名からイメージタイプの判断を試みる。

残りの引数propsは追加のイメージプロパティを指定する。たとえば、

(create-image "foo.xpm" 'xpm nil :heuristic-mask t)

この関数はそのタイプのイメージがサポートされていなければnil、それ以外ならイメージディスクリプタをリターンする。

Macro: defimage symbol specs &optional doc

このマクロはイメージマクロとしてsymbolを定義する。引数specsはイメージの表示方法を指定するリストである。3つ目の引数docはオプションのドキュメント文字列。

specs内の各要素はプロパティリストの形式をもち、それぞれが少なくとも:typeプロパティと、:file:dataいずれかのプロパティをもつこと。:typeの値はイメージタイプを指定するシンボル、:fileの値はイメージをロードするファイル、:dataの値は実際のイメージデータを含む文字列であること。以下は例:

(defimage test-image
  ((:type xpm :file "~/test1.xpm")
   (:type xbm :file "~/test1.xbm")))

defimageはそれが使用可能か、つまりそのタイプがサポートされているかとファイルが存在するかを確認するために各要素を1つずつテストする。最初に使用可能な引数がsymbol内に格納するイメージディスクリプタを作成するために使用される。

機能する候補がなければsymbolnilとして定義される。

Function: find-image specs

この関数はイメージ仕様specsのリストの1つを満足するイメージを探すための、便利な手段を提供する。

specs内の各仕様はイメージタイプに応じた内容のプロパティリストである。すべての仕様は少なくとも:type type、および:file file:data dataのいずれかのプロパティを含まなければならない。ここでtypexbmのようにイメージタイプを指定するシンボル、fileはイメージをロードするファイル、dataは実際のイメージデータを含む文字列。このリスト内でtypeがサポートされていて、かつfileが存在する最初の仕様が、リターンされるイメージ仕様の構築に使用される。満足する仕様がなければnilがリターンされる。

イメージはimage-load-path内で検索される。

User Option: image-load-path

この変数の値はイメージファイルを検索する場所のリストである。要素が文字列、または値が文字列であるような変数シンボルなら、その文字列は検索を行うディレクトリーとみなされる。値がリストであるような変数シンボルなら、検索を行うディレクトリーのリストとみなされる。

デフォルトではdata-directoryで指定されたディレクトリーのサブディレクトリーimages、次にdata-directoryで指定されたディレクトリー、最後にload-pathで指定されたディレクトリー内を検索する。サブディレクトリーは自動的には検索に含まれないので、イメージファイルをサブディレクトリー内に配置した場合には、サブディレクトリー名を明示的に与える必要がある。たとえばdata-directory内でイメージimages/foo/bar.xpmを見つけるには、以下のようにそのイメージを指定すること:

(defimage foo-image '((:type xpm :file "foo/bar.xpm")))
Function: image-load-path-for-library library image &optional path no-error

この関数はLispパッケージlibraryにより使用されるイメージにたいして適切な検索パスをリターンする。

この関数はまずimage-load-path (data-directory/imagesを除外)を使用し、次にload-pathの後にlibraryにとって適切なパス(ライブラリーファイル自身にたいする相対パス../../etc/images../etc/imagesを含む)を補い、最後にdata-directory/imagesからimageを検索する。

それからこの関数は先頭にimageが見つかったディレクトリー、その後にload-pathの値が続くディレクトリーのリストをリターンする。pathが与えられたらload-pathのかわりに使用する。

no-errorが非nil、かつ適切なパスが見つからない場合にはエラーをシグナルしない。かわりに前記のディレクトリーリストをリターンするが、イメージのディレクトリーの箇所にnilが出現する点が異なる。

以下はimage-load-path-for-libraryの使用例:

(defvar image-load-path) ; shush compiler
(let* ((load-path (image-load-path-for-library
                    "mh-e" "mh-logo.xpm"))
       (image-load-path (cons (car load-path)
                              image-load-path)))
  (mh-tool-bar-folder-buttons-init))