Spec-Zone.ru › Elisp

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

Вы можете использовать дескриптор изображения, самостоятельно задав свойство display, но проще воспользоваться функциями из этого раздела.

Функция: insert-image image &optional string area slice inhibit-isearch

Эта функция вставляет image в текущий буфер в точке. Значение image должно быть дескриптором изображения; это может быть значение, возвращённое функцией create-image, или значение символа, определённого с помощью defimage. Аргумент string задаёт текст, который будет помещён в буфер для отображения изображения. Если он опущен или равен nil, функция insert-image по умолчанию использует " ".

Аргумент area задаёт, следует ли поместить изображение на поле. Если он равен left-margin, изображение появляется на левом поле; right-margin задаёт правое поле. Если area равен nil или опущен, изображение отображается в точке внутри текста буфера.

Аргумент slice задаёт фрагмент изображения для вставки. Если slice равен nil или опущен, вставляется всё изображение. (Однако обратите внимание: при отображении изображения обрезаются по правому краю окна, поскольку перенос изображений не поддерживается.) В противном случае slice — это список (x y width height), задающий позиции x и y, а также width и height области изображения для вставки. Целочисленные значения задаются в пикселях. Число с плавающей точкой в диапазоне 0.0–1.0 обозначает соответствующую долю ширины или высоты всего изображения.

Внутри эта функция вставляет string в буфер и задаёт ему свойство display, указывающее на image. См. Свойство display. По умолчанию при интерактивном поиске в буфере учитывается string. Если inhibit-isearch не равен nil, это поведение отключается.

Функция: insert-sliced-image image &optional string area rows cols

Эта функция вставляет image в текущий буфер в точке, как insert-image, но разбивает изображение на rowsxcols фрагментов одинакового размера.

Emacs отображает каждый фрагмент как отдельное изображение и позволяет прокручивать содержимое вверх и вниз более удобным образом, вместо того чтобы перескакивать через всё изображение при перелистывании буфера с отображаемыми (большими) изображениями.

Функция: put-image image pos &optional string area

Эта функция помещает изображение image перед позицией pos в текущем буфере. Аргумент pos должен быть целым числом или маркером. Он задаёт позицию в буфере, в которой должно появиться изображение. Аргумент string задаёт текст, который будет служить заполнителем для изображения вместо символа ‘x’ по умолчанию.

Аргумент image должен быть дескриптором изображения, возможно, возвращённым функцией create-image или сохранённым с помощью defimage.

Аргумент area задаёт, следует ли поместить изображение на поле. Если он равен left-margin, изображение появляется на левом поле; right-margin задаёт правое поле. Если area равен nil или опущен, изображение отображается в точке внутри текста буфера.

Внутри эта функция создаёт наложение и задаёт ему свойство before-string, содержащее текст со свойством display, значением которого является изображение. (Уф! Вот это формулировка…) При успешном выполнении функция возвращает созданное наложение, а также задаёт его свойству put-image значение t.

Функция: remove-images start end &optional buffer

Эта функция удаляет изображения из buffer между позициями start и end. Если buffer опущен или равен nil, изображения удаляются из текущего буфера.

Удаляются только изображения, помещённые в buffer способом, используемым функцией put-image, но не изображения, вставленные с помощью insert-image или другими способами.

Функция: image-size spec &optional pixels frame

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

Переменная: max-image-size

Эта переменная задаёт максимальный размер изображения, которое Emacs будет загружать. Emacs откажется загружать (и отображать) любое изображение, размер которого превышает этот предел.

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

Эта переменная предназначена для предотвращения случайной загрузки в Emacs изображений чрезмерно большого размера. Она учитывается только при первой загрузке изображения. После помещения изображения в кэш изображений его можно отображать в любом случае, даже если значение max-image-size впоследствии изменилось (см. Кэш изображений).

Функция: image-at-point-p

Эта функция возвращает t, если точка находится на изображении, и nil в противном случае.

Изображения, вставленные описанными выше функциями, также получают локальную карту клавиш, установленную в текстовых свойствах (или наложениях), охватывающих отображаемое изображение. Эта карта клавиш задаёт следующие команды:

i +

Увеличить размер изображения (image-increase-size)

i -

Уменьшить размер изображения (image-decrease-size).

i r

Повернуть изображение (image-rotate).

i h

Отразить изображение по горизонтали (image-flip-horizontally).

i v

Отразить изображение по вертикали (image-flip-vertically).

i o

Сохранить изображение в файл (image-save).

i c

Обрезать изображение в интерактивном режиме (image-crop).

i x

Вырезать прямоугольную область изображения в интерактивном режиме (image-cut).

Подробнее об этих привязках клавиш для работы с изображениями см. в разделе Режим изображений в Руководстве GNU Emacs.

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/Showing-Images.html

Spec-Zone.ru

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