Spec-Zone.ru › Elisp

Определение изображений

Функции 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API