Описание функции в соответствии с пп. 2.5.3; 2.5.5.

Ошибки:

7 ЯГС не находится в состоянии СТОТ, СТАК или СГОТ;

20 Неверно задан идентификатор станции;

25 Указанная станция не открыта;

33 Указанная станция — станция ввода метафайла ЯГС;

35 Указанная станция является станцией ввода;

36 Указанная станция является общей памятью сегментов.

  1. СООБЩЕНИЕ

СТОТ, СТАК, СГОТ Уровень 1а- MESSAGE.

Параметры:

Вх идентификатор станции И;

Вх сообщение С.

Действие:

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

Таблица состояния ЯГС остается неизменной.

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

Описание функции в соответствии с п. 2.5.6.

Ошибки:

7 ЯГС не находится в состоянии СТОТ, СТАК или СГОТ;

20 Неверно задан идентификатор станции;

25 Указанная станция не открыта;

36 Указанная станция является общей памятью сегментов.

  1. РАСШИРЕНИЕ

ГЯОТ, СТОТ, СТАК, СГОТ Уровень тиа.

ESCAPE.

Параметры:

Вх идентификатор функции расширения И;

Вх запись входных данных функции расширения О;

Вых запись выходных данных функции расширения О.

Действие:

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

не должны нарушаться концепции проектирования ЯГС;

не должны изменяться таблицы состояния ЯГС;

функция не должна генерировать графических выходных дан­ных;

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

Функции расширения могут применяться более чем к одной станции, например ко всем открытым станциям или ко всем актив­ным станциям. Запись входных данных функции расширения мо­жет включать идентификатор станции там, где это требуется.

Примечание. Примеры функций расширения:

поддержка растровых устройств, позволяющих отображать более одного буфера кадра;

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

Если в языке программирования идентификатор функции расширения име­ет тип ЦЕЛЫЙ, то положительные 'идентификаторы сохраняются для будущей стандартизации, а смысл отрицательных зависит от реализации.

Описание функции в соответствии с подразд. 2-13.

Ошибки:

8 ЯГС не находится в состоянии ГЯОТ, СТОТ, СТАК или СГОТ;

  1. Указанная функция расширения не обеспечена;

  2. Идентификатор указанной функции расширения задан не­верно;

‘ 182 Неверно задано содержимое записи данных функции рас­

ширения.

  1. Функции вывода графических данных

    1. ЛОМАНАЯ

СТАК, СГОТ Уровень та.

POLYLINE.

Параметры:

Вх число точек (2 . . .п) Ц;

Вх координаты точек МК пХТ.

Действие:

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

Если после преобразования станции все точки совпадают, то сообщение об ошибке не выдается, и то, что вычерчивается, зависит от станции.

Описание функции в соответствии с пп. 2.4.1; 2.4.2; 2.4.3; 2.5.3.

Ошибки:


5 ЯГС не находится в состоянии СТАК или СГОТ;

100 Неверно задано число точек.

  1. ПОЛИМАРКЕР

СТАК, СГОТ Уровень та.

POLYMARKER.

Параметры:

Вх число точек (1 .. ■ п) Ц}

Вх координаты точек МК пХТ.

Действие:

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

Примечание. Маркер видим тогда, когда его позиция находится внутри ирямоугольника отсечения.

Описание функции в соответствии с пп. 2.4.1; 2.4.2; 2.4.4; 2.5.3.

Ошибки:

5 ЯГС не находится в состоянии СТАК или СГОТ;

100 Неверно задано число точек.

3

СТАК, СГОТ Уровень та.

МК Т;

С.

.3-3. ТЕКСТ

TEXT.

Параметры:

Вх позиция текста

Вх строка литер

Действие:

Генерируется строка литер. Текущие значения атрибутов текс­та, заданные в таблице состояния ЯГС, связываются с примити­вом. Позиция текста задана в мировых координатах и преобразует­ся текущим преобразованием нормирования.

Если после преобразования станции высота или ширина лите­ры нулевая, то сообщение не выдается, и то, что вычерчивается, зависит от станции.

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

Примечание. Отсечение текста выполняется способом, зависящим от точности представления текста.

Описание функции в соответствии с пп. 2.4.1; 2.4.2; 2.4.5; 2,5-3.

Ошибки:

5 ЯГС не находится в состоянии СТАК или СГОТ;

101 Неверный код литеры.

  1. ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ

СТАК, СГОТ Уровень та.

FILL AREA.

Параметры:

Вх число точек (3... п) Ц;

Вх координаты точек МК пХТ.

Действие:

Генерируется выходной примитив ПОЛИГОНАЛЬНАЯ ОБ­ЛАСТЬ. Текущие значения атрибутов полигональной области, за­данные в таблице состояния ЯГС, связываются с примитивом.

Полигональная область заполняется в соответствии с текущим видом заполнения (заданным через связку полигональной области или индивидуально в зависимости от соответствующего ФВА). Для вида заполнения ПУСТО вычерчивается граница области. При других видах заполнения граница вычерчивается таким образом, чтобы между граничащими областями не было пересечений или пропусков.

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

Отсечение примитивов ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ

Черт. 14



Внутренность многоугольника определяется следующим обра­зом (черт. 15). Если число пересечений между выходящим из точ­ки лучом и многоугольником нечетно, то эта точка лежит внутри многоугольника. Если число пересечений четно, то точка лежит вне многоугольника.

Если после преобразования станции все точки совпадут, то со­общение об ошибке не выдается и то, что вычерчивается, зависит от станции. После преобразования станции некоторые или все ли­нии границы области могут иметь общие отрезки.

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




Определение области примитива ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ

Черт. 15


При формировании входных данных логического устройства указания примитив ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ с видом запол­нения ЗАЛИВКА или ПО ШАБЛОНУ выбирается путем указания точки внутри или на границе многоугольника. Указание точки в от­верстии полигональной области не приводит к идентификации этой полигональной области. Примитив ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ о видом заполнения ПУСТО выбирается путем указания точки на границе многоугольника. Примитив ПОЛИГОНАЛЬНАЯ ОБ­ЛАСТЬ с видом заполнения ШТРИХОВКА выбирается путем ука­зания точки на границе многоугольника или на линии штриховки.

Описание функции в соответствии с пп. 2.4.1; 2.4.2; 2.4.6; 2.5.3.

Ошибки:

5 ЯГС не находится в состоянии СТАК или СГОТ;

100 Неверно задано число точек.

  1. МАТРИЦА ЯЧЕЕК

СТАК, СГОТ Уровень Оа.

CELL ARRAY.

Параметры:

Вх прямоугольник ячеек (Р, Q) МК 2хТ;

Вх размерности массива индексов

цвета Nx, Ny (1 ... п) 2ХЦ;

Вх массив индексов цвета (0...п) пХпХЦ.

Действие:

Генерируется примитив МАТРИЦА ЯЧЕЕК с использованием координат углов прямоугольника ячеек и размерностей массива индексов цвета.

Стороны прямоугольника параллельны осям системы мировых координат. Точки Р и Q определяют левый нижний и правый верх­ний углы прямоугольника. Прямоугольник делится на ячейки. По­лучается сетка, состоящая из (NxXNy) ячеек, где Nx и Ny — раз­мерности массива индексов цвета. Каждая ячейка имеет ширину |хр—xq|/Nx и высоту |ур—yq | /Ny, где (хр, ур) — координаты точки Р, a (xq, yq) — координаты точки Q.

Массив индексов цвета ориентируется по отношению к прямо­угольнику следующим образом:

элемент (1, 1) связывается с ячейкой, содержащей р;

элемент (Nx, Ny) связывается с ячейкой, содержащей Q;

элемент (1, Ny) связывается'с ячейкой, содержащей точку (Рх, Qy);

элемент (Nx, 1) связывается с ячейкой, содержащей точку (Qx, Ру).

Цвет каждой ячейки задается значением соответствующего эле­мента массива индексов цвета. Если значение индекса отсутствует в таблице индексов цвета, то используется зависящее от станции значение.

Прямоугольная сетка, заданная точками Р и Q и числом ячеек Nx и Ny, является объектом преобразований, которые могут пре­образовать прямоугольные ячейки в параллелограммы.

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

На черт. 16 указан способ привязки примитива МАТРИЦА ЯЧЕЕК к носителю изображения растрового устройства отображе­ния.

При отображении примитива МАТРИЦА ЯЧЕЕК на нерастро­вый носитель изображения минимальным требованием является вычерчивание преобразованных границ примитива МАССИВ ЯЧЕ­ЕК с использованием зависящих от реализации цвета, ширины и типа линий.

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

Описание функции в соответствии с пп. 2.4.1; 2.4.2; 2.4.7; 2.5.3.

Ошибки:

5 ЯГС не находится в состоянии СТАК или СГОТ;

91 Неверно заданы размерности массива индексов цвета.

  1. ОБОБЩЕННЫЙ ПРИМИТИВ ВЫВОДА

СТАК, СГОТ Уровень Оа.

GENERALIZED DRAWING PRIMITIVE.

Параметры:

Вх число точек (0...П) Ц;П

к носителю

ривязка примитивов МАТРИЦА ЯЧЕЕК

изображения


Примитив

МАТРИЦА ЯЧЕЕК

NxNv ячеек

Преобразованный примитив МАТРИЦА ЯЧЕЕК

Позиции элементов растра на носителе изображения


Вх координаты точек МК пХТ;

Вх идентификатор ОПВ И;

Вх запись данных ОПВ О.

Действие:

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

Примечание. Параметры функции ОПВ передаются «а станцию и ин­терпретируются зависящим от станции образом. Тем самым используются осо­бые возможности станции. Даже в случае ошибки Г04 ОПВ отображается на всех активных станциях, способных отобразить данный ОПВ.

Следующие примитивы могут быть реализованы с помощью ОПВ:

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

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

эллипс — заданными точками являются две фокусные точки и точка эллипса;

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

интерполирующая кривая (например, сплайн) — заданными точками являются интерполируемые точки.

Для приведенных примеров ОПВ рекомендуется использовать атрибуты ломаной.

Точки-параметры ОПВ подвергаются преобразованиям ЯГС. Например ОПВ окружность будет появляться в виде эллипса при различном масштабировании по двум осям. При определении ОПВ указывается способ преобразования точек и геометрической фор­мы ОПВ.

Результирующие выходные данные ОПВ отсекаются по грани­цам окна станции и по границам прямоугольника отсечения, если индикатор отсечения имеет значение ОТСЕКАТЬ.

Если ОПВ поддерживается станцией, но не может быть сгене­рирован при текущем преобразовании или прямоугольнике отсече­ния, то выдается ошибка 105. Запись данных ОПВ может содер­жать дополнительные данные (например, порядок вершин для сплайнов), которые не подвергаются преобразованиям. Содержи­мое записи данных должно быть определено для каждого ОПВ. При определении нового ОПВ не должны нарушаться концепции про­ектирования ЯГС. Набор обобщенных примитивов вывода, реализо­ванных для каждой станции, может быть пустым.

Если идентификатор ОПВ в языке программирования имеет тип ЦЕЛЫЙ, положительные идентификаторы ОПВ резервируются для регистрации или будущей стандартизации, а смысл отрица­тельных идентификаторов зависит от реализации.