передачи графической информации между системами;
переноса графической информации из одного места в другое (например при помощи магнитной ленты);
передачи графической информации между прикладными программами, использующими ЯГС;
хранения сопровождающей неграфической информации.
Описание метафайла приведено в приложении 7.
Устройства ввода-вывода метафайла рассматриваются ■как графические станции типа МВЫВОД и МВВОД. К этим станциям, однако, неприменимы некоторые функции управления и справочные функции.
Прикладная программа заносит данные в метафайл с помощью функции ЗАПИСАТЬ В МЕТАФАЙЛ.
Для чтения и интерпретации записей метафайла применяются функции: ПОЛУЧИТЬ ТИП ЗАПИСИ ИЗ МЕТАФАЙЛА, СЧИТАТЬ ЗАПИСЬ ИЗ МЕТАФАЙЛА, ИНТЕРПРЕТИРОВАТЬ ЗАПИСЬ. Предполагается, что метафайл состоит из последовательности записей, каждая из которых включает: тип записи, длину блока данных и сам блок данных. Тип записи определяет, может ли запись быть интерпретирована ЯГС либо ее занесла прикладная программа функцией ЗАПИСАТЬ В МЕТАФАЙЛ.
После открытия станции МВВОД первая запись метафайла становится текущей.
Функция ПОЛУЧИТЬ ТИП ЗАПИСИ ИЗ МЕТАФАЙЛА извлекает тип записи и длину блока данных текущей записи.
Функция СЧИТАТЬ ЗАПИСЬ ИЗ МЕТАФАЙЛА копирует содержимое блока данных текущей записи в область, предоставленную прикладной программой, и делает текущей следующую запись метафайла.
Функция ИНТЕРПРЕТИРОВАТЬ ЗАПИСЬ работает с содержимым блока данных, представленных прикладной программой (в том виде, в котором оно было получено с помощью функции СЧИТАТЬ ЗАПИСЬ ИЗ МЕТАФАЙЛА). Она производит необходимые изменения состояния ЯГС, генерирует графический выход в соответствии с содержимым записи. Интерпретация информации об атрибутах примитивов, прямоугольнике отсечения, индикаторе отсечения вызывает изменения в таблице состояния ЯГС. Информация о геометрических атрибутах, выраженная в нормированных координатах, преобразуется с помощью преобразования, ■обратного текущему преобразованию нормирования, а затем заносится в таблицу состояния ЯГС. Информация, относящаяся к функциям управления станцией, может быть интерпретирована на всех графических станциях.
Для сохранения целостности файлов занесение данных в метафайл и считывание из метафайла должны выполняться только под управлением ЯГС. На черт. 12 показана взаимосвязь между прикладной программой, ЯГС и метафайлом.
У р о в н и ЯГС
Введение в уровни
Система ЯГС предназначена для использования в широком диапазоне применений от простого вывода на графопостро-Связь между Я ГС и МЯГС
Считывание из МЯГС
Запись в МЯГС
Записи пользо-
I Графи- ! ческие-
Заііиси для ин-
П
ПРИКЛАДНАЯ ПРОГРАММА
J I
Г рафические функции ЯГС
Записи пользователя
РИКЛАДНАЯ ПРОГРАММАЧерт. 12
итель до формирования динамически перемещающихся изображений и взаимодействия в реальном времени. У многих дисплеев отсутствуют аппаратные возможности (например устройство указания), моделирование которых программным путем может потребовать значительных усилий. Целесообразно допускать реализации ЯГС, которые не включают все функциональные возможности стандарта.
Структура уровней
Функциональные возможности ЯГС подразделяются на следующие основные группы:
вывод — минимальное исполнение, полное исполнение;
ввод — ввод отсутствует, ввод в режиме ЗАПРОС, синхронный ввод, полный ввод;
число графических станций (одна, несколько);
атрибуты — возможны только предварительно определенные -связки и индивидуально задаваемые атрибуты, полная реализация концепции связок;
сегментация — отсутствует, базовая сегментация (без общей памяти сегментов), полная сегментация.
Если при реализации ЯГС допустить произвольную комбинацию возможностей, то скоро появится почти неограниченное число различных диалектов стандарта и станет невозможным сохранить программную совместимость — одну из основных целей настоящего стандарта. В связи с этим было определено девять допустимых уровней реализации ЯГС, позволяющих охватить большую часть существующего оборудования и приложений. Каждая реализация ЯГС обеспечивает функции одного уровня. Реализация ЯГС считается некорректной, если она находится между двумя уровнями.
Уровневая структура ЯГС имеет два независимых компонента: «ввод» и все другие функции, объединяемые под общим названием «вывод».
Имеется четыре уровня вывода:
уровень m — минимальный вывод;
уровень 0 — все примитивы и атрибуты;
уровень 1 — базовая сегментация с полным выводом;
уровень 2 — общая память сегментов.
Имеется три уровня ввода:
уровень а — отсутствие ввода;
уровень b — ввод в режиме ЗАПРОС;
уровень с — полный ввод.
Возможности ЯГС определяются набором доступных функций и диапазоном изменения их параметров. На каждом уровне существуют три категории возможностей:
явно определенные и обязательные возможности —• поддерживаются всеми реализациями ЯГС данного уровня;
явно определенные, но необязательные возможности — если реализация поддерживает эти возможности, то они соответствуют ■определениям функций ЯГС;
концептуально определенные и необязательные возможности — реализация ЯГС может содержать эти возможности в соответствии с общими правилами и концепциями ЯГС.
Набор явно определенных и обязательных возможностей включает:
предварительно определенное число связок вплоть до требуемого номера;
типы линии — от 1 до 4;
типы маркеров — от 1 до 5;
точность представления текста ДО ШТРИХА (уровни вывода 1 и 2);
вид заполнения — ПУСТО;
одно устройство ввода каждого класса (уровни ввода b и с);
тип подсказки и эха — 1 (уровни ввода b и с).
Набор явно определенных, но необязательных возможностей включает:
точность текста ДО ШТРИХА (уровень вывода ш и 0);
виды заполнения — ЗАЛИВКА, ПО ШАБЛОНУ, ШТРИХОВКА;
преобразуемые шаблоны;
приоритет сегментов (уровни вывода 1 и 2);
типы подсказки и эха с номерами больше 1, определенные в настоящем стандарте (уровни ввода b и с)
.Набор концептуально определенных и необязательных возможностей включает:
типы линий больше 4; '
типы маркеров больше 5;
обобщенные примитивы вывода;
типы подсказки и эха сверх определенных в настоящем стандарте (уровни ввода b и с); !
функции расширения.
Явно определенные,' но необязательные возможности1 некоторого уровня становятся явно определенными и обязательными на более высоком уровне ЯГС при расширении диапазона изменения параметров. Каждый уровень ЯГС содержит только Те функции, которые явно определены и обязательны для этого уровня.. Однако диапазоны изменения значений параметров могут содержать дополнительные явно определенные и необязательные, а также концептуально определенные и необязательные возможности.
У ровни функциональности
Каждый уровень содержит следующие средства: Характеристики уровня вывода «гп» — минимальный вывод: 1) ограниченный набор управляющих функций;
ограниченный набор примитивов;
ограниченный набор управляющих атрибутов;
не существует связок и атрибутов;
возможно изменение представления цвета;
в каждый момент времени доступна только одна станция, обладающая возможностями вывода;
допускается преобразование нормирования 0 и только одна устанавливаемое преобразование нормирования;
ограниченный набор справочных функций.
Характеристики уровня вывода «0» (все примитивы и атрибуты):
все возможности уровня вывода «т»;
базовые средства управления;
все примитивы, по крайней мере, в минимальном исполнении;
предварительно определенные связки (изменение связок невозможно);
изменение представления цвета;
в каждый момент доступна лишь одна станция вывода;
метафайл не обязателен, но если он имеется, необходимы средства как ввода, так и вывода;
несколько преобразований нормирования, однако, допустимо иметь преобразование 0 и еще одно устанавливаемое преобразование;
базовые справочные функции;
обеспечено считывание пикселей (устройства, на которых пикселей нет, выдают сообщение об ошибке).
Характеристики уровня вывода «1» (базовая сегментация с полным выводом):
все возможности уровня 0;
полный набор функций управления станцией;
полный набор средств вывода;
полная реализация концепции связок;
несколько графических станций;
станции ввода-вывода метафайла;
несколько устанавливаемых преобразований нормирования;
базовая сегментация (отсутствует общая память сегментов);
соответствующие справочные функции.
Характеристики уровня вывода «2» (общая память сегментов):
все возможные уровни вывода «1»;
общая память сегментов.
Характеристики уровня ввода «а» (отсутствие ввода): средств ввода нет.
Характеристики уровня ввода «Ь» (ввод в режиме ЗАПРОС — синхронный ввод):
функции инициализации устройств ввода и задания режима их работы;
функции ЗАПРОСИТЬ для всех соответствующих устройств;
соответствующие логические устройства ввода включают устройство УКАЗАНИЯ только в комбинации с возможностями уровня вывода «1»;
функция установки входного приоритета вывода.
Характеристики уровня ввода «с» (полный ввод):
все возможности уровня ввода «Ь»;
режимы ОПРОС и СОБЫТИЕ.
В табл. 2 приведен перечень функциональных возможностей каждого допустимого уровня ЯГС. В каждом поле содержатся функции, которые добавляются к функциям, описанным в предыдущих полях той же строки и столбца.
Допустимые различия в реализациях ЯГС, связанные с различными функциональными возможностями, приведены в приложении 6.Таблица 2
Концепция уровней Я ГС
Уровень вывода |
Уровень ввода |
||
а |
ь |
о |
|
m |
Нет ввода, минимальные средства управления, только индивидуально устанавливаемые атрибуты, одно устанавливаемое преобразование нормирования, ограниченный набор функций вывода и атрибутов |
Ввод данных в режиме ЗАПРОС, функции установки режима работы инициализации для логических устройств ввода, отсутствие устройства указания |
Ввод данных в режимах ОПРОС и СОБЫТИЕ, отсутствие устройства указания |
0 |
Отсутствие ввода, базовые средства управления, только предварительно определенные связки; несколько преобразований нормирования, причем хотя бы одно из них является устанавливаемым, все функции вывода, возможно использование станций метафайла |
Ввод данных в режимах ЗАПРОС функции инициализации и установки режима работы для логических устройств ввода, отсутствие режима УКАЗАНИЕ и функции установки входного приоритета поля вывода |
Ввод данных в режиме ОПРОС и СОБЫТИЕ; ■отсутствие выбора элементов |
1 А |
Полный вывод, включая полную реализацию концепции связок, концепцию нескольких графических станций, базовые средства сегментации (за исключением общей памяти сегментов); станции метафайла |
Функция ЗАПРОСИТЬ УКАЗАНИЕ, функции инициализации и установки режима работы для устройства УКАЗАНИЯ |
: Ввод данных в режиме ОПРОС и СОБЫТИЕ для устройства УКАЗАНИЯ |
2 |
Общая память сегментов |
|
|
На различных уровнях число обязательных возможностей может быть различным. Минимальные характеристики, которые должны обеспечивать уровни ЯГС, приведены в табл. 3. Число 0 указывает определенную, но необязательную на данном уровне возможность. Прочерк означает, что соответствующая функция на данном уровне не определена.
Таблица 3>
Минимальные возможности, необходимые на каждом уровне Я ГС
Возможность |
Уровень |
|||||||||||
та |
mb |
тс |
Оа |
оь |
Ос |
1а |
1Ь |
1с |
2а |
2Ь |
2а |
|
Количество цветов (интенсивностей) |
1 |
1 |
■ 1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Типы линий |
4 |
4 |
4 |
4 |
4 |
4. |
4 |
4' |
4 |
4 |
4 |
4 |
Ширина линий |
|
— |
•—- |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
Предварительно определенные связки ломаной |
5 |
5 |
5 |
5 |
' 5 |
5 |
5 |
5 |
&> |
|||
Устанавливаемые связки |
. |
20 |
20 |
20 |
20 |
20 |
20 |
|||||
Типы маркера |
5 |
5 |
5 |
5 |
5 |
5 |
5 |
5 |
5 |
5 |
5 |
5- |
Размеры маркера |
— |
— |
— |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Предварительно определенные связки полимаркера |
— |
.— |
5 |
5 |
5 |
5 |
5 |
5 |
5 |
5 |
5> |
|
Устанавливаемые связки полимаркера ломаной |
— |
— |
20 |
20 |
20 |
20 |
20 |
20 |
||||
Высота литеры |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
F |
Масштабы расширения литеры |
— |
— |
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Шрифты точности ДО СТРОКИ |
1 |
1 |
1 |
1 |
1 |
I |
1 |
1 |
1 |
1 |
1 |
b |
Шрифты точности ДО ЛИТЕРЫ |
— |
— |
— |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Шрифты точности ДО ШТРИХА |
— |
— |
0 |
0 |
0 |
2 |
2 |
2 |
2 |
2 |
2 |
|
Предварительно определенные связки текста |
— |
— |
— |
2 |
2 |
2 |
6 |
6 |
6 |
6 |
6 |
6- |
Устанавливаемые связки текста |
— |
— |
— |
— |
— |
— |
.20 |
20 |
20 |
20 |
20 |
20» |
Предварительно определенные шаблоны |
— |
— |
— |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Устанавливаемые шаблоны |
— |
— |
— |
.— |
10 |
10 |
‘ 10 |
10 |
10 |
10 |
||
Типы штриховки |
— |
— |
— |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
Предварительно определенные связки полигональной области |
5 |
5 |
5 |
5 |
5 |
5 |
5 |
5 |
5- |
|||
Устанавливаемые связи полигональной области |
— |
|
10 |
10 |
■ 10 |
10 |
10 |
10« |
||||
Устанавливаемые преобразования нормирования |
1 |
1 |
1 |
1 |
1 |
1 |
. 10 |
10 |
10 |
10 |
10 |
10> |
Приоритеты сегментов |
— |
— |
— |
— |
— |
— |
2 |
2 |
2 |
2 |
2 |
2' |