передачи графической информации между системами;

переноса графической информации из одного места в другое (например при помощи магнитной ленты);

передачи графической информации между прикладными про­граммами, использующими ЯГС;

хранения сопровождающей неграфической информации.

Описание метафайла приведено в приложении 7.

  1. Устройства ввода-вывода метафайла рассматриваются ■как графические станции типа МВЫВОД и МВВОД. К этим стан­циям, однако, неприменимы некоторые функции управления и справочные функции.

  2. Прикладная программа заносит данные в метафайл с помощью функции ЗАПИСАТЬ В МЕТАФАЙЛ.

  3. Для чтения и интерпретации записей метафайла приме­няются функции: ПОЛУЧИТЬ ТИП ЗАПИСИ ИЗ МЕТАФАЙЛА, СЧИТАТЬ ЗАПИСЬ ИЗ МЕТАФАЙЛА, ИНТЕРПРЕТИРОВАТЬ ЗАПИСЬ. Предполагается, что метафайл состоит из последова­тельности записей, каждая из которых включает: тип записи, длину блока данных и сам блок данных. Тип записи определяет, может ли запись быть интерпретирована ЯГС либо ее занесла прикладная программа функцией ЗАПИСАТЬ В МЕТАФАЙЛ.

После открытия станции МВВОД первая запись метафайла ста­новится текущей.

  1. Функция ПОЛУЧИТЬ ТИП ЗАПИСИ ИЗ МЕТАФАЙЛА извлекает тип записи и длину блока данных текущей записи.

  2. Функция СЧИТАТЬ ЗАПИСЬ ИЗ МЕТАФАЙЛА копи­рует содержимое блока данных текущей записи в область, предос­тавленную прикладной программой, и делает текущей следующую запись метафайла.

  3. Функция ИНТЕРПРЕТИРОВАТЬ ЗАПИСЬ работает с содержимым блока данных, представленных прикладной програм­мой (в том виде, в котором оно было получено с помощью функции СЧИТАТЬ ЗАПИСЬ ИЗ МЕТАФАЙЛА). Она производит необ­ходимые изменения состояния ЯГС, генерирует графический вы­ход в соответствии с содержимым записи. Интерпретация инфор­мации об атрибутах примитивов, прямоугольнике отсечения, инди­каторе отсечения вызывает изменения в таблице состояния ЯГС. Информация о геометрических атрибутах, выраженная в нормиро­ванных координатах, преобразуется с помощью преобразования, ■обратного текущему преобразованию нормирования, а затем за­носится в таблицу состояния ЯГС. Информация, относящаяся к функциям управления станцией, может быть интерпретирована на всех графических станциях.

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

  1. У р о в н и ЯГС

    1. Введение в уровни

Система ЯГС предназначена для использования в ши­роком диапазоне применений от простого вывода на графопостро-Связь между Я ГС и МЯГС

Считывание из МЯГС


Запись в МЯГС





Записи пользо-

I Графи- ! ческие-

Заііиси для ин-



П

ПРИКЛАДНАЯ ПРОГРАММА

J I

Г рафические функции ЯГС

Записи пользо­вателя

РИКЛАДНАЯ ПРОГРАММА

Черт. 12

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

  1. Структура уровней

    1. Функциональные возможности ЯГС подразделяются на следующие основные группы:

вывод — минимальное исполнение, полное исполнение;

ввод — ввод отсутствует, ввод в режиме ЗАПРОС, синхрон­ный ввод, полный ввод;

число графических станций (одна, несколько);

атрибуты — возможны только предварительно определенные -связки и индивидуально задаваемые атрибуты, полная реализация концепции связок;

сегментация — отсутствует, базовая сегментация (без общей памяти сегментов), полная сегментация.

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

  2. Уровневая структура ЯГС имеет два независимых компонента: «ввод» и все другие функции, объединяемые под об­щим названием «вывод».

Имеется четыре уровня вывода:

уровень m — минимальный вывод;

уровень 0 — все примитивы и атрибуты;

уровень 1 — базовая сегментация с полным выводом;

уровень 2 — общая память сегментов.

Имеется три уровня ввода:

уровень а — отсутствие ввода;

уровень b — ввод в режиме ЗАПРОС;

уровень с — полный ввод.

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

явно определенные и обязательные возможности —• поддержи­ваются всеми реализациями ЯГС данного уровня;

явно определенные, но необязательные возможности — если реализация поддерживает эти возможности, то они соответствуют ■определениям функций ЯГС;

концептуально определенные и необязательные возможности — реализация ЯГС может содержать эти возможности в соответствии с общими правилами и концепциями ЯГС.

  1. Набор явно определенных и обязательных возможнос­тей включает:

предварительно определенное число связок вплоть до требуе­мого номера;

типы линии — от 1 до 4;

типы маркеров — от 1 до 5;

точность представления текста ДО ШТРИХА (уровни вывода 1 и 2);

вид заполнения — ПУСТО;

одно устройство ввода каждого класса (уровни ввода b и с);

тип подсказки и эха — 1 (уровни ввода b и с).

  1. Набор явно определенных, но необязательных возмож­ностей включает:

точность текста ДО ШТРИХА (уровень вывода ш и 0);

виды заполнения — ЗАЛИВКА, ПО ШАБЛОНУ, ШТРИХОВ­КА;

преобразуемые шаблоны;

приоритет сегментов (уровни вывода 1 и 2);

типы подсказки и эха с номерами больше 1, определенные в настоящем стандарте (уровни ввода b и с)

  1. .Набор концептуально определенных и необязательных возможностей включает:

типы линий больше 4; '

типы маркеров больше 5;

обобщенные примитивы вывода;

типы подсказки и эха сверх определенных в настоящем стан­дарте (уровни ввода b и с); !

функции расширения.

    1. Явно определенные,' но необязательные возможности1 некоторого уровня становятся явно определенными и обязательны­ми на более высоком уровне ЯГС при расширении диапазона изме­нения параметров. Каждый уровень ЯГС содержит только Те фун­кции, которые явно определены и обязательны для этого уровня.. Однако диапазоны изменения значений параметров могут содер­жать дополнительные явно определенные и необязательные, а так­же концептуально определенные и необязательные возможности.

  1. У ровни функциональности

    1. Каждый уровень содержит следующие средства: Характеристики уровня вывода «гп» — минимальный вывод: 1) ограниченный набор управляющих функций;

  1. ограниченный набор примитивов;

  2. ограниченный набор управляющих атрибутов;

  3. не существует связок и атрибутов;

  4. возможно изменение представления цвета;

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

  6. допускается преобразование нормирования 0 и только одна устанавливаемое преобразование нормирования;

  7. ограниченный набор справочных функций.

  1. Характеристики уровня вывода «0» (все примитивы и атрибуты):

  1. все возможности уровня вывода «т»;

  2. базовые средства управления;

  3. все примитивы, по крайней мере, в минимальном исполне­нии;

  4. предварительно определенные связки (изменение связок не­возможно);

  5. изменение представления цвета;

  6. в каждый момент доступна лишь одна станция вывода;

  7. метафайл не обязателен, но если он имеется, необходимы средства как ввода, так и вывода;

  8. несколько преобразований нормирования, однако, допусти­мо иметь преобразование 0 и еще одно устанавливаемое преобра­зование;

  9. базовые справочные функции;

  10. обеспечено считывание пикселей (устройства, на которых пикселей нет, выдают сообщение об ошибке).

  1. Характеристики уровня вывода «1» (базовая сегмен­тация с полным выводом):

  1. все возможности уровня 0;

  2. полный набор функций управления станцией;

  3. полный набор средств вывода;

  4. полная реализация концепции связок;

  5. несколько графических станций;

  6. станции ввода-вывода метафайла;

  7. несколько устанавливаемых преобразований нормирования;

  8. базовая сегментация (отсутствует общая память сегментов);

  9. соответствующие справочные функции.

  1. Характеристики уровня вывода «2» (общая память сегментов):

  1. все возможные уровни вывода «1»;

  2. общая память сегментов.

  1. Характеристики уровня ввода «а» (отсутствие ввода): средств ввода нет.

  2. Характеристики уровня ввода «Ь» (ввод в режиме ЗАПРОС — синхронный ввод):

функции инициализации устройств ввода и задания режима их работы;

функции ЗАПРОСИТЬ для всех соответствующих устройств;

соответствующие логические устройства ввода включают уст­ройство УКАЗАНИЯ только в комбинации с возможностями уров­ня вывода «1»;

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

  1. Характеристики уровня ввода «с» (полный ввод):

все возможности уровня ввода «Ь»;

режимы ОПРОС и СОБЫТИЕ.

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

Допустимые различия в реализациях ЯГС, связанные с раз­личными функциональными возможностями, приведены в прило­жении 6.Таблица 2

Концепция уровней Я ГС

Уровень вывода

Уровень ввода

а

ь

о

m

Нет ввода, минимальные средства управления, только индивидуально устанавлива­емые атрибуты, одно устанав­ливаемое преобразование нор­мирования, ограниченный на­бор функций вывода и атрибу­тов

Ввод данных в режиме ЗАПРОС, функции уста­новки режима работы инициализации для логи­ческих устройств ввода, отсутствие устройства указания

Ввод дан­ных в режи­мах ОПРОС и СОБЫТИЕ, отсутствие устройства указания

0

Отсутствие ввода, базовые средства управления, только предварительно определен­ные связки;

несколько преобразований нормирования, причем хотя бы одно из них является устанав­ливаемым, все функции выво­да, возможно использование станций метафайла

Ввод данных в режи­мах ЗАПРОС функции инициализации и уста­новки режима работы для логических уст­ройств ввода, отсутствие режима УКАЗАНИЕ и функции установки входного приоритета по­ля вывода

Ввод дан­ных в режиме ОПРОС и СОБЫТИЕ; ■отсутствие вы­бора элемен­тов

1 А

Полный вывод, включая пол­ную реализацию концепции связок, концепцию нескольких графических станций, базовые средства сегментации (за ис­ключением общей памяти сег­ментов);

станции метафайла

Функция ЗАПРО­СИТЬ УКАЗАНИЕ, функции инициализа­ции и установки режи­ма работы для устройст­ва УКАЗАНИЯ

: Ввод дан­ных в режи­ме ОПРОС и СОБЫТИЕ для устройст­ва УКАЗА­НИЯ

2

Общая память сегментов





  1. На различных уровнях число обязательных возмож­ностей может быть различным. Минимальные характеристики, ко­торые должны обеспечивать уровни ЯГС, приведены в табл. 3. Число 0 указывает определенную, но необязательную на данном уровне возможность. Прочерк означает, что соответствующая фун­кция на данном уровне не определена.

Таблица 3>

Минимальные возможности, необходимые на каждом уровне Я ГС

Возможность

Уровень

та

mb

тс

Оа

оь

Ос

Количество цветов (интенсивностей)

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'