УСТАРЕВШАЯ. Примитивы для рисования на экране различными способами.
hs.drawing теперь устарел и будет удалён в будущей версии. Его функциональность теперь реализована в hs.canvas, и вам следует перенести свой код на его непосредственное использование. Документация API для hs.drawing остаётся здесь для удобства.
Таблица предопределённых уровней окон, используемых с hs.drawing:setLevel(...)
Примечания
Эта таблица имеет метаметод __tostring(), который позволяет перечислить её содержимое в консоли Hammerspoon, набрав hs.drawing.windowLevels.
Эти имена ключей отображаются в константы, используемые в CoreGraphics для задания уровней окон и могут фактически не использоваться для того, что подсказывает их название. Например, тесты показывают, что активный экран сберегателя фактически работает на уровне 2002, а не на 1000, который соответствует уровню окна kCGScreenSaverWindowLevelKey.
Каждый уровень рисования сортируется отдельно, и hs.drawing:orderAbove(...) и hs.drawing:orderBelow(...)` организуют окна только в пределах одного уровня.
Если вы используете скрытие Папки (или в 10.11, скрытие Меню), обратите внимание, что при всплывании Папки (или Главного меню) это делается с неявным orderAbove, который расположит её над любыми элементами, которые вы также можете нарисовать на уровне Папки (или Главного меню).
Объект рисования с функцией hs.drawing:setClickCallback может надёжно получать события нажатия мыши только тогда, когда его уровень окна находится на уровне hs.drawing.windowLevels.desktopIcon + 1 или выше.
Возвращает таблицу, содержащую шрифт, размер, цвет и paragraphStyle по умолчанию, используемые hs.drawing для объектов рисования текста.
Параметры
Нет
Возвращаемые значения
таблица, содержащая атрибуты стиля по умолчанию, которые hs.drawing использует для объектов рисования текста в формате таблицы атрибутов hs.styledtext.
Примечания
Этот метод возвращает шрифт, размер, цвет и paragraphStyle по умолчанию, используемые hs.drawing для объектов текста. Если вы измените значения по умолчанию для объекта рисования с помощью hs.drawing:setColor, hs.drawing:setTextFont или hs.drawing:setTextSize, эти изменения не будут отражены в этой функции.
Сообщает серверу окон OS X о приостановке обновления физических дисплеев на короткое время.
Параметры
Нет
Возвращаемые значения
Нет
Примечания
Этот метод может использоваться для того, чтобы несколько изменений, вносимых в дисплей пользователя, казались выполненными одновременно, отложив обновление экрана по обычному расписанию.
Этот метод всегда должен сопровождаться вызовом hs.drawing.enableScreenUpdates после завершения обновлений. Отсутствие этого приведет к записи в системные журналы.
Сервер окон позволит приостановить обновления не более чем на 1 секунду. Это предотвращает блокировку дисплея системы некорректным или зависшим процессом. Обновления будут возобновлены при встрече с hs.drawing.enableScreenUpdates или через 1 секунду, в зависимости от того, что произойдёт раньше.
Подлежащая OS функция для отключения обновлений экрана устарела.
Сообщает серверу окон OS X о возобновлении обновления физических дисплеев после предыдущей паузы.
Параметры
Нет
Возвращаемые значения
Нет
Примечания
В сочетании с hs.drawing.disableScreenUpdates, этот метод может использоваться для того, чтобы несколько изменений, вносимых в дисплей пользователя, казались выполненными одновременно, отложив обновление экрана по обычному расписанию.
Сервер окон позволит приостановить обновления не более чем на 1 секунду. Это предотвращает блокировку дисплея системы некорректным или зависшим процессом. Обновления будут возобновлены при встрече с этой функцией или через 1 секунду, в зависимости от того, что произойдёт раньше.
Подлежащая OS функция для включения обновлений экрана устарела.
hs.drawing.getTextDrawingSize(styledTextObject or theText, [textStyle]) -> sizeTable | nil
Type
Функция
Description
Получить размер прямоугольника, необходимого для полного отображения текста со указанным стилем, чтобы он был полностью виден.
Parameters
styledTextObject - объект, созданный с помощью модуля hs.styledtext или его табличного представления (см. hs.styledtext).
textStyle - необязательная таблица, содержащая один или несколько из следующих ключей для установки параметров текста объекта отрисовки (если textStyle равен nil или отсутствует, используются значения по умолчанию hs.drawing):
Returns
sizeTable - таблица, содержащая высоту и ширину, необходимые для полного отображения объекта отрисовки текста, или nil, если произошла ошибка
Notes
Эта функция предполагает значения по умолчанию для любого ключа, который не указан в предоставленном textStyle.
Возвращаемый размер является приблизительным и может возвращать ширину, отличающуюся примерно на 4 точки. Используйте возвращаемый размер как минимальную начальную точку. Иногда использование режимов перевода строк "clip" или "truncateMiddle" или выравнивания "justified" может подойти, но для большей безопасности добавьте свой буфер, если в макете есть место.
Поддерживается многострочный текст (разделенный новой строкой или символом возврата каретки). Высота будет для нескольких строк, а возвращаемая ширина — для самой длинной строки.
Для использования с hs.drawing:setText и hs.drawing.setTextStyle поддерживается следующий упрощенный формат стиля.
theText - текст, который должен быть отображен.
textStyle - таблица, содержащая один или несколько из следующих ключей для настройки текста объекта отрисовки (если textStyle равен nil или отсутствует, используются значения по умолчанию hs.drawing):
font - имя шрифта для использования (по умолчанию — системный шрифт)
size - размер шрифта в пунктах (по умолчанию — 27.0)
color - игнорируется, но принимается для совместимости с hs.drawing:setTextStyle()
alignment - строка, указывающая выравнивание текста в рамках объекта отрисовки:
"left" — текст выровнен по левому краю.
"right" — текст выровнен по правому краю.
"center" — текст выровнен по центру.
"justified" — текст выровнен по ширине
"natural" — (по умолчанию) естественное выравнивание шрифта текста
lineBreak - строка, указывающая, как обрезать текст, который выходит за рамки объекта отрисовки:
"wordWrap" — (по умолчанию) обрезка по словам, если слово само по себе не помещается в одну строку
"charWrap" — обрезка перед первой буквой, которая не помещается
"clip" — не отображать за пределами рамки объекта отрисовки
"truncateHead" — строка отображается так, что конец помещается в рамку, а пропущенный текст в начале строки обозначается многоточием
"truncateTail" — строка отображается так, что начало помещается в рамку, а пропущенный текст в конце строки обозначается многоточием
"truncateMiddle" — строка отображается так, что начало и конец помещаются в рамку, а пропущенный текст посередине обозначается многоточием
hs.drawing.image(sizeRect, imageData) -> drawingObject or nil
Type
Конструктор
Description
Создаёт новый объект изображения
Parameters
sizeRect - rect-таблица, содержащая положение/размер изображения
imageData - может быть:
Объектом hs.image
Строкой, содержащей путь к файлу изображения
Строкой, начинающейся с ASCII:, которая указывает, что остальная часть строки интерпретируется как специальная форма ASCII-диаграммы, которая будет преобразована в изображение. См. примечания ниже для получения информации о специальном формате ASCII-диаграммы.
Returns
Объект hs.drawing, или nil, если произошла ошибка
Пути, относительные к текущему каталогу Hammerspoon (обычно ~/.hammerspoon/), будут работать, но пути, относительные к символу домашнего каталога UNIX, ~, не будут
Поддерживаются анимированные GIF-файлы. Они не очень дружелюбны к вашему процессору, но работают
Notes
Чтобы использовать поддержку изображений ASCII-диаграмм, см. http://cocoamine.net/blog/2015/03/20/replacing-photoshop-with-nsstring/ и убедитесь, что ваша ASCII-диаграмма начинается со специальной строки ASCII:
hs.drawing.text(sizeRect, message) -> drawingObject or nil
Type
Конструктор
Description
Создаёт новый объект текста
Parameters
sizeRect - rect-таблица, содержащая положение/размер текста
message - строка, содержащая отображаемый текст. Также может быть любого типа, поддерживаемого hs.styledtext. См. hs.styledtext для получения дополнительной информации.
aboveEverything - Необязательное логическое значение, определяющее, насколько далеко объект должен быть выведен вперёд. true для размещения объекта поверх всех окон (включая папку и строку меню), false для размещения объекта поверх обычных окон, но ниже папки и строки меню. По умолчанию - false.
Returns
Объект отрисовки
Notes
Начиная с macOS Sierra и новее, если вы хотите, чтобы объект hs.drawing отображался поверх окон в полноэкранном режиме, вы должны сначала скрыть значок Hammerspoon Dock с помощью: hs.dockicon.hide()
hs.drawing:clickCallbackActivating([false]) -> drawingObject or current value
Type
Method
Description
Получить или установить, должно ли нажатие на объект отрисовки с определённым обратным вызовом при нажатии выводить все открытые окна Hammerspoon вперёд.
Parameters
flag - необязательное логическое значение, указывающее, нужно ли активировать Hammerspoon и выводить его окна вперёд при нажатии на объект отрисовки с определённой функцией обратного вызова. По умолчанию - true.
Returns
Если задано значение, возвращается объект отрисовки; если аргумент не указан, возвращается текущее значение.
Notes
Изменение этого значения на false изменяет значение AXsubrole объекта отрисовки и может повлиять на результаты фильтров, определённых для hs.window.filter, в зависимости от способа их определения.
hs.drawing:clippingRectangle([rect]) -> drawingObject or current value
Type
Method
Description
Установить область экрана, в которой содержимое отрисовки отображается.
Parameters
rect - необязательный прямоугольник, определяющий видимую область экрана, где содержимое отрисовки отображается. Если указан явный nil, прямоугольник обрезки не устанавливается. По умолчанию - nil
Returns
если указан аргумент, возвращается объект отрисовки; в противном случае возвращается текущее значение.
Notes
Этот метод может использоваться для указания области экрана, где должна отображаться отрисовка. Если какая-либо часть отрисовки выходит за пределы этого прямоугольника, изображение обрезается таким образом, что видна только часть внутри этого прямоугольника.
Прямоугольник, определяемый этим методом, независим от фактической рамки отрисовки. Если вы перемещаете отрисовку с помощью hs.drawing:setFrame или hs.drawing:setTopLeft, этот прямоугольник сохраняет своё текущее значение.
Этот метод в настоящее время не работает для объектов изображений.
Этот метод немедленно уничтожает объект отрисовки. Если вы хотите, чтобы он исчезал плавно, используйте сначала :hide() с подходящим временем, а затем hs.timer.doAfter() для планирования вызова :delete()
hs.drawing:imageAnimates([flag]) -> drawingObject or current value
Тип
Метод
Описание
Получить или установить, нужно ли анимированному изображению GIF циклически проходить через анимацию.
Параметры
flag - необязательный булевый флаг, указывающий, нужно ли анимированному изображению GIF циклически проходить через анимацию. По умолчанию значение true.
Возвращает
Если задано значение, возвращается объект рисования; если аргумент не задан, возвращается текущее значение.
hs.drawing:imageFrame([type]) -> drawingObject or current value
Тип
Метод
Описание
Получить или установить тип рамки вокруг рамки рисования изображения.
Параметры
type - необязательное строковое значение, которое должно соответствовать одному из следующих (по умолчанию - none):
none - вокруг рамки frameRect объекта drawingObject нет рамки
photo - тонкая чёрная рамка с белым фоном и тенью.
bezel - серая вогнутая рамка без фона, которая делает изображение похожим на вдавленное.
groove - тонкий желобок с серым фоном, который выглядит гравированным вокруг изображения.
button - выпуклая рамка с серым фоном, которая выделяет изображение в рельефе, как кнопку.
Возвращает
Если задано значение, возвращается объект рисования; если аргумент не задан, возвращается текущее значение.
Примечания
Apple считает стили фото, желобок и кнопку "стилистически устаревшими" и, если нужна рамка, рекомендует использовать стиль рамки bezel или рисовать свою, чтобы более точно соответствовать внешнему виду ОС.
hs.drawing:imageScaling([type]) -> drawingObject or current value
Тип
Метод
Описание
Получить или установить способ масштабирования изображения в рамке объекта рисования, содержащего изображение.
Параметры
type - необязательное строковое значение, которое должно соответствовать одному из следующих (по умолчанию - scaleProportionally):
shrinkToFit - уменьшить изображение, сохранив соотношение сторон, для вписывания в рамку рисования только если изображение больше, чем рамка рисования.
scaleToFit - уменьшить или увеличить изображение, чтобы полностью заполнить рамку рисования. Это не сохраняет соотношение сторон.
none - не выполнять масштабирование или изменение размера изображения.
scaleProportionally - уменьшить или увеличить изображение, чтобы полностью заполнить рамку рисования, сохранив соотношение сторон.
Возвращает
Если задано значение, возвращается объект рисования; если аргумент не задан, возвращается текущее значение.
Поворачивает изображение по часовой стрелке вокруг его центра
Параметры
angle - угол в градусах поворота изображения по часовой стрелке вокруг его центра.
Возвращает
Объект рисования
Примечания
Этот метод работает путем поворота представления изображения внутри его окна рисования. Это означает, что изображение, которое полностью заполняет область просмотра, скорее всего, будет обрезано в некоторых местах. Лучшие результаты достигаются с изображениями, у которых есть свободное пространство вокруг краев, или если hs.drawing.imageScaling установлено в "none".
Устанавливает обратный вызов для событий щелчков мыши mouseUp и mouseDown
Параметры
mouseUpFn - функция, которая может быть nil, и будет вызываться при нажатии на объект рисования и отпускании кнопки мыши. Если этот аргумент равен nil, любой существующий обратный вызов удаляется.
mouseDownFn - функция, которая может быть nil, и будет вызываться при нажатии на объект рисования и первом нажатии кнопки мыши. Если этот аргумент равен nil, любой существующий обратный вызов удаляется.
Возвращает
Объект рисования
Примечания
Не делается различий между левой, правой или другими кнопками мыши — они все вызывают одну и ту же функцию вверх или вниз. Если вам нужно определить, какая именно кнопка была нажата, используйте hs.eventtap.checkMouseButtons() в вашем обратном вызове, чтобы проверить это.
Устанавливает уровень окна более точно, чем sendToBack и bringToFront.
Parameters
theLevel - уровень, указанный как число или строка, где должен быть нарисован этот объект. Если это строка, она должна соответствовать одному из ключей в hs.drawing.windowLevels.
Returns
объект рисования
Notes
см. заметки для hs.drawing.windowLevels
Эти уровни могут не позволить явно разместить объекты рисования вокруг окон macOS с полным экраном
size - таблица size, содержащая ширину и высоту, до которых должен быть изменен размер объекта рисования
Returns
Объект рисования
Notes
Если это вызывается на объекте hs.drawing.text, будет изменён только размер его окна. Если вы также хотите изменить размер шрифта, используйте :setTextSize()
message - Строка, содержащая текст для отображения
Возвращаемое значение
Объект рисования
Примечания
Этот метод следует использовать только для текстовых объектов рисования
Если текст объекта рисования пустой (т.е. ""), изменения стиля могут быть потеряны. Используйте маркер, например пробел (" "), или скройте объект, если изменения стиля необходимо сохранить, но текст должен исчезнуть на время.
Устанавливает цвет текста по умолчанию для объекта рисования
Параметры
color - таблица цветов, как описано в hs.drawing.color
Возвращаемое значение
Объект рисования
Примечания
Этот метод следует вызывать только для текстовых объектов рисования
Этот метод изменяет цвет шрифта для частей объекта текста hs.drawing, у которых в списке атрибутов не установлен конкретный шрифт (см. hs.styledtext для получения более подробной информации).
Устанавливает шрифт по умолчанию для объекта рисования
Параметры
fontname - Строка, содержащая имя шрифта для использования
Возвращаемое значение
Объект рисования
Примечания
Этот метод следует использовать только для текстовых объектов рисования
Этот метод изменяет шрифт для частей объекта текста hs.drawing, у которых в списке атрибутов не установлен конкретный шрифт (см. hs.styledtext для получения более подробной информации).
Устанавливает размер шрифта по умолчанию для объекта рисования
Параметры
size - Числовое значение размера шрифта для использования
Возвращаемое значение
Объект рисования
Примечания
Этот метод следует использовать только для текстовых объектов рисования
Этот метод изменяет размер шрифта для частей объекта текста hs.drawing, у которых в списке атрибутов не установлен конкретный шрифт (см. hs.styledtext для получения более подробной информации).
Устанавливает некоторые простые параметры стиля для всего текста объекта рисования. Для более точного управления стилем, включая наличие нескольких стилей в одном текстовом объекте, используйте hs.styledtext и hs.drawing:setStyledText.
Параметры
textStyle - необязательная таблица, содержащая один или несколько из следующих ключей для установки стиля текста объекта рисования (если таблица равна nil или опущена, стиль сбрасывается до значений по умолчанию hs.drawing):
font - имя шрифта для использования (по умолчанию - системный шрифт)
size - размер шрифта в пунктах для использования (по умолчанию - 27.0)
color - таблица цветов, как описано в hs.drawing.color
alignment - строка, обозначающая выравнивание текста в пределах рамки объекта рисования: * "left" - текст выравнивается по левому краю. * "right" - текст выравнивается по правому краю. * "center" - текст выравнивается по центру. * "justified" - текст выравнивается по ширине. * "natural" - (по умолчанию) естественное выравнивание текста.
lineBreak - строка, обозначающая способ обрезки текста, выходящего за рамки объекта рисования: * "wordWrap" - (по умолчанию) обрезка по словам, если слово не помещается на одной строке. * "charWrap" - обрезка перед первым символом, не помещающимся на строке. * "clip" - не отображать текст за пределами рамки объекта рисования. * "truncateHead" - строка отображается так, что конец помещается в рамку, а пропущенный текст в начале строки обозначается многоточием. * "truncateTail" - строка отображается так, что начало помещается в рамку, а пропущенный текст в конце строки обозначается многоточием. * "truncateMiddle" - строка отображается так, что начало и конец помещаются в рамку, а пропущенный текст посередине обозначается многоточием.
Возвращаемое значение
Объект рисования
Примечания
Этот метод следует использовать только для текстовых объектов рисования
Если текст объекта рисования сейчас пустой (т.е. ""), изменения стиля могут быть потеряны. Используйте маркер, например пробел (" "), или скройте объект, если изменения стиля необходимо сохранить, но текст должен исчезнуть на время.
Изменяются только указанные ключи. Чтобы сбросить объект до всех значений по умолчанию, вызовите этот метод с явным nil в качестве единственного параметра (например, hs.drawing:setTextStyle(nil)
Шрифт, размер шрифта и цвет шрифта также можно установить отдельными методами; этот метод предоставлен для того, чтобы компоненты стиля могли храниться и применяться совместно, а также использоваться hs.drawing.getTextDrawingSize() для определения правильного размера прямоугольника для текстового объекта рисования.