Расширение формы
![]() | Эта статья включает список литературы , связанную литературу или внешние ссылки , но ее источники остаются неясными, поскольку в ней отсутствуют встроенные цитаты . ( Май 2012 г. ) |
![]() Круглое окно. | |
Оригинальный автор(ы) | Фонд X.Org |
---|---|
Стабильная версия | 1.1 / 2006 г |
В системе X Window расширение X Nonrectangular Window Shape Extension позволяет придавать окнам произвольную, непрямоугольную форму.
Два хорошо известных апплета, использующих расширение shape, — это oclock , представляющий собой простые круглые аналоговые часы, и xeyes , который показывает два выпученных глаза , которые следуют за курсором на экране, как если бы они наблюдали за ним. Большинство систем X имеют один или другой (или оба) в своих стандартных установках. Кроме того, некоторые оконные менеджеры используют расширение shape для рисования непрямоугольных значков.
Выполнение
[ редактировать ]Приложения могут создавать только прямоугольные окна, но затем могут изменять ихфигура будет произвольной частью исходного прямоугольника. Оставшаяся площадьпрямоугольник не только прозрачный (показывает то, что находится под окном); скорее,это вообще не часть окна. Например, если окно имеет форму отверстия посередине, не только отверстие показывает то, что находится под окном, но щелчок в отверстии считается щелчком того, что находится под окном.

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