Определение изображений
Функции 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во втором случае.Необязательный аргумент type — это символ, определяющий тип изображения. Если type опущен или
nil,create-imageпытается определить тип изображения по первым байтам файла или из его имени.Остальные аргументы, props, задают дополнительные свойства изображения — например,
(create-image "foo.xpm" 'xpm nil :heuristic-mask t)
Функция возвращает
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-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Defining-Images.html