1. Станции

    1. Характеристики станции

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

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

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

  1. Абстрактная станция с максимальными возможностя­ми:

имеет одну адресуемую поверхность визуализации с фиксиро­ванной разрешающей способностью;

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

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

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

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

позволяет производить ввод в режимах ЗАПРОС, ОПРОС, СОБЫТИЕ;

дает возможность устанавливать логические устройства вво­да в режим ЗАПРОС, ОПРОС и СОБЫТИЕ независимо друг от друга;

запоминает сегменты и обеспечивает средства для измерения сегментов и манипуляции с ними.

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

  1. Каждый тип станции может быть отнесен к одной из шести категорий: станция вывода (ВЫВОД), станция ввода (ВВОД); станция ввода и вывода (ВВОД-ВЫВОД), общая па­мять сегментов (ОПС), вывод в метафайл (МВЫВОД), ввод из метафайла (МВВОД).

  2. Станция категории ВЫВОД позволяет осуществлять только вывод графической информации. Она может изображать все примитивы вывода, кроме, возможно, ОБОБЩЕННОГО ПРИМИТИВА ВЫВОДА, который является необязательным. Ми­нимальные требования к средствам изображения примитивов ТЕКСТ и ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ перечислены в п. 2.4, а для примитива МАТРИЦА ЯЧЕЕК — в п. 3.3.

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

представление ломаной линии;

представление полимаркера;

представление текста;

представление полигональной области;

представление шаблона;

представление цвета;

режим задержки;

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

На черт. 2 отражены взаимосвязи атрибутов станции.

  1. Станция категории ВВОД имеет не менее одного логи­ческого устройства ввода и не содержит средств вывода.

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

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

Реальные станции могут представлять более широкие воз­можности, чем те, которые предусмотрены в таблице описания станции. Они не могут быть использованы ЯГС. Однако, если станция обладает собственными вычислительными ресурсами, эти дополнительные возможности могут быть доступны через ОБОБЩЕННЫЙ ПРИМИТИВ ВЫВОДА или РАСШИРЕНИЕ, либо они могут быть использованы локально оператором станции. Например, если станция имеет два носителя изображения, то опе­ратор может локально подключать то или другое устройство, не сообщая об этом ЯГС или прикладной программе. С помощью ЯГС можно управлять более чем одним носителем изображения, определяя отдельную станцию для каждого носителя изображе­ния.

  1. Выбор станции

    1. Прикладная программа указывает станцию посредст­вом идентификатора станции. Связь со станцией устанавливает­ся функцией ОТКРЫТЬ СТАНЦИЮ, которая связывает иденти­фикатор станции с типом станции и идентификатором соединения (например номером устройства в ФОРТРАНе). Состояние каж­дой открытой станции отражено в таблице состояния станции.

Манипуляции над сегментами и ввод могут выполняться на всех открытых станциях. Отображение примитивов вывода и сох­ранение сегментов производятся только на активных станциях. 2 Зак. 221

4Открытая станция становится активной после обращения к функ­ции АКТИВИРОВАТЬ СТАНЦИЮ.

  1. При помощи функции ДЕАКТИВИРОВАТЬ СТАН­ЦИЮ активная станция становится неактивной. Открытая стан­ция закрывается функцией ЗАКРЫТЬ СТАНЦИЮ.

Следующая последовательность функций иллюстрирует вы­бор станций:

ОТКРЫТЬ СТАНЦИЮ (Н1, инд. связи 1, станция типа А);

ОТКРЫТЬ СТАНЦИЮ (Н2, инд. связи 2, станция типа В);

АКТИВИРОВАТЬ СТАНЦИЮ (Н1);

Функции вывода; {генерируются только на Н1};

функции ввода; {возможны Hl, Н2):

АКТИВИРОВАТЬ СТАНЦИЮ (Н2);

Функции вывода; {генерируются на Hl, Н2};

ДЕАКТИВИРОВАТЬ СТАНЦИЮ (Н1);

Функции вывода; {генерируются только на Н2};

Функции ввода; {возможны Н1, Н2};

ЗАКРЫТЬ СТАНЦИЮ (HI);

ДЕАКТИВИРОВАТЬ СТАНЦИЮ (Н2);

ЗАКРЫТЬ СТАНЦИЮ (Н2).

  1. Задержка изменений изображения

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

    2. Функция ЗАДАТЬ РЕЖИМ ЗАДЕРЖКИ позволяет прикладной программе при помощи двух атрибутов выбрать тот режим задержки, который учитывает возможности станции и требования прикладной программы. Режим задержки позволяет управлять моментом времени, когда проявляются визуальные эф­фекты работы функции вывода. Неявная повторная генерация управляет моментом времени, когда проявляются визуальные эф­фекты работы функций вывода (под изменением изображения подразумевается любое измерение, а не только добавление прими­тивов к изображению).

Концепция задержки относится только к видимым эффектам функций ЯГС. Воздействия функций на память сегментов или на состояние станции (концептуально) не задерживаются.

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

БЫСТРО (с максимальной быстротой) — визуальный эффект действия функции проявляется на станции с максимальной быст­ротой. ЯГС гарантирует, что действия, необходимые для достиже­ния этого визуального эффекта, инициируются до того как управ­ление будет возвращено прикладной программе, вследствие воз­можных задержек не под влиянием ЯГС, эти действия не обяза­тельно заканчиваются до момента передачи управления;

ГЛОБ (до глобального взаимодействия) — визуальный эф­фект действия каждой функции проявляется на станции до начала следующего взаимодействия с логическим устройством ввода на любой станции. Если взаимодействие на какой-либо станции уже началось, то визуальный эффект будет проявляться с максималь­ной быстротой;

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

ЛЮБОЙ (в любое время) — визуальный эффект действия каждой функции появится на станции через некоторое время.

  1. Задержка применяется к следующим функциям, гене­рирующим вывод:

ЛОМАНАЯ;

ПОЛИМАРКЕР;

ТЕКСТ;

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

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

ВСТАВИТЬ СЕГМЕНТ;

СВЯЗАТЬ СЕГМЕНТ СО СТАНЦИЕЙ;

ВЫВЕСТИ СЕГМЕНТ НА СТАНЦИЮ;

ИНТЕРПРЕТИРОВАТЬ ЗАПИСЬ.

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

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

какие изменения приводят к неявной повторной генерации (НПГ);

какие изменения выполняются немедленно (НОИ).

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

  1. НПГ эквивалентна вызову функции ПЕРЕРИСОВАТЬ ВСЕ СЕГМЕНТЫ. Задержка этого действия управляется режи­мом НПГ, содержащимся в таблице состояния станции. Этот ре­жим принимает следующие значения:

ЗАПРЕЩЕНА —■ НПГ запрещена до тех пор, пока не будет явного запроса, т. е. поле «при обновлении необходим вывод ново­го кадра» не примет значение ДА;

РАЗРЕШЕНА — НПГ изображения разрешена.

  1. НПГ необходима в следующих ситуациях:

  1. если перечисленные ниже функции оказывают видимый эф­фект:

  2. если поле «допустимость динамического обновления» в таб­лице описания станции имеет значение НПГ для соответствующих представлений:

ЗАДАТЬ ПРЕДСТАВЛЕНИЕ ЛОМАНОЙ;

ЗАДАТЬ ПРЕДСТАВЛЕНИЕ ПОЛИМАРКЕРА;

ЗАДАТЬ ПРЕДСТАВЛЕНИЕ ТЕКСТА;

ЗАДАТЬ ПРЕДСТАВЛЕНИЕ ПОЛИГОНАЛЬНОЙ ОБЛАС­ТИ;

ЗАДАТЬ ПРЕДСТАВЛЕНИЕ ШАБЛОНА;

ЗАДАТЬ ПРЕДСТАВЛЕНИЕ ЦВЕТА;

  1. если поле «допустимость динамического обновления» в таб­лице описания станции имеет значение НПГ для преобразований станции:

ЗАДАТЬ ОКНО СТАНЦИИ;

ЗАДАТЬ ПОЛЕ ВЫВОДА СТАНЦИИ;

  1. если поле «допустимость динамического обновления допус­тимо» в таблице описания станции имеет значение НПГ для прио­ритета сегмента:

если в открытый сегмент, перекрывающий сегмент с более вы­соким приоритетом добавляются примитивы;

ЛОМАНАЯ;

ПОЛИМАРКЕР;

ТЕКСТ;

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

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

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

ВСТАВИТЬ СЕГМЕНТ;

если выполнение одной из следующих функций влияет на прио­ритет сегмента:

УДАЛИТЬ СЕГМЕНТ;

УДАЛИТЬ СЕГМЕНТ СО СТАНЦИИ;

СВЯЗАТЬ СЕГМЕНТ СО СТАНЦИЕЙ;

ЗАДАТЬ ПРЕОБРАЗОВАНИЕ СЕГМЕНТА;

ЗАДАТЬ ВИДИМОСТЬ;

ЗАДАТЬ ПРИОРИТЕТ СЕГМЕНТА;

  1. если поле «допустимость динамического обновления» в таблице описания станции имеет значение НПГ для преобразова­ния сегмента:

ЗАДАТЬ ПРЕОБРАЗОВАНИЕ СЕГМЕНТА;

  1. если поле «допустимость динамического обновления» в таб­лице описания станции имеет значение НПГ для видимости — ви­димый становится невидимым:

ЗАДАТЬ ВИДИМОСТЬ (НЕВИДИМЫЙ);

  1. если поле «допустимость динамического обновления» в таб­лице описания станции имеет значение НПГ для видимости — не­видимый становится видимым:

ЗАДАТЬ ВИДИМОСТЬ (ВИДИМЫЙ);

  1. если поле «допустимость динамического обновления» в таблице описания станции имеет значение НПГ для выделения:

ЗАДАТЬ ВЫДЕЛЕНИЕ;

  1. если поле «допустимость динамического обновления» в таб­лице описания станции имеет значение НПГ для удаления сегмен­та:

УДАЛИТЬ СЕГМЕНТ;

УДАЛИТЬ СЕГМЕНТ СО СТАНЦИИ;

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

    1. НПГ должна выполняться (включая удаление примити­вов, находящихся вне сегментов) только в тех случаях, когда дей­ствие какой-либо из перечисленных функций вызывает видимый эффект на экране дисплея. Например, если удаляется невидимый сегмент, повторную генерацию не выполняют. Допускается, чтобы в конкретной реализации выполнялась неявная повторная гене­рация в любом из приведенных выше случаев. Эффект задержан­ных действий может стать видимым в любой момент времени, ес­ли воспользоваться функцией ОБНОВИТЬ ИЗОБРАЖЕНИЕ НА СТАНЦИИ или соответствующим образом изменить состояние задержки.

  1. Очистка носителя изображения

    1. Существуют два варианта проведения очистки носите­ля изображения: