Next: イメージの表示, Previous: その他のイメージタイプ, Up: イメージ [Contents][Index]
関数create-image
、defimage
、find-image
はイメージディスクリプタを作成するための便利な手段を提供します。
この関数はfile-or-data内のデータを使用するイメージディスクリプタを作成してリターンする。file-or-dataはファイル名、またはイメージデータを含む文字列を指定できる。前者ならdata-pはnil
、後者なら非nil
であること。file-or-dataが相対ファイル名なら、この関数はimage-load-path
にセットされているディレクトリーにたいして検索を行う。
オプション引数typeはイメージタイプを指定するシンボル。typeが省略かnil
なら、create-image
はファイル先頭の数バイトかファイル名からイメージタイプの判断を試みる。
残りの引数propsは追加のイメージプロパティを指定する。たとえば、
(create-image "foo.xpm" 'xpm nil :heuristic-mask t)
この関数はそのタイプのイメージがサポートされていなければnil
、それ以外ならイメージディスクリプタをリターンする。
このマクロはイメージマクロとして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内に格納するイメージディスクリプタを作成するために使用される。
機能する候補がなければsymbolはnil
として定義される。
imageのpropertyの値をリターンする。プロパティはsetf
を使用してセットできる。プロパティにnil
をセットすることによりイメージからプロパティを削除できる。
この関数はイメージ仕様specsのリストの1つを満足するイメージを探すための、便利な手段を提供する。
specs内の各仕様はイメージタイプに応じた内容のプロパティリストである。すべての仕様は少なくとも:type
type
、および:file file
か:data data
のいずれかのプロパティを含まなければならない。ここでtypeはxbm
のようにイメージタイプを指定するシンボル、fileはイメージをロードするファイル、dataは実際のイメージデータを含む文字列。このリスト内でtypeがサポートされていて、かつfileが存在する最初の仕様が、リターンされるイメージ仕様の構築に使用される。満足する仕様がなければnil
がリターンされる。
イメージは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")))
この関数は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))
イメージはimage-scaling-factor
変数にもとづいて作成時に自動的にスケーリングされます。この値は浮動小数点数(1より大きい値はサイズの拡大、小さい値はサイズの縮小を意味する)、またはフォントのピクセルサイズにもとづいたスケーリング倍率で計算を行うシンボルauto
のいずれかです。