Определение изображений
Функции 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 — это список, задающий способ отображения изображения. Третий аргумент, 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
-
Значение этой переменной — список расположений, в которых выполняется поиск файлов изображений. Если элемент является строкой или символом переменной, значение которой представляет собой строку, эта строка считается именем каталога для поиска. Если элемент является символом переменной, значение которой представляет собой список, он считается списком каталогов для поиска.
По умолчанию поиск выполняется в подкаталоге images каталога, заданного в
data-directory, затем в каталоге, заданном вdata-directory, и, наконец, в каталогах изload-path. Подкаталоги автоматически не включаются в поиск, поэтому, если файл изображения находится в подкаталоге, этот подкаталог нужно указать явно. Например, чтобы найти изображение images/foo/bar.xpm вdata-directory, следует указать изображение следующим образом:(defimage foo-image '((:type xpm :file "foo/bar.xpm")))
- Функция: image-load-path-for-library library image &optional path no-error
-
Эта функция возвращает подходящий путь поиска изображений, используемых Lisp-пакетом library.
Функция ищет image сначала с помощью
image-load-path, исключая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, который вычисляет коэффициент масштабирования на основе размера шрифта в пикселях. См. раздел Дескрипторы изображений.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Defining-Images.html