GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Defining-Images.html ・ emacs-doc.conao3.com

42.17.8 画像の定義

関数 create-image、defimage、find-image は、画像記述子を手軽に作成するための手段を提供します。

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

この関数は、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 :mask 'heuristic)

サポートされているプロパティの一覧については、画像記述子を参照してください。一部のプロパティは特定の画像タイプに固有のものであり、それらのタイプ専用のサブセクションで説明されています。

この関数は、この種類の画像がサポートされていない場合は nil を返します。それ以外の場合は、画像記述子を返します。

マクロ: 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 は各引数を一つずつ検証し、使用可能かどうか(すなわち、型がサポートされており、かつファイルが存在するか)を判定します。最初に使用可能と判定された引数を用いてイメージ記述子が作成され、symbol に格納されます。

いずれの代替案も機能しない場合は、symbolはnilとして定義されます。

関数: image-property image property

property の値を image に返します。プロパティは setf を使用して設定できます。プロパティを nil に設定すると、画像からそのプロパティが削除されます。

関数: find-image specs

この関数は、画像仕様のリスト specs のいずれかを満たす画像を手軽に検索する手段を提供します。

specs 内の各仕様はプロパティリストであり、その内容は画像タイプによって異なります。すべての仕様には、少なくともプロパティ :type type と、:file file または :data data のいずれかが含まれている必要があります。ここで、type は画像タイプを指定するシンボル(例:xbm)、file は画像を読み込むファイル、data は実際の画像データを含む文字列です。リスト内の仕様のうち、type がサポートされており、かつ file が存在する最初の仕様が、返される画像仕様の構築に使用されます。条件を満たす仕様がない場合は、nil が返されます。

画像は image-load-path 内で検索されます。

ユーザーオプション: 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")))
関数: image-load-path-for-library library image &optional path no-error

この関数は、Lispパッケージ library で使用される画像に適した検索パスを返します。

この関数は、まず image-load-path を用いて image を検索し(data-directory/images は除外)、次に load-path で検索し、続いて library に適したパス(ライブラリファイル自体を基準として ../../etc/images と ../etc/images を含む)を検索し、最後に data-directory/images で検索します。

この関数は、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 のいずれかです。画像記述子 を参照してください。