Расширение формы

редактировать
Расширение формы непрямоугольного окна по X
Круглое окно часов. Окно с круглым окном.
Автор (ы) оригинала X.Org Foundation
Стабильный выпуск 1.1 / 2006; 14 лет назад (2006 г.)

В X Window System, X Nonrectangular Window Shape Extension позволяет окнам принимать произвольные, непрямоугольные формы.

Два хорошо известных апплета, использующих расширение формы: oclock, что представляет собой простые круглые аналоговые часы, и xeyes, который показывает два глазка, которые следуют за курсор на экране, как если бы они смотрели на него. Большинство систем X имеют один или другой (или оба) в своих стандартных установках. Кроме того, некоторые оконные менеджеры используют расширение формы для рисования непрямоугольных значков.

Реализация

Приложения могут создавать только прямоугольные окна, но затем могут изменять их форму, чтобы они были произвольной частью исходного прямоугольника. Оставшаяся часть прямоугольника не только прозрачна (показывает, что находится под окном); скорее, это вообще не часть окна. Например, если окно имеет форму с отверстием посередине, не только отверстие показывает то, что находится под окном, но и щелчок в отверстии считается щелчком в том, что находится под окном.

Окно с прямоугольным контуром, но с отверстием посередине.

Приложения создают окна как обычно (с указанием ширины и высоты), но затем могут изменить форму окна, чтобы оно было подмножеством исходной области. отправив серверу отображения X либо список прямоугольников, либо pixmap с глубиной цвета один (черно-белое растровое изображение). Точнее, клиент может запросить прямоугольники или растровое изображение, которые должны быть установлены в качестве новой формы, но также должны быть объединены различными способами (например, пересечены или добавлены) со старой формой. Третий способ изменить форму окна - использовать текущую форму окна или его части.

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

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

См. Также
Внешние ссылки
Последняя правка сделана 2021-06-08 03:39:33
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте