: Программирование в среде X Window на основе библиотеки Xlib :

С о д е р ж а н и е

Введение

I. Базовые понятия X Window
Характеристики X-окна
Менеджер окон
Свойства и атомы
Первый пример
События
Атрибуты окна
Операции над окнами

II. Текст и графика
Графический контекст
Характеристики графического контекста
Вывод текста, работа с шрифтами
Использование цвета
Битовые и пиксельные карты
Изменяем курсор мыши

III. Работа с внешними устройствами
Клавиатура
Мышь

IV. Ресурсы программ
Формат файла ресурсов
Доступ к ресурсам программ

V. Взаимодействие клиентов
Механизм свойств
Работаем с менеджером окон

VI. Дополнительная информация

VII. Литература

Характеристики X-окна

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

Рис. 1.2. Общий вид окна X Window

Из рисунка видно, что окно имеет внутренность и край. Основными атрибутами окна являются ширина и высота внутренности, а также ширина края. Упомянутые параметры окна называются геометрией окна. Часто самим пользователям дают определять геометрию и ширину границы окна.

Окно обладает собственной системой координат с начальным положением в левом верхнем углу окна, обозначением вертикальной оси, направленной вниз, как "y", и горизонтальной, направленной вправо, как "x" и единица измерения по обеим осям в пикселях.

Ещё одна характеристика окна, это глубина цвета в X Window. Система создавалась для потенциальной поддержки любых устройств растрового графического вывода, которые существенно отличаются принципами формирования цвета из кода пикселя. В подобного рода устройствах изображение представляется матрицей светящихся точек - пикселей. Число бит-на-пискель называют "толщиной" или глубиной дисплея. Глубина - число битов, доступных для каждого пикселя, чтобы показать цвет (или градации серого) как правило, 2, 4, 8, 16 или 24. Визуально это способ, по которому определяется воспроизведение цветной или одноцветной картинки на мониторе. Биты с одинаковыми номерами во всех пикселях образуют как бы плоскость, параллельную экрану. Ее называют цветовой плоскостью. X позволяет рисовать в любой цветовой плоскости (или плоскостях), не затрагивая остальные.

Значение пикселя не задает непосредственно цвет точки на экране. Последний определяется с помощью специального массива данных, называемого палитрой. Цвет есть содержимое ячейки палитры, номер которой равен значению пикселя. X-сервер поддерживает как разделяемую между всеми клиентами общую палитру, так и возможность создания для каждого клиента собственной виртуальной палитры.

Окна могут быть двух типов: InputOutput (для ввода-вывода) и InputOnly (только для ввода). Окно первого типа - это обычное окно. Окно второго типа не может использоваться для рисования. У данного окна нет края, оно "прозрачно". Окна этого типа используются достаточно редко.

Окно имеет набор признаков. Признаки окна управляют многими аспектами появления и отображения окна:

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

Иерархия окон

Комбинация X-сервера с соответствующим аппаратно-программным обеспечением образует в терминах X Window System "дисплей". Дисплеем может быть рабочая станция или специализированный бездисковый компьютер весьма экзотической архитектуры -- это не важно. Главное условие, чтобы дисплей мог выполнять программу X-сервера и обслуживать одну и единственную клавиатуру и какой-нибудь позиционирующее устройство (мышь, трекбол и т. д.). Особенность дисплея - принципиальная способность поддержки множества физических "экранов" - комбинаций отвечающего за отображение растровой картинки "железа" и мониторов. Количество обслуживаемых экранов в сегодняшних реализациях X Window ограничено максимальным значением целого числа, поддерживаемым системой (для 32-битовых машин - 231 соответственно). Каждый экран дисплея может содержать множество перекрывающихся окон - прямоугольных или произвольной формы (с учетом добавления расширений системы X Window) отображаемых областей растровой памяти. Окна образуют строгие иерархии на основании простого правила - в каждом экране по умолчанию существует одно уникальное окно-родитель (корневое или root-окно), каждое окно должно иметь родителя и само может быть родителем для других окон. Иерархия устроена подобно генеалогическому дереву, за исключением того, что только один родитель может создавать потомок.

Сам сервер на каждом экране создает одно основное окно, которое является самым верхним родителем всех остальных окон. Это окно будем называть главным или корневым.

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

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

"Наследственная" иерархия (родитель-потомок) в X Window дополняется так называемым "стековым порядком", информирующем о полном или частичном перекрытии одних окон другими. Забота о перерисовке содержимого окна, изменившего свое положение в "стековом порядке", - это забота программиста, а не X Window (что, к счастью не сильно сказалось на сложности программирования системы).

<<< Содержание >>>