Станции
Характеристики станции
В основе ЯГС лежит концепция абстрактных станций. Они представляют собой логический интерфейс, через который прикладная программа управляет физическими устройствами. Некоторые специальные станции обеспечивают средства для хранения и обмена графической информацией.
Для каждого типа станции, поддерживаемого реализацией ЯГС (за исключением специальных станций), имеется таб-
лица описания станции, содержащая возможности и характеристики этой станции. Прикладная программа может сделать запрос об имеющихся возможностях и соответствующим образом скорректировать свой режим работы. Если станция не обеспечивает запрошенных возможностей, предусмотрена стандартная реакция на ошибку. Минимальный набор возможностей станции детально описан в подразд. 2.10.
Абстрактная станция с максимальными возможностями:
имеет одну адресуемую поверхность визуализации с фиксированной разрешающей способностью;
допускает использование только прямоугольных пространств визуализации (пространство визуализации не может состоять из нескольких отдельных частей);
позволяет определить и использовать пространство отображения меньше максимально возможного с гарантией, что никакое изображение не появится вне заданного пространства визуализации;
поддерживает несколько типов линий, шрифтов текста, размеров литер и т. д. для обеспечения возможности изображения примитивов вывода с различными атрибутами;
имеет одно или несколько логических устройств ввода для каждого класса ввода;
позволяет производить ввод в режимах ЗАПРОС, ОПРОС, СОБЫТИЕ;
дает возможность устанавливать логические устройства ввода в режим ЗАПРОС, ОПРОС и СОБЫТИЕ независимо друг от друга;
запоминает сегменты и обеспечивает средства для измерения сегментов и манипуляции с ними.
Совсем не обязательно, чтобы станция обладала всеми перечисленными возможностями.
Каждый тип станции может быть отнесен к одной из шести категорий: станция вывода (ВЫВОД), станция ввода (ВВОД); станция ввода и вывода (ВВОД-ВЫВОД), общая память сегментов (ОПС), вывод в метафайл (МВЫВОД), ввод из метафайла (МВВОД).
Станция категории ВЫВОД позволяет осуществлять только вывод графической информации. Она может изображать все примитивы вывода, кроме, возможно, ОБОБЩЕННОГО ПРИМИТИВА ВЫВОДА, который является необязательным. Минимальные требования к средствам изображения примитивов ТЕКСТ и ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ перечислены в п. 2.4, а для примитива МАТРИЦА ЯЧЕЕК — в п. 3.3.
ЯГС допускает различную форму представления примитивов вывода на разных станциях, позволяя наилучшим образом использовать специфические возможности каждой станции. Вариации могут быть описаны с помощью следующих возможностей:
представление ломаной линии;
представление полимаркера;
представление текста;
представление полигональной области;
представление шаблона;
представление цвета;
режим задержки;
преобразование станции.
На черт. 2 отражены взаимосвязи атрибутов станции.
Станция категории ВВОД имеет не менее одного логического устройства ввода и не содержит средств вывода.
Станция категории ВВОД-ВЫВОД имеет средства ввода и вывода. Кроме того, станция этой категории при реализации ЯГС представляет дополнительные требования, касающиеся логических устройств ввода.
Станции категории ОПС, МВЫВОД, и МВВОД являются специальными средствами ЯГС, которые обеспечивают возможности временного или постоянного хранения графической информации. Они считаются станциями только с целью сохранения единообразия управления, но в остальном обладают совершенно различными характеристиками.
Реальные станции могут представлять более широкие возможности, чем те, которые предусмотрены в таблице описания станции. Они не могут быть использованы ЯГС. Однако, если станция обладает собственными вычислительными ресурсами, эти дополнительные возможности могут быть доступны через ОБОБЩЕННЫЙ ПРИМИТИВ ВЫВОДА или РАСШИРЕНИЕ, либо они могут быть использованы локально оператором станции. Например, если станция имеет два носителя изображения, то оператор может локально подключать то или другое устройство, не сообщая об этом ЯГС или прикладной программе. С помощью ЯГС можно управлять более чем одним носителем изображения, определяя отдельную станцию для каждого носителя изображения.
Выбор станции
Прикладная программа указывает станцию посредством идентификатора станции. Связь со станцией устанавливается функцией ОТКРЫТЬ СТАНЦИЮ, которая связывает идентификатор станции с типом станции и идентификатором соединения (например номером устройства в ФОРТРАНе). Состояние каждой открытой станции отражено в таблице состояния станции.
Манипуляции над сегментами и ввод могут выполняться на всех открытых станциях. Отображение примитивов вывода и сохранение сегментов производятся только на активных станциях. 2 Зак. 221
4Открытая станция становится активной после обращения к функции АКТИВИРОВАТЬ СТАНЦИЮ.
При помощи функции ДЕАКТИВИРОВАТЬ СТАНЦИЮ активная станция становится неактивной. Открытая станция закрывается функцией ЗАКРЫТЬ СТАНЦИЮ.
Следующая последовательность функций иллюстрирует выбор станций:
ОТКРЫТЬ СТАНЦИЮ (Н1, инд. связи 1, станция типа А);
ОТКРЫТЬ СТАНЦИЮ (Н2, инд. связи 2, станция типа В);
АКТИВИРОВАТЬ СТАНЦИЮ (Н1);
Функции вывода; {генерируются только на Н1};
функции ввода; {возможны Hl, Н2):
АКТИВИРОВАТЬ СТАНЦИЮ (Н2);
Функции вывода; {генерируются на Hl, Н2};
ДЕАКТИВИРОВАТЬ СТАНЦИЮ (Н1);
Функции вывода; {генерируются только на Н2};
Функции ввода; {возможны Н1, Н2};
ЗАКРЫТЬ СТАНЦИЮ (HI);
ДЕАКТИВИРОВАТЬ СТАНЦИЮ (Н2);
ЗАКРЫТЬ СТАНЦИЮ (Н2).
Задержка изменений изображения
Носитель изображения на станции должен в максимальной степени отражать действительное состояние изображения в том виде, в каком оно создается прикладной программой. Однако для более эффективного использования возможностей станции ЯГС позволяет задерживать на некоторый промежуток времени действия, запрашиваемые прикладной программой. В течение этого промежутка времени состояние станции может быть неопределенным.
Функция ЗАДАТЬ РЕЖИМ ЗАДЕРЖКИ позволяет прикладной программе при помощи двух атрибутов выбрать тот режим задержки, который учитывает возможности станции и требования прикладной программы. Режим задержки позволяет управлять моментом времени, когда проявляются визуальные эффекты работы функции вывода. Неявная повторная генерация управляет моментом времени, когда проявляются визуальные эффекты работы функций вывода (под изменением изображения подразумевается любое измерение, а не только добавление примитивов к изображению).
Концепция задержки относится только к видимым эффектам функций ЯГС. Воздействия функций на память сегментов или на состояние станции (концептуально) не задерживаются.
Момент обновления управляет возможной задержкой функции вывода; например данные, передаваемые в устройство, могут быть буферизованы, чтобы оптимизировать передачу данных. Режим задержки может быть следующим (расположены в порядке увеличения задержки):
БЫСТРО (с максимальной быстротой) — визуальный эффект действия функции проявляется на станции с максимальной быстротой. ЯГС гарантирует, что действия, необходимые для достижения этого визуального эффекта, инициируются до того как управление будет возвращено прикладной программе, вследствие возможных задержек не под влиянием ЯГС, эти действия не обязательно заканчиваются до момента передачи управления;
ГЛОБ (до глобального взаимодействия) — визуальный эффект действия каждой функции проявляется на станции до начала следующего взаимодействия с логическим устройством ввода на любой станции. Если взаимодействие на какой-либо станции уже началось, то визуальный эффект будет проявляться с максимальной быстротой;
ЛОК (до локального взаимодействия) — визуальный эффект действия каждой функции проявляется на станции до начала следующего взаимодействия с логическим устройством ввода на этой станции. Если взаимодействие уже началось, то эффект будет проявляться с максимальной быстротой;
ЛЮБОЙ (в любое время) — визуальный эффект действия каждой функции появится на станции через некоторое время.
Задержка применяется к следующим функциям, генерирующим вывод:
ЛОМАНАЯ;
ПОЛИМАРКЕР;
ТЕКСТ;
ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ;
МАТРИЦА ЯЧЕЕК;
ВСТАВИТЬ СЕГМЕНТ;
СВЯЗАТЬ СЕГМЕНТ СО СТАНЦИЕЙ;
ВЫВЕСТИ СЕГМЕНТ НА СТАНЦИЮ;
ИНТЕРПРЕТИРОВАТЬ ЗАПИСЬ.
Не существует каких-либо обязательных значений режима задержки, которые применялись бы для задержки визуального эффекта функций вывода. Задержка может быть достигнута с помощью средств хранения сегментов и манипулирования с атрибутами видимости. Таким образом, буфер для отложенных действий может быть выбран способом, зависящим от реализации.
Некоторые функции на определенных станциях выполняются немедленно, в то время как на других станциях для их выполнения требуется повторная генерация всего изображения. Например, когда для внесения изменений в изображение требуется положить новый лист бумаги на графопостроитель. Значения параметра «допустимость динамического обновления» в таблице описания станции указывают:
какие изменения приводят к неявной повторной генерации (НПГ);
какие изменения выполняются немедленно (НОИ).
Если изменения выполняются немедленно, то они оказывают воздействия на все примитивы как внутри сегментов, так и вне их. В случае повторной генерации все примитивы вне сегментов будут удалены.
НПГ эквивалентна вызову функции ПЕРЕРИСОВАТЬ ВСЕ СЕГМЕНТЫ. Задержка этого действия управляется режимом НПГ, содержащимся в таблице состояния станции. Этот режим принимает следующие значения:
ЗАПРЕЩЕНА —■ НПГ запрещена до тех пор, пока не будет явного запроса, т. е. поле «при обновлении необходим вывод нового кадра» не примет значение ДА;
РАЗРЕШЕНА — НПГ изображения разрешена.
НПГ необходима в следующих ситуациях:
если перечисленные ниже функции оказывают видимый эффект:
если поле «допустимость динамического обновления» в таблице описания станции имеет значение НПГ для соответствующих представлений:
ЗАДАТЬ ПРЕДСТАВЛЕНИЕ ЛОМАНОЙ;
ЗАДАТЬ ПРЕДСТАВЛЕНИЕ ПОЛИМАРКЕРА;
ЗАДАТЬ ПРЕДСТАВЛЕНИЕ ТЕКСТА;
ЗАДАТЬ ПРЕДСТАВЛЕНИЕ ПОЛИГОНАЛЬНОЙ ОБЛАСТИ;
ЗАДАТЬ ПРЕДСТАВЛЕНИЕ ШАБЛОНА;
ЗАДАТЬ ПРЕДСТАВЛЕНИЕ ЦВЕТА;
если поле «допустимость динамического обновления» в таблице описания станции имеет значение НПГ для преобразований станции:
ЗАДАТЬ ОКНО СТАНЦИИ;
ЗАДАТЬ ПОЛЕ ВЫВОДА СТАНЦИИ;
если поле «допустимость динамического обновления допустимо» в таблице описания станции имеет значение НПГ для приоритета сегмента:
если в открытый сегмент, перекрывающий сегмент с более высоким приоритетом добавляются примитивы;
ЛОМАНАЯ;
ПОЛИМАРКЕР;
ТЕКСТ;
ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ;
МАТРИЦА ЯЧЕЕК;
ОБОБЩЕННЫЙ ПРИМИТИВ ВЫВОДА;
ВСТАВИТЬ СЕГМЕНТ;
если выполнение одной из следующих функций влияет на приоритет сегмента:
УДАЛИТЬ СЕГМЕНТ;
УДАЛИТЬ СЕГМЕНТ СО СТАНЦИИ;
СВЯЗАТЬ СЕГМЕНТ СО СТАНЦИЕЙ;
ЗАДАТЬ ПРЕОБРАЗОВАНИЕ СЕГМЕНТА;
ЗАДАТЬ ВИДИМОСТЬ;
ЗАДАТЬ ПРИОРИТЕТ СЕГМЕНТА;
если поле «допустимость динамического обновления» в таблице описания станции имеет значение НПГ для преобразования сегмента:
ЗАДАТЬ ПРЕОБРАЗОВАНИЕ СЕГМЕНТА;
если поле «допустимость динамического обновления» в таблице описания станции имеет значение НПГ для видимости — видимый становится невидимым:
ЗАДАТЬ ВИДИМОСТЬ (НЕВИДИМЫЙ);
если поле «допустимость динамического обновления» в таблице описания станции имеет значение НПГ для видимости — невидимый становится видимым:
ЗАДАТЬ ВИДИМОСТЬ (ВИДИМЫЙ);
если поле «допустимость динамического обновления» в таблице описания станции имеет значение НПГ для выделения:
ЗАДАТЬ ВЫДЕЛЕНИЕ;
если поле «допустимость динамического обновления» в таблице описания станции имеет значение НПГ для удаления сегмента:
УДАЛИТЬ СЕГМЕНТ;
УДАЛИТЬ СЕГМЕНТ СО СТАНЦИИ;
если одна из вышеперечисленных ситуаций возникает как результат обращения к функции ИНТЕРПРЕТИРОВАТЬ ЗАПИСЬ.
НПГ должна выполняться (включая удаление примитивов, находящихся вне сегментов) только в тех случаях, когда действие какой-либо из перечисленных функций вызывает видимый эффект на экране дисплея. Например, если удаляется невидимый сегмент, повторную генерацию не выполняют. Допускается, чтобы в конкретной реализации выполнялась неявная повторная генерация в любом из приведенных выше случаев. Эффект задержанных действий может стать видимым в любой момент времени, если воспользоваться функцией ОБНОВИТЬ ИЗОБРАЖЕНИЕ НА СТАНЦИИ или соответствующим образом изменить состояние задержки.
Очистка носителя изображения
Существуют два варианта проведения очистки носителя изображения: