Общее устройство X Window
Система X Window представляет собой совокупность программ и библиотек. "Сердцем" её
является специальная программа - X-сервер. Это отдельный UNIX -процесс,
имеющий место быть на компьютере, к которому присоединён дисплей. Именно сервер знает
особенности конкретной аппаратуры, знает, что надо предпринять, чтобы вывести какой-либо
графический объект, например, примитив, на экран. Он же умеет воспринимать и обрабатывать
сигналы, приходящие от клавиатуры и мыши.
Сервер общается с программами-клиентами, посылая им или принимая от них пакеты данных.
Если сервер и клиент находятся на разных машинах, то данные посылаются по сети, а если на
одном, - то используется внутренний канал. Например, если сервер обнаруживает, что
пользователь нажал кнопку мыши, то он подготавливает соответствующий пакет (событие) и
посылает его тому клиенту, в чьём окне находился курсор мыши в момент нажатия кнопки. И
наоборот, если программе надо вывести что-либо на экран дисплея, она создаёт необходимый
пакет данных и посылает его серверу. Очевидно, описание этого взаимодействия, форматов
пакетов и т.п. и составляет спецификацию вышеупомянутого X-протокола.
Однако, чтобы программировать для X, совсем необязательно знать детали реализации
сервера и X -протокола. Система предоставляет стандартную библиотеку процедур, с
помощью которых программы осуществляют доступ к услугам X
"на высоком уровне". Так, для того, чтобы вывести на экран точку, достаточно вызвать
соответствующую стандартную процедуру, передав ей требуемые параметры. Эта процедура
выполнит всю работу по формированию пакетов данных и передаче их серверу.
X окно
Как уже упоминалось ранее, окно - это базовое понятие в X. Оно представляет, обычно,
прямоугольную область на экране, предоставляемую системой программе-клиенту. Последняя
использует окно для вывода графической информации.
Око имеет внутренность и край. Основными атрибутами окна являются ширина и высота
внутренности, а также ширина (толщина) края. Эти параметры называются геометрией окна.
С каждым окном связывается система координат, начало которой находится в левом верхнем углу
окна (точнее - его внутренности). Ось x направлена вправо, а ось y - вниз. Единица
измерения по обеим осям - пиксель.
X Window позволяет программе создавать несколько окон одновременно. Они связаны в
иерархию, в которой одни являются "родителями", а другие - "потомками". Сам сервер на каждом
экране создаёт одно основное окно, являющееся самым верхним "родителем" всех остальных окон.
Это окно называется "корневым" (root).
Управление окнами
Окна могут располагаться на экране произвольным образом, перекрывая друг друга. X
Window имеет набор средств, пользуясь которыми, программа-клиент может изменять размеры
окон и их положение на экране. Особенностью системы является то, что она не имеет встроенной
возможности управлять окнами с помощью мышки или клавиатуры. Чтобы это можно было
осуществить, нужен специальный клиент - менеджер окон (window manager).
Однако, менеджер не может корректно управлять окнами, ничего о них не зная. Окна могут
обладать различными свойствами, которые должен обеспечивать именно менеджер окон:
например, во многих случаях удобно иметь заголовки окон, в других - желательно, чтобы окно
нельзя было сделать меньше, или наоборот - больше, определённого размера. Окно может быть
"схлопнуто" в пиктограмму ("иконку") - в этом случае менеджер должен знать, какую
пиктограмму использовать и как её назвать. Клиенты могут сообщать менеджеру свои пожелания
относительно окон двумя способами:
- при создании окна X могут быть переданы "рекомендации" (hints) о
начальном положении окна, его геометрии, минимальных и максимальных
размерах и т.д.;
- можно использовать встроенный в X способ общения между
программами - механизм "свойств".
Графические возможности X Window
Система X Window предназначена для работы на растровых дисплеях. Число бит на пиксель
называют глубиной или толщиной дисплея. Биты с одинаковыми номерами (одинаковые двоичные
разряды) во всех пикселях образуют как бы плоскость, как бы параллельную экрану. Её называют
цветовой плоскостью. X позволяет рисовать в любой цветовой плоскости (-ях), не
затрагивая остальные.
Значение пикселя не задаёт цвет точки на экране непосредственно, но задаёт номер ячейки в
специальном массиве, в которой и хранится значение цвета, т.е. значение пикселя задаёт номер
цвета в текущей палитре.
X имеет большой набор процедур, позволяющих рисовать графические примитивы: точки,
линии, дуги, текст; работать с областями произвольной формы.
"Свойства" и атомы
В X Window встроены средства для обеспечения информацией между программами-
клиентами. Для этого используется механизм "свойств" (properties). "Свойство" - это
информационная структура, связанная с некоторым объектом, например, окном, доступная всем
клиентам X. Каждое свойство имеет имя и уникальный идентификатор - атом. Обычно,
имена свойств записываются большими буквами. Атомы используются для доступа к содержимому
свойств с тем, чтобы уменьшить объём информации, пересылаемой между клиентами и X
сервером.
В X предусмотрен ряд процедур, позволяющих перевести имя свойства в уникальный атом,
и, наоборот, по атому получить необходимые данные.
Некоторые свойства и соответствующие им атомы являются предопределёнными и создаются в
момент инициализации сервера.
[Назад]
[Содержание]
[Вперед]