Основные концепции и функции ядра графических систем.

Базовое программное обеспечение диалоговых графических систем.

15.1.Основные концепции и функции ядра графических систем.

15.2.Функции формирования примитивов вывода и управления их атрибутами.

 

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

ПО МГ разделяют на базовое и прикладное.

Базовое программное обеспечение диалоговых графических систем (БПО ДГС) предназначено для реализации общих для многих областей применения функций графического ввода - вывода и организации процесса диалогового взаимодействия человека с ЭВМ.

Прикладное программное обеспечение машинной графики (ППО МГ) используется для решения задач графического ввода - вывода конкретной области применения на основе использования возможностей БПО ДГС.

БПО ДГС обеспечивает решение следующих основных задач:

получение графических изображений путем задания и объединения простейших графических объектов (например, точка, отрезок прямой, строка текста, дуга окружности);

выполнение элементарных преобразований над этими изображениями (например, сдвиг, поворот, масштабирование);

управление режимами работы устройств ввода диалоговых систем (например, мышь, клавиатура) и прием данных, введенных оператором системы с помощью этих устройств;

разработку диалогового графического языка взаимодействия человека с ЭВМ и организацию процесса интерпретации.

Учитывая многоцелевое назначение, БПО ДГС имеет достаточно высокий уровень унификации и обеспечивает независимость ППО МГ от архитектуры и возможностей конкретных устройств графического ввода - вывода. На выполнение этих требований направлены работы по стандартизации, интерфейсов и функций ПО МГ. Основу такой унификации составляет, принятый Международной организацией по стандартизации (ISO) стандарт DIS 7942 (draft) на Ядро Графических систем - ЯГС (Graphical Kernel System - GKS).

ЯГС определяет набор базовых функций для программирования в области МГ, который применяется для разработок графических систем, начиная от пассивного вывода до диалоговых систем высокого уровня.

Одна из основных концепций ЯГС - разделение функций вывода и ввода. При этом процессом диалогового взаимодействия управляет программа, использующая ЯГС. Полное разделение и независимость функций вывода и функций ввода, во-первых, обеспечивает хорошую структурируемость прикладных программ, во-вторых, способствует универсальности применения ЯГС в различных системах.

В описании ЯГС определена семантика графических функций, а не синтаксис, поэтому ЯГС является языково - независимым ядром графических систем. При реализации предполагается его привязка к конкретным языкам программирования.

При этом все базовые графические функции выполняются только через ЯГС. Вызов функций ЯГС реализуется с помощью языкового интерфейса, который зависит от конкретного языка программирования и обычно выполняется в виде подпрограмм или процедур.

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

РС состоят из одной поверхности отображения и нескольких устройств ввода. Концептуальная модель ЯГС - это несколько РС, функционирующих под управлением одной аппаратно - независимой части системы (рис. 1). Оператор работает одновременно с несколькими рабочими станциями. Ведет диалог с помощью графического дисплея и по мере необходимости получает копии выводимой через ЯГС информации на графопостроителе.

Рис. 37

Преобразование независимого от устройств представления функций ЯГС в зависимое при выводе и обратно при вводе выполняется программами аппаратно - зависимого слоя, которые называются графическими драйверами устройств.

При переносе графической системы с одной РС на другую ППО, использующее ЯГС, легко настраивается на особенности новой РС путем замены графических драйверов.

Основные характеристики графических устройств задаются в таблицах описания РС. Для выяснения возможностей РС в ЯГС имеются функции запроса, которые передают информацию прикладной программе из таблиц РС. Используя функции запроса, прикладная программа может автоматически настраиваться на возможности физической реализации РС.

Стандартом определены шесть категорий РС:

вывода (ВЫВ); ввода (ВВО); ввода - вывода (В/В);общая память сегментов (ОПС); вывод в метафайл (МВЫВ); ввод из метафайла (МВВО).

Последние три категории РС являются специальными или функциями ЯГС, которые представляют собой средства для временного (ОПС) и постоянного (МВЫВ и МВВО) хранения графической информации в независимых от конкретных устройств форматах данных.

Графический вывод в ЯГС строится на основе двух групп элементов, которые называются выходными примитивами и атрибутами примитивов. Выходные примитивы являются абстракцией основных действий, выполняемых графическими устройствами при построении изображения, таких как вычерчивание линий, текстовых строк, специальных символов или маркеров, заполнение области изображения штриховкой или узором.

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

Различают геометрические и негеометрические атрибуты. Значения геометрических атрибутов задаются в тех же единицах, что и параметры примитивов, и подвергаются тем же преобразованиям в процессе визуализации. к таким атрибутам относятся ширина, высота и расстояние между символами, а также размеры фигур для заполнения площади.

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

Системы координат и преобразования. В ЯГС прикладной программист может задавать изображение в реальной координатной системе объекта или процесса, которую принято называть глобальной или мировой системой координат (МК). Кроме того, каждое устройство имеет свою систему координат устройства (КУ), которая зависит от его типа и характеристик. Для графопостроителей единицей измерения КУ являются шаги в долях миллиметра, а для дисплеев просто адрес на дискретной сетке 512´512, 1024´1024, 2048´2048. На графопостроитель чаще требуется выводить все изображения, а на графический дисплей - только некоторую его часть.

Для достижения независимости от типов устройств в ЯГС вся геометрическая информация (координаты), содержащаяся в выходных примитивах, атрибутах и логических данных, от устройства ввода позиции подвергается преобразованиям, которые определяются соотношением трех координатных систем:

1) мировых координат, используемых прикладным программистом;

2) нормированными координатами (НК), применяемыми для определения единой промежуточной координатной системы для всех РС;

3)координатами устройства - одна координатная система для каждой РС, в которой описываются примитивы в поле отображения данной РС.

Выходные примитивы и атрибуты пересчитываются из МК в НК с помощью преобразований нормирования, из НК в НК с помощью преобразования сегмента и из НК в КУ с помощью преобразований на РС. Данные от устройства ввода позиций пересчитываются с помощью обратных преобразований РС КУ в НК и одного из обратных преобразований из НК в МК.

ЯГС обеспечивает отображение нескольких систем с мировых координат на отдельные области единого пространства НК с помощью определения соответствующего преобразований нормирования и организацию вывода различных частей скомпонованного изображения в НК на разные РС посредством специальных преобразований НК в КУ для каждой РС.

Сегментация. Для ускорения модификации изображения, что особенно важно для диалоговых систем, удобно разделять все изображения на части, которые в ЯГС названы сегментами. Обычно декомпозиция изображения на сегменты тесно связана с декомпозицией объекта проектирования на структурные элементы.

В ЯГС сегмент - наименьшая единица изображения, которая идентифицируется прикладной программой с помощью уникального имени и подвергается преобразованиям и изменениям.

В любой момент времени может быть открыт только один сегмент. В процессе генерации все выходные примитивы вместе с атрибутами попадают в открытый сегмент. Из сегмента нельзя удалять примитивы, и в закрытый сегмент нельзя их добавлять. Если требуется модификация внутреннего содержания сегмента, он должен быть уничтожен и сгенерирован прикладной программой заново с необходимыми модификациями.

Сегменты подвергаются аффинным преобразованиям в НК. Эти преобразования определяются именем сегмента и матрицей преобразований размерностей 2´3. Преобразование сегментов происходит после преобразования нормирования, но перед отсечением и преобразованием в координаты устройства.

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

В ЯГС сегменты являются единицами хранения графической информации. Сегмент запоминается на всех рабочих станциях, которые активны во время его создания. Для этой цели на каждой РС используется зависимая от рабочей станции память сегментов станции (ПСС). Если РС не имеет аппаратных средств для хранения сегментов, реализация ЯГС соответствующего уровня обеспечивает сохранение сегментов с помощью программных средств. Чтобы дать возможность рабочим станциям обмениваться сегментами, в ЯГС определена специальная РС - независимая от рабочих станций общая память сегментов (ОПС).

Примитивы вывода из хранящихся в ОПС сегментов можно вставлять в открытый сегмент или пересылать целый сегмент из ОПС в некоторую РС. В любом случае сегмент в ЯГС состоит лишь из примитивов и их атрибутов и не включает никакие другие сегменты. Общая схема потока данных для графического вывода в ЯГС представлена на рис. 38.

Ввод информации в ЯГС основан на концепции логических устройств ввода (ЛУВ), что позволяет обеспечить независимость диалоговых графических программ то набора физических устройств ввода конкретной реализации РС ввода или ввода - вывода.

ЛУВ в ЯГС подразделяются на шесть классов, каждый из которых характеризуется своим типом данных в виде логического входного значения: координат введенной позиции, вещественного числа, строки текста, имени сегмента и идентификатора примитива, указанных на экране, номера выбранной функции, координат последовательности позиций.

ЯГС требует хотя бы одного устройства каждого класса для рабочих станций ввода и ввода - вывода. ЛУВ в рабочих станциях можно реализовать, используя различные физические устройства ввода, например, выбор функции с помощью функциональной клавиатуры или мышью из меню команд, а ввод координат с помощью шарового указателя или с планшета ввода.

Действия с устройствами ввода должны сопровождаться подсказкой и эхо отображением вводимых значений. ЯГС определяет типы подсказок и эхо индивидуально для каждого класса ЛУВ.

Предусматривается три режима работы ЛУВ: синхронный ввод или запрос, опрос текущего значения ЛУВ и асинхронный ввод или ввод в режиме прерываний.

Рабочие состояния ЯГС относятся к одним из главных концептуальных вопросов его взаимодействия с прикладными программами. ЯГС находится в одном из пяти состояний (рис. 39): ГЯЗК - ЯГС закрыто; ГЯОТ - ЯГС открыто; СТОТ - по крайней мере одна РС открыта; СТАК - по крайней мере одна РС активна; СГОТ - сегмент открыт.

Рис. 38

 

Значение, определяющее рабочее состояние, содержится в глобальной статической переменной, которой до первого обращения к ЯГС присваивается значение ГЯЗК. Рабочие состояния ЯГС отличаются друг от друга совокупностью функций ЯГС, которые разрешены для выполнения.

В целом, внутреннее состояние ЯГС определяется совокупностью переменных, которые представляют его внутреннюю структуру данных в виде следующих таблиц: таблицы рабочих состояний ЯГС; таблицы состояний сегмента для каждого существующего сегмента; таблицы входной очереди; таблицы состояний РС для каждой открытой РС; таблицы описания РС для каждого возможного типа РС в системе; таблицы ошибочных состояний ЯГС.

Содержащаяся в этих таблицах и списках информация доступна прикладной программе посредством имеющихся в ЯГС функций запроса.

Рис. 39