
Московский Государственный Технический Университет
им. Н.Э. Баумана
Д.Е. Беломойцев, Т.М. Волосатова, С.В. Родионов
Разработка графических приложений
В СРЕДЕ X WINDOW SYSTEM
Учебное пособие
Москва
Издательство МГТУ им. Н.Э. Баумана
2014
ВВЕДЕНИЕ
Еще в конце прошлого века в лаборатории компьютерных исследований Массачусетского Технологического Института (США) была разработана операционная среда X Window System для оконной и графической поддержки программного интерфейса OS UNIX. Ее системная концепция и программная реализация оказались настолько удачны, что до настоящего времени она остается графическим стандартом de-facto любых разновидностей OS UNIX и LINUX.
Программная архитектура X Window System основана на концептуальной модели клиент-сервер. Согласно этой модели системная программа X-сервер реализует графические запросы прикладных программ X-клиентов, обеспечивая их доступ к аппаратным ресурсам компьютера. По таким прикладным запросам осуществляются, в частности, различные манипуляции с графическими окнами и геометрические построения изображений в них. В обратном направлении X-сервер осуществляет передачу аппаратных и программных событий, которые происходят во время графической сессии X-клиентов. Программные события связаны с отображением, расположением и реконфигурацией графических окон. Аппаратные события сопровождают графический ввод или выбор данных с помощью клавиатуры и мыши. Запросы и события связаны с обработкой информации в графических окнах, который декорирует и обслуживает оконный менеджер. Эта управляющая программа обеспечивает графический интерфейс X Window System, который реализуется через графические окна X-клиентов.
Системные программы X-сервера, оконного менеджера и стандартных клиентов X Window System дополняют инструментальные средства разработки оконно-графических приложений или прикладных X-клиентов на языке С. Этот программный инструментарий составляют библиотеки объектных модулей графических функций и заголовки их интерфейсов. Они различаются по уровню детализации графических спецификаций. Методологически наиболее важный базовый уровень Xlib образуют библиотека libX11.so(.a) с основным заголовком <Xlib.h> и рядом дополнительных заголовков для нее. Базовый программный интерфейс Xlib достаточно подробно документирован и рассмотрен в ряде специализированных отечественных и зарубежных публикаций для разработчиков прикладной графики OS UNIX и LINUX, но мало научно-технических примеров. В предлагаемом учебном пособии подробно разбираются три методических примера, которые иллюстрируют и демонстрируют различные графические аспекты базовой технологии прикладного программирования клиентов X Window System.
В первом примере рассмотрена техника программирования фона графических окон, когда фон образует узор из повторяющихся геометрических фигур, которые заполняют плоскость окна, независимо от его габаритов и реконфигураций. В программе этого примера фон графического окна реализует пиксельная карта рисунка сопряженных колец, который можно легко заменить произвольным узором из любых топологических многоугольников. При разборе этого примера основное внимание уделено технике графической обработки пиксельной карты фона. Следует также обратить внимание на математическую проблематику замощения плоскости, которая изучается в геометрической теории графов.
Во втором примере рассмотрена программа раскраски граней многоугольного графа плоской укладки пирамиды (треугольная призма). Векторное кодирование геометрической модели пирамиды в этой программе позволяет легко приспособить ее для раскраски произвольного многоугольного графа или карты. Основное значение придается технике графической обработки региональных запросов и масштабирования изображений при интерактивной реконфигурации графического окна программы для различных растровых или фреймовых оконных менеджеров. Следует также обратить внимание на теоретические вопросы построения плоской прямолинейной укладки правильных и полуправильных многогранников с выбором оптимального варианта правильной раскраски их граней минимальным набором цветов.
В третьем примере разбирается графическая программа одной компьютерной игры, которая является типичным вариантом позиционных игр класса НИМ с выбором (положения) игровых фишек заданного набора. Основная графическая идея этой программы связана с реализацией многооконного интерфейса игрового поля, где позиции игровых фишек заданы прямоугольной таблицей рядов окон с индивидуальной идентификацией событий для их обработки. В общем случае такая полиоконная технология может применяться для графического редактирования разнообразных дискретных матричных структур, элементы которых представляются рядами графических окон.
Перечисленные примеры программ рассматриваются на уровне разбора исходного кода их программных модулей, прикладных функций и логических блоков. Кроме чисто графических аспектов, особое внимание уделено информационным структурам программ и функциональным связям их модулей. Программная конфигурация всех примеров предполагает возможность использования и модификации их исходного кода для выполнения соответствующих учебных заданий по графическому программированию.