Spec-Zone.ru › Elisp

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

Описатель изображения — это список, который определяет данные изображения и способ его отображения. Он обычно используется в качестве значения свойства наложения display или свойства текста (см. Другие параметры отображения); но см. Отображение изображений для удобных вспомогательных функций вставки изображений в буферы.

Каждый описатель изображения имеет вид (image . props), где props — список свойств, состоящий из чередующихся ключевых символов и значений, включая по меньшей мере пару :type type, которая определяет тип изображения.

Описатели изображений, определяющие размеры изображения, :width, :height, :max-width и :max-height, могут принимать целое число, которое представляет размер в пикселях, или пару (value . em), где value — длина размера в ems27. Один em эквивалентен высоте шрифта, а value может быть целым числом или числом с плавающей точкой.

Ниже приведен список свойств, имеющих смысл для всех типов изображений (есть также свойства, имеющие смысл только для определенных типов изображений, как документировано в следующих разделах):

:type type

Тип изображения. См. Форматы изображений. Каждое изображение должно содержать это свойство.

:file file

Указывает на загрузку изображения из файла file. Если file не является абсолютным именем файла, оно расширяется относительно подкаталога images в data-directory, а если нет, то относительно каталогов, указанных в x-bitmap-file-path (см. Атрибуты лица).

:data data

Определяет исходные данные изображения. Каждый описатель изображения должен иметь либо :data или :file, но не оба.

Для большинства типов изображений значение свойства :data должно быть строкой, содержащей данные изображения. Некоторые типы изображений не поддерживают :data; для некоторых других :data одного недостаточно, поэтому вам нужно использовать другие свойства изображения вместе с :data. См. следующие подраздлы для получения подробностей.

:margin margin

Указывает количество пикселей для добавления дополнительного отступа вокруг изображения. Значение margin должно быть неотрицательным числом или парой (x . y) таких чисел. Если это пара, x указывает количество пикселей для добавления по горизонтали, а y — для добавления по вертикали. Если :margin не указано, значение по умолчанию — ноль.

:ascent ascent

Указывает высоту изображения, используемую для его восхождения — то есть, часть над базовой линией. Значение ascent должно быть числом от 0 до 100 или символом center.

Если ascent является числом, то этот процент высоты изображения используется для его восхождения.

Если ascent равен center, изображение центрируется по вертикали вокруг центральной линии, которая будет центральной вертикальной линией текста, нарисованного в позиции изображения, в соответствии со свойствами текста и наложениями, которые применяются к изображению.

Если это свойство опущено, оно по умолчанию равно 50.

:relief relief

Добавляет прямоугольник тени вокруг изображения. Значение relief указывает ширину линий тени в пикселях. Если relief отрицательно, тени рисуются так, что изображение выглядит как нажатая кнопка; в противном случае — как ненажатая кнопка.

:width width, :height height

Ключевые слова :width и :height используются для масштабирования изображения. Если указано только одно из них, другое будет рассчитано таким образом, чтобы сохранить соотношение сторон. Если оба указаны, соотношение сторон может не сохраняться.

:max-width max-width, :max-height max-height

Ключевые слова :max-width и :max-height используются для масштабирования, если размер изображения превышает эти значения. Если :width установлено, оно будет иметь приоритет над max-width, а если :height установлено, оно будет иметь приоритет над max-height, но вы можете комбинировать эти ключевые слова по желанию.

Если и :max-width и :height указаны, но :width нет, для сохранения соотношения сторон может потребоваться, чтобы ширина превысила :max-width. В этом случае масштабирование использует меньшее значение высоты, чтобы сохранить соотношение сторон и не превысить значение «макс». Аналогично, когда и :max-height и :width указаны, но :height нет. Например, если у вас изображение 200x100 и вы указали, что :width должно быть 400, а :max-height — 150, вы получите изображение размером 300x150: Сохранение соотношения сторон и не превышение значения «макс». Эта комбинация параметров — полезный способ сказать «отобразить это изображение как можно больше, но не больше, чем доступная область экрана».

:scale scale

Это должно быть число, где значения больше 1 означают увеличение размера, а меньшие — уменьшение размера, умножая ширину и высоту. Например, значение 0,25 сделает изображение вчетверо меньше первоначального размера. Если масштабирование делает изображение больше, чем указано :max-width или :max-height, результирующий размер не превысит эти два значения. Если и :scale и :height/:width указаны, высота/ширина будут скорректированы указанным коэффициентом масштабирования.

:rotation angle

Указывает угол поворота в градусах. Поддерживаются только кратные 90 градусов, если тип изображения не imagemagick. Положительные значения поворачивают по часовой стрелке, отрицательные — против часовой стрелки. Поворот выполняется после масштабирования и обрезки.

:transform-smoothing smooth

Если это t, любое преобразование изображения будет применять сглаживание; если nil, сглаживание не будет применяться. Точный алгоритм зависит от платформы, но должен быть эквивалентен билинейной фильтрации. Отключение сглаживания использует алгоритм ближайшего соседа.

Если это свойство не указано, create-image будет использовать пользовательский параметр image-transform-smoothing, чтобы сказать, нужно ли выполнять масштабирование. Этот параметр может быть nil (без сглаживания), t (использовать сглаживание) или предикатная функция, которая вызывается с объектом изображения в качестве единственного параметра и должна возвращать либо nil, либо t. По умолчанию при уменьшении масштаба применяется сглаживание, а при большом увеличении масштаба — нет.

:index frame

См. Изображения с несколькими кадрами.

:conversion algorithm

Указывает алгоритм преобразования, который должен быть применён к изображению перед отображением; значение algorithm указывает, какой алгоритм.

laplace
emboss

Указывает алгоритм обнаружения краёв Лапласа, который размывает небольшие различия в цвете, выделяя более значительные. Люди иногда считают это полезным для отображения изображения для отключенной кнопки.

(edge-detection :matrix matrix :color-adjust adjust)

Указывает общий алгоритм обнаружения краёв. matrix должен быть либо списком из девяти элементов, либо вектором из девяти чисел. Пиксель в позиции x/y преобразованного изображения вычисляется из исходных пикселей вокруг этой позиции. matrix указывает для каждого пикселя в окрестности x/y множитель, с которым этот пиксель повлияет на преобразованный пиксель; элемент 0 указывает множитель для пикселя в позиции x-1/y-1, элемент 1 — для пикселя в позиции x/y-1 и т. д., как показано ниже:

  (x-1/y-1  x/y-1  x+1/y-1
   x-1/y    x/y    x+1/y
   x-1/y+1  x/y+1  x+1/y+1)

Результат вычисляется из интенсивности цвета цвета, полученного в результате суммирования значений RGB окружающих пикселей, умноженных на указанные множители, и деления этой суммы на сумму абсолютных значений множителей.

Обнаружение краёв Лапласа в настоящее время использует матрицу

  (1  0  0
   0  0  0
   0  0 -1)

Обнаружение краёв эмбосса использует матрицу

  ( 2 -1  0
   -1  0  1
    0  1 -2)
disabled

Указывает преобразование изображения так, чтобы оно выглядело отключенным.

:mask mask

Если mask равно heuristic или (heuristic bg), создаётся маска обрезки для изображения, чтобы фон кадра был виден позади изображения. Если bg не указан или равен t, цвет фона изображения определяется по четырём углам изображения, предполагая, что чаще встречающийся цвет из углов — это цвет фона изображения. В противном случае bg должен быть списком (red green blue) определяющим предполагаемый цвет фона изображения.

Если mask равно nil, маска удаляется с изображения, если она есть. В изображениях некоторых форматов есть маска, которую можно удалить, указав :mask nil.

:pointer shape

Указывает форму указателя мыши, когда указатель мыши находится над этим изображением. См. Форма указателя для доступных форм указателей.

:map map

Связывает с этим изображением карту изображений «горячих точек».

Карта изображений — это список, где каждый элемент имеет вид (area id plist). Область area задаётся как прямоугольник, круг или многоугольник.

Прямоугольник — это конс (rect . ((x0 . y0) . (x1 . y1))), который определяет координаты пикселей верхнего левого и нижнего правого углов прямоугольной области.

Круг — это конс (circle . ((x0 . y0) . r)), который определяет центр и радиус круга; r может быть числом с плавающей точкой или целым числом.

Многоугольник — это конс (poly . [x0 y0 x1 y1 ...]), где каждая пара в векторе описывает один угол многоугольника.

Когда указатель мыши находится на области «горячей точки» изображения, проверяется plist этой «горячей точки»; если он содержит свойство help-echo, это определяет всплывающую подсказку для «горячей точки», а если он содержит свойство pointer, это определяет форму курсора мыши, когда он находится на «горячей точке». См. Форма указателя для доступных форм указателей.

Когда вы щелкаете мышкой, когда указатель мыши находится над «горячей точкой», генерируется событие, объединяющее id «горячей точки» с событием мыши; например, [area4 mouse-1] если id «горячей точки» — area4.

Функция: image-mask-p spec &optional frame

Эта функция возвращает t если изображение spec имеет битовую карту маски. frame — это фрейм, на котором изображение будет отображаться. frame nil или опущен означает использование выбранного фрейма (см. Фокус ввода).

Функция: image-transforms-p &optional frame

Эта функция возвращает не-nil если frame поддерживает масштабирование и поворот изображений. frame nil или опущен означает использование выбранного фрейма (см. Фокус ввода). Возвращаемый список содержит символы, указывающие, какие операции преобразования изображений поддерживаются:

scale

Масштабирование изображения поддерживается frame через свойства :scale, :width, :height, :max-width, и :max-height.

rotate90

Поворот изображения поддерживается frame, если угол поворота является целым кратным 90 градусов.

Если преобразования изображений не поддерживаются, :rotation, :crop, :width, :height, :scale, :max-width и :max-height будут доступны только через ImageMagick, если он доступен (см. Изображения ImageMagick).

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/Image-Descriptors.html

Spec-Zone.ru

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