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

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

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

Оба варианта очистки носителя изображения доступны поль­зователю через функцию ОЧИСТИТЬ СТАНЦИЮ. Второй вари­ант используется также в функциях ОБНОВИТЬ ИЗОБРЖЕНИЕ НА СТАНЦИИ и ПЕРЕРИСОВАТЬ ВСЕ СЕГМЕНТЫ на СТАН­ЦИИ.

  1. Удаление примитивов, находящихся вне сегментов

  2. Е Удаление примитивов, находящихся вне сегментов, про­изводится в следующих ситуациях:

  1. при обращении к функциям ЯГС:

ОЧИСТИТЬ СТАНЦИЮ;

ПЕРЕРИСОВАТЬ ВСЕ СЕГМЕНТЫ НА СТАНЦИИ;

ОБНОВИТЬ ИЗОБРАЖЕНИЕ НА СТАНЦИИ,

если параметр «флаг повторной генерации» имеет значение ВЫ­ПОЛНИТЬ и если поле «при обновлении необходим вывод нового кадра» в таблице состояния станции имеет значение ДА.

ЗАДАТЬ РЕЖИМ ЗАДЕРЖКИ, если параметр «режим неяв­ной повторной генерации» имеет значение РАЗРЕШЕНО и поле «при обновлении необходим вывод нового кадра» имеет значение ДА;

  1. если необходима неявная повторная генерация и параметр «режим неявной повторной генерации» имеет значение РАЗРЕ­ШЕНО;

если любая из вышеописанных ситуаций возникает как ре­зультат работы функции ИНТЕРПРЕТИРОВАТЬ ЗАПИСЬ

  1. .Передача сообщений на станцию

Функция СООБЩЕНИЕ позволяет передать на станцию стро­ку литер. Прикладная программа не может управлять расположе­нием и формой представления строки литер, и в конкретной реали­зации допускается помещать устройство, не входящее в состав станции, но связанное с ней.

  1. С и с т е м ы координат и преобразования

  1. Е Преобразования нормирования

  1. ЕЕ В ЯГС прикладной программист может строить графи­ческое изображение из отдельных частей, каждая из которых кон­цептуально определяется в своей собственной системе мировых координат (МК). Взаимное расположение этих частей описыва­ется в едином для всех пространстве нормированных координат (НК), в которое отображаются все заданные системы мировых координат. Набор преобразований нормирования определяет преобразования из систем мировых координат в единое простран­ство нормированных координат, которое можно рассматривать как независимый от станций абстрактный носитель изображения. Такое нормированное изображение можно запомнить и затем под­вергнуть преобразованиям через механизм сегментации; оно так­же может быть записано в метафайл.

  1. Е2. В любой момент времени одно из преобразований нор­мирования является текущим для вывода примитивов и использу­ется для преобразования МК, заданных, например в примитивах вывода и геометрических атрибутах, в нормированные координа­ты.

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

  3. Е4. Хотя пространство НК концептуально простирается до бесконечности, та его часть, в которой должно быть размещено поле вывода и которую можно увидеть на станции, ограничивает­ся диапазоном [0., Е]Х[0., Е]. Кроме того, в конкретной реали­зации может поддерживаться только ограниченный диапазон НК. Однако этот диапазон всегда существенно больше, чем квадрат [0., EJ Х[0., Е], что позволяет эффективно использовать функ­цию ВСТАВИТЬ СЕГМЕНТ. В частности, всегда должен быть обеспечен диапазон изменения НК в пределах [—7., 7.]Х[—-7., 7.].

  1. Каждое преобразование нормирования идентифициру­ется номером — целым числом в диапазоне от нуля до зависяще­го от реализации п, которое содержится в таблице состояния ЯГС. Преобразование нормирования с номером нуль является тожде­ственным преобразованием, отображающим область [0., 1.,]Х Х[0„ 1.,] мк в область [0., 1.,]Х[0-, Е,] НК. Это преобразование не может быть изменено.

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

Текущее преобразование нормирования задается функцией ВЫБРАТЬ ПРЕОБРАЗОВАНИЕ НОРМИРОВАНИЯ и использу­ется для вывода до тех пор, пока не будет выбрано другое преоб­разование. По умолчанию выбирается преобразование с номером ноль.

  1. Отсечение

    1. Поле вывода и окно, задающие определенное преобра­зование нормирования, используются также для задания прямо­угольника отсечения. Поле «прямоугольник отсечения» в таблице состояния ЯГС устанавливается равным полю вывода текущего преобразования нормирования при определении поля вывода те­кущего преобразования нормирования или при выборе преобра­зования нормирования. Отсечение по границам поля вывода мо­жет быть разрешено или не разрешено. Имеется единый глобаль­ный переключатель (индикатор отсечения), указывающий, будет ли прямоугольник отсечения использоваться для отсечения.

    2. Отсечение не проводится непосредственно во время вы­полнения преобразования нормирования, оно задерживается до того момента, когда примитивы будут выводиться на носитель изображения графической станции. Прямоугольник отсечения, связанный с примитивами вывода, входящими в состав сегментов, хранится вместе с координатами этих примитивов, преобразован­ными в НК. Функция ВСТАВИТЬ СЕГМЕНТ позволяет заменить прямоугольник отсечения, записанный вместе с примитивом выво­да при создании сегмента, на прямоугольник отсечения, взятый из таблицы состояния ЯГС.

Примитивы, посланные на станцию категории МВЫВОД отсе­чению не подвергаются.

  1. Преобразование станции

    1. Пространство нормированных координат может рас­сматриваться как независимый от станции абстрактный носитель изображения. Для каждой открытой станции независимо выбира­ется некоторая часть пространства НК в диапазоне [0., 1 .J X Х[0„ 1.], которая будет отображаться на носитель изображения. Преобразование станции отображает НК в координаты устройст­ва (КУ) данной станции.

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

В любом случае координаты устройства отображаются в про­странство изображения следующим образом:

  1. начало системы координат устройства находится в левом нижнем углу изображения;

  2. единицы измерения КУ соотносятся с пространством изоб­ражения так, чтобы квадрат в КУ выглядел квадратом на поверх­ности изображения (это условие правильно выполняется, если единицами измерения в КУ являются метры);

  3. координаты X и Y возрастают соответственно слева направо и снизу вверх.

На некоторых устройствах единицы измерения КУ могут не сов­падать с адресуемыми единицами (например, в случаях, когда ад­ресуемые единицы не удовлетворяют вышеуказанным условиям).

Размер пространства изображения, выраженный в единицах из­мерения КУ, заносится в таблицу описания станции.

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

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

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

  1. Преобразование станции определяется заданием границ области в системе нормированных координат в диапазоне [0., 1.] X X [0., 1.] — окна станции, которая должна быть отображена в определенную область пространства координат устройства — поле вывода станции. Границы окна и поля вывода станции определяют прямоугольники со сторонами, параллельными осям координат г, системах НК и КУ. Границы входят в состав прямоугольников.

  2. Для предотвращения выхода выводимого изображения за пределы окна на станции в ЯГС производится обязательное от­сечение по окну станции, которое не может быть отменено. Пос­кольку окно станции задается в диапазоне [0., 1.] X [0., 1.] НК, то гарантируется, что на любой станции может быть визуализирова­на только часть пространства НК, лежащая в пределах [0., 1.] X Х[0„ Г].

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

  4. Преобразование станции по умолчанию устанавливается таким, чтобы отображать пространство НК [0., 1.] X [0., 1.] во все пространство изображения станции. Если пространство изобра­жения не является квадратом, то применяются те же правила, что описаны выше, для достижения одинакового масштабирования по каждой оси.

  5. Преобразование станции может быть изменено функци­ями ЗАДАТЬ ОКНО СТАНЦИИ или ЗАДАТЬ ПОЛЕ ВЫВОДА СТАНЦИИ. Поскольку изменение преобразования станции может быть задержано (см. п. 2.5.3), эти функции производят лишь запись значений параметров «требуемое поле вывода станции» в таблицу состояния станции. Записи «текущее окно станции» и «текущее по­ле вывода станции» продолжают содержать ранее установленные значения параметров преобразования. Только после модификации изображения текущим значениям присваиваются требуемые зна­чения.

Полная схема потока данных для графического вывода приве­дена на черт. 9, где системы координат МК, НК и КУ являются двумерными декартовыми системами координат.

  1. Преобразование входных данных устройства ввода пози­ции

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

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


Схема потока данных для графического вывода в ЯГС

К станции

Черт. 9



ступать только те позиции, которые лежат внутри части поля вы­вода станции, на которую отображается окно станции (это может быть часть поля вывода станции, если соотношение сторон у поля вывода станции и у окна станции различны). Следовательно, вход­ные данные устройства ввода позиции всегда определяют позицию в НК в диапазоне [0., 1.] X [0., 1.].

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

  2. Позиция в пространстве НК, полученная от устройства ввода позиции, сравнивается с полями вывода преобразований нормирования с целью найти такое преобразование нормирования, поле вывода которого содержит данную позицию и имеет наивыс­ший входной приоритет ввода. Введенная позиция преобразуется в соответствующую систему МК с помощью преобразования, об­ратного этому преобразованию нормирования. Позиция, введенная с помощью устройства ввода позиции, передается прикладной прог­рамме в МК вместе с номером использованного преобразования нормирования.

  3. Поскольку преобразование с номером ноль является тождественным и неизменяемым преобразованием, связанным с полем вывода [0., 1.] X [0., 1.], всегда обеспечивается попадание позиции, полученной от устройства ввода позиции, по крайней ме­ре в одно из полей вывода.