АКТИВИРОВАТЬ СТАНЦИЮ (ГП);
{Устанавливается система координат}
ЗАДАТЬ ОКНО (1, ГРАНИЦЫ ОКНА);
ВЫБРАТЬ ПРЕОБРАЗОВАНИЕ НОРМИРОВАНИЯ (ПРЕОБРАЗОВАНИЕ 1); СФОРМИРОВАТЬ МАТРИЦУ ПРЕОБРАЗОВАНИИ (0.0), (О'.О), О, (1.1), МК,- МАТРИЦА);
REPEAT
ПРОЧИТАТЬ (ТИП СИМВОЛА, (ХПОЗ, УПОЗ), УГОЛ);.
CASE ТИП СИМВОЛА OF
ТРАНЗИСТОР;
ВЫЧИСЛИТЬ РЕЗУЛЬТИРУЮЩУЮ МАТРИЦУ ПРЕОБРАЗОВАНИЙ (МАТ
РИЦА, (0.0), (ХПОЗ,- УПОЗ), УГОЛ, (1,1), МК, МАТРИЦА ИТОГ);
ВСТАВИТЬ СЕГМЕНТ (СЕГ ТРАНЗИСТОР, МАТРИЦА ИТОГ); СОПРОТИВЛЕНИЕ:
ВЫЧИСЛИТЬ РЕЗУЛЬТИРУЮЩУЮ МАТРИЦУ ПРЕОБРАЗОВАНИЙ (МАТРИЦА, (0.0), (ХПОЗ, УПОЗ), УГОЛ, (1.1), МК, МАТРИЦА ИТОГ);
ВСТАВИТЬ СЕГМЕНТ (СЕГ СОПРОТИВЛЕНИЕ, МАТРИЦА ИТОГ);. СОЕДИНЕНИЕ:
{Считываются параметры из неграфического файла}
ПРОЧИТАТЬ (ХПО31, УПО31)
ЛОМАНАЯ (2, (ХПОЗ, УПОЗ), (ПОЗІ, УПО31))
ENDCASE;
UNTIL КОНЕЦ ВХОДНОГО ФАЙЛА;
ДЕАКТИВИРОВАТЬ СТАНЦИЮ (ГП);
ЗАКРЫТЬ СТАНЦИЮ (ГП);
ЗАКРЫТЬ СТАНЦИЮ (МВВО);
ЗАКРЫТЬ ЯГС;
В примере 6 картина компонуется из позиций, введенных с помощью логи- ческого устройства ввода позиций. Вся картина целиком отображается в правой части экрана, в то время как в левой части экрана: имеется возможность отобразить часть картины с большим увеличением.Модификация картины может производиться и в правой и в левой частях изображения с использованием левой области прорисовки деталей изображения. Входные данные устройства ввода позиции задают значения входных данных и область, которая используется для ввода данных.
Для создания нового изображения в новом окне требуется ввод позиции, указывающей на область команды, находящуюся внизу области изображения, содержащую надпись НОВЫЙ ВИД. Две последующие позиции задают нижний левый угол и верхний правый угол поля вывода изображения.
Для того, чтобы вызвать переход к новой последовательности связанных линий, требуется ввод позиции, указывающей на другую область команды, находящуюся также внизу области изображения и содержащую надпись РАЗРЫВ. Для прекращения действий используется состояние ОТБОЙ функции- ЗАПРОСИТЬ.
Пример 6.
{Определения и объявления опущены}
ОТКРЫТЬ ЯГС;
ОТКРЫТЬ СТАНЦИЮ (ПЕРВАЯ, ВВДД, УОЭЛТ);
АКТИВИРОВАТЬ СТАНЦИЮ (ПЕРВАЯ);
{Установить окно для рисования всей картины}
ЗАДАТЬ ОКНО (1, 0, 100, 0, 100);
ЗАДАТЬ ПОЛЕ ВЫВОДА (1, 0.5, 0.95, 0.4, 0.8);
{Задается окно для отображения и рисования увеличений фрагментов изобраг- жения. В начальный момент отображается все изображение}
ЗАДАТЬ ОКНО (2, 0, 100, 0, 100);
ЗАДАТЬ ПОЛЕ ВЫВОДА (2, 0.05, 0.45, 0.4, 0.8);
{Задаются окна для команд}
ЗАДАТЬ ОКНО (3, 0, 8, 0, 1);
ЗАДАТЬ ПОЛЕ ВЫВОДА (3, 0.1, 0.9, 0.05, 0.15);
ЗАДАТЬ ОКНО (4, 0, 8, 0, 1);
ЗАДАТЬ ПОЛЕ ВЫВОДА (4, 0.1, 0.9, 0.15. 0.25);
ЗАДАТЬ ВХОДНОЙ ПРИОРИТЕТ ПОЛЯ ВЫВОДА (I, О, ВЫШЕ);
ЗАДАТЬ ВХОДНОЙ ПРИОРИТЕТ ПОЛЯ ВЫВОДА (2, 1, ВЫШЕ);
ЗАДАТЬ ВХОДНОЙ ПРИОРИТЕТ ПОЛЯ ВЫВОДА (3, 2, ВЫШЕ);
ЗАДАТЬ ВХОДНОЙ ПРИОРИТЕТ ПОЛЯ ВЫВОДА (4, 3, ВЫШЕ);
ВЫБРАТЬ ПРЕОБРАЗОВАНИЕ НОРМИРОВАНИЯ (3);
ЗАДАТЬ ВЫСОТУ ЛИТЕР (0.8);
ТЕКСТ ((0.1, 0.1), «НОВЫЙ ВИД»);
Т[1] = (0,0);
Tf2J = (0,1);
TP} = (8,1);
Т(4) = (8,0);
Tf5| = TflJ;
ЛОМАНАЯ (5, т);
ВЫБРАТЬ ПРЕОБРАЗОВАНИЕ НОРМИРОВАНИЯ (4);.
ТЕКСТ ((0.1, 0.1), «РАЗРЫВ»);
ЛОМАНАЯ (5, т);
ТІ [Ц = (0,0);
Т1'[2] = (0,100);
T1J31 = ’(100. 100);
Т1[4} = (100,0);
Т1|[5| = Т1 (1<];
ВЫБРАТЬ ПРЕОБРАЗОВАНИЕ НОРМИРОВАНИЯ (2);
ЛОМАНАЯ (5, ТҐ);
ВЫБРАТЬ ПРЕОБРАЗОВАНИЕ НОРМИРОВАНИЯ (1);:
ЛОМАНАЯ (5, Т1);
{Были установлены и нарисованы границы областей. Массив КАРТИНА содержит пары точек, определяющих линии картины. Следующие программы используются в примере, но не запрограммированы}:
РИСОВАНИЕ КАРТИНЫ — воспроизводит все ломаные, хранящиеся в массиве КАРТИНА в окне, которое выбрано в качестве текущего.
ДОБАВЛЕНИЕ К КАРТИНЕ (Т) — добавляется точка Т в массив КАРТИНА.
НОВАЯ ЛОМАНАЯ В КАРТИНЕ — добавляется точка Т в массив КАРТИНА и указывается, что начинается новая ломаная.
УДАЛЕНИЕ КАРТИНЫ — из окна, которое выбрано в качестве текущего, удаляется весь набор ломаных.
ВЫВОД КАРТИНЫ — картина выводится в метафайл или на графопостроитель}
(Запрещается рисование вне поля вывода}
ЗАДАТЬ ИНДИКАТОР ОТСЕЧЕНИЯ (ОТСЕЧЕНИЕ);
{Подготавливается логическое устройство ввода позиции номер 1 в станции ПЕРВАЯ. Задается подсказка и это в виде пересечения вертикальной и горизонтальной линий, проходящих через весь экран}
ИНИЦИАЛИЗИРОВАТЬ УСТРОЙСТВО ВВОДА ПОЗИЦИИ (ПЕРВАЯ, 1, (0:0), 1, 2, (0.0), (1J), ПУСТО);
ЗАДАТЬ РЕЖИМ УСТРОЙСТВА ВВОДА ПОЗИЦИИ (ПЕРВАЯ, 1, ЗАПРОС, ЭХО);
ПОСЛ ПОЗ = НУЛЬПОЗ;
REPEAT
ЗАПРОСИТЬ УСТРОЙСТВО ВВОДА ПОЗИЦИИ (ПЕРВАЯ, 1, СОСТОЯНИЕ, ПРЕОБР, ПОЗ);
IF СОСТОЯНИЕ = ОТБОЙ THEN GO ТО ФИНАЛ;
TF ПРЕОБР = Э ИЛИ ПРЕОБР = 4 THEN
BEGIN
REPEAT
ІПРЕОБРІ = ПРЕОБР;
ЗАПРОСИТЬ УСТРОЙСТВО ВВОДА ПОЗИЦИИ (ПЕРВАЯ, 1, СОСТОЯНИЕ, ПРЕОБР, ПОЗ);
IF СОСТОЯНИЕ = ОТБОИ ИЛИ ПРЕОБР = 0 THEN GO ТО ФИНАЛ;
{Наличие следующей проверки позволяет ввести второй список команд в области команд}
IF ПРЕОБР = 3 ИЛИ ПРЕОБР = 4 THEN GO ТО СЛЕДУЮЩИЙ;
{В настоящее время имеется номер преобразования нормирования ПРЕОБР1, задающий действие и позиция ПОЗ в окне 1 или в окне 2}
IF ПРЕОБР1 = 3 THEN
{Увеличение. Необходимо две границы}
{Вторая граница устанавливается путем использования подсказки и эха в виде прямоугольника, диагональ которого перемещается методом «резиновая нить»}
BEGIN
ИНИЦИАЛИЗИРОВАТЬ УСТРОЙСТВО ВВОДА ПОЗИЦИИ (ПЕРВАЯ, 1, ПОЗ, ПРЕОБР, 5, (0,0), (1,1), ПУСТО);
ЗАПРОСИТЬ УСТРОЙСТВО ВВОДА ПОЗИЦИИ (ПЕРВАЯ, 1, СОСТОЯНИЕ, ПРЕОБР, ВЕРХНЯЯ ПРАВАЯ);
IF СОСТОЯНИЕ = ОТБОЙ ИЛИ ПРЕОБР = О THEN GO ТО ФИНАЛ;IF ПРЕОБР = 3 ИЛИ ПРЕОБР = 4 THEN GO ТО СЛЕДУЮЩИЙ;
{Сейчас введенная точка находится в одной из областей для рисования картины}
{Сначала восстанавливается состояние логического устройства ввода позиции^ ИНИЦИАЛИЗИРОВАТЬ УСТРОЙСТВО ВВОДА ПОЗИЦИИ (ПЕРВАЯ, 1> (0,0), 1, 2, (0.0)., "(1.1), ПУСТО);
{Затем задаются новые границы окна и пересматривается картина}
ЗАДАТЬ ОКНО (2, ПОЗ. X, ВЕРХНЯЯ ПРАВАЯ. X, ПОЗ. Y, ВЕРХНЯЯ ПРА
ВАЯ. Y);
ВЫБРАТЬ ПРЕОБРАЗОВАНИЕ НОРМИРОВАНИЯ (2);
УДАЛЕНИЕ КАРТИНЫ;
РИСОВАНИЕ КАРТИНЫ;
END;
ELSE;
BEGIN;
НОВАЯ ЛОМАНАЯ В КАРТИНЕ (ПОЗ);
ПОС Л ПОЗ = ПОЗ;
END;
GO ТО ВЫХОД ИЗ ЦИКЛА;
СЛЕДУЮЩИЙ:
UNTIL FALSE;
ВЫХОД ИЗ ЦИКЛА;
END;
ELSE
IF ПРЕОБР = 1 ИЛИ ПРЕОБР = 2 THEN
BEGIN
{Логическое устройство ввода позиции находилось в одной из двух областей рисования картины)
IF ПОСЛПОЗ = НУЛЬПОЗ THEN
BEGINНОВАЯ ЛОМАНАЯ В КАРТИНЕ (ПОЗ);
ПОС Л ПОЗ = ПОЗ;
END;
ELSE;
BEGIN
ДОБАВЛЕНИЕ К КАРТИНЕ (ПОЗ);
ВЫБРАТЬ ПРЕОБРАЗОВАНИЕ НОРМИРОВАНИЯ (1);
ЛОМАНАЯ (2, (ПОСЛПОЗ, ПОЗ));
ВЫБРАТЬ ПРЕОБРАЗОВАНИЕ НОРМИРОВАНИЯ (2);
ЛОМАНАЯ (2. (ПОСЛПОЗ, ПОЗ));
END;
END;
ELSE GO TO ОШИБКА;
UNTIL FALSE;
■ФИНАЛ;
ВЫВОД КАРТИНЫ;
ДЕАКТИВИРОВАТЬ СТАНЦИЮ (ПЕРВАЯ);
ЗАКРЫТЬ СТАНЦИЮ (ПЕРВАЯ);
ЗАКРЫТЬ ЯГС,
ОТКРЫТЬ ЯГС ЗАКРЫТЬ ЯГС ОТКРЫТЬ СТАНЦИЮ
ЗАКРЫТЬ СТАНЦИЮ
АКТИВИРОВАТЬ СТАНЦИЮ
ДЕАКТИВИРОВАТЬ СТАНЦИЮ
ОЧИСТИТЬ ИЗОБРАЖЕНИЕ НА СТАНЦИИ ПЕРЕРИСОВАТЬ ВСЕ СЕГМЕНТЫ НА СТАНЦИИ ОБНОВИТЬ ИЗОБРАЖЕНИЕ НА СТАНЦИИ
ЗАДАТЬ РЕЖИМ ЗАДЕРЖКИ
СООБЩЕНИЕ РАСШИРЕНИЕ
ЛОМАНАЯ
ПОЛИМАРКЕР
ТЕКСТ
ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ
МАТРИЦА ЯЧЕЕК
ОБОБЩЕННЫЙ ПРИМИТИВ
ВЫВОД (ОПВ)
ПРИЛОЖЕНИЕ 9 Справочное
Таблица 17
КРАТКОЕ ОПИСАНИЕ ФУНКЦИЙ ЯГС
Н
Действие
аименование функцииФункции управления
Начинается работа с ЯГС
Завершается работа с ЯГС
Создается соединение между станцией и ЯГС
Соединение между станцией и ЯГС прерывается
Выходные данные передаются на станцию
Передача выходных данных па станцию прекращается
Выполняются все отложенные действия и очищается поле вывода
Повторно рисуются все видимые сегменты, содержащиеся в ПСС
Выполняются все отложенные действия и повторно отображаются все видимые сегменты, содержащиеся в ПСС
Задается состояние задержки для станции
К станции посылается сообщение
Описание нестандартных свойств оборудования
Функции вывода графических данных
Генерируется ломаная линия, заданная точками в мировых координатах
Генерируется последовательность маркеров заданного типа в указанных позициях в мировых координатах
Генерируется последовательность литер в заданной позиции в мировых координатах
Генерируется многоугольник, который может быть закрашен одним цветом, заполнен шаблоном или может быть пустым
Заданная матрица индексов цвета привязывается к полю вывода
Генерируется обобщенный примитив вывода, который задан последовательностью точек в мировых координатах н записью данных
Наименование функции
Действие
3. Функции задания атрибутов выходных данных
3.1. Функции задания бутов
ЗАДАТЬ ИНДЕКС ЛОМАНОЙ
ЗАДАТЬ ТИП ЛИНИИ
ЗАДАТЬ МАСШТАБ ТОЛЩИНЫ ЛИНИИ
ЗАДАТЬ ИНДЕКС ЦВЕТА ЛОМАНОЙ
ЗАДАТЬ ИНДЕКС ПОЛИМАРКЕРА
ЗАДАТЬ ТИП МАРКЕРА
ЗАДАТЬ МАСШТАБ МАРКЕРА
ЗАДАТЬ ИНДЕКС ЦВЕТА ПОЛИМАРКЕРА
ЗАДАТЬ ИНДЕКС ТЕКСТА ЗАДАТЬ ШРИФТ И ТОЧНОСТЬ ТЕКСТА
ЗАДАТЬ МАСШТАБ РАСШИРЕНИЯ ЛИТЕРЫ
ЗАДАТЬ МЕЖЛИТЕРНЫИ ПРОСВЕТ
ЗАДАТЬ ИНДЕКС ЦВЕТА ТЕКСТА
ЗАДАТЬ ВЫСОТУ ЛИТЕРЫ
ЗАДАТЬ ВЕРТИКАЛЬ ЛИТЕ
РЫ
ЗАДАТЬ НАПРАВЛЕНИЕ
ТЕКСТА
независимых от станций а т р и - примитивов
Задается индекс связи ломаной
Задается тип линий, который используется, когда соответствующий ФВА имеет значение ИНДИВИДУАЛЬНЫЙ
Задается масштаб толщины линии, который используется, когда соответствующий ФВА имеет значение ИНДИВИДУАЛЬНЫЙ
Задается индекс цвета ломаной, который используется, когда соответствующий ФВА имеет значение ИНДИВИДУАЛЬНЫЙ
Задается индекс связки для полимаркера
Задается тип маркера, который используется, когда соответствующий ФВА имеет значение ИНДИВИДУАЛЬНЫЙ
Задается масштаб маркера, который используется, когда соответствующий ФВА имеет значение ИНДИВИДУАЛЬНЫЙ
Задается индекс цвета полимаркера, который используется, когда соответствующий ФВА имеет значение ИНДИВИДУАЛЬНЫЙ
Выбирается индекс связки для текста
Задается шрифт и точность текста, которые используются, когда соответствующий ФВА имеет значение ИНДИВИДУАЛЬНЫЙ
Задается масштаб, который используется, когда соответствующий ФВА имеет значение ИНДИВИДУАЛЬНЫЙ
Задается величина промежутка между литерами, который используется, когда соответствующий ФВА имеет значение ИНДИВИДУАЛЬНЫЙ
Задается индекс цвета текста, который используется, когда соответствующий ФВА имеет значение ИНДИВИДУАЛЬНЫЙ
Задается высота литеры
Задается вертикаль литеры
Задается одно из возможных направлений текста ВПРАВО, ВЛЕВО, ВВЕРХ иля ВНИЗ
Наименование функции
Действие
ЗАДАТЬ ВЫРАВНИВАНИЕ
ТЕКСТА
ЗАДАТЬ ИНДЕКС ПОЛИГО
НАЛЬНОЙ ОБЛАСТИ
ЗАДАТЬ ВИД ЗАПОЛНЕНИЯ ПОЛИГОНАЛЬНОЙ области
ЗАДАТЬ ИНДЕКС ЗАПОЛНЕНИЯ ПОЛИГОНАЛЬНОЙ ОБЛАСТИ
ЗАДАТЬ ИНДЕКС ЦВЕТА ПОЛИГОНАЛЬНОЙ ОБЛАСТИ
ЗАДАТЬ РАЗМЕР ШАБЛОНА
ЗАДАТЬ ТОЧКУ ПРИВЯЗКИ
ШАБЛОНА
ЗАДАТЬ ФЛАГИ ВЫБОРКИ
АТРИБУТОВ
ЗАДАТЬ ИДЕНТИФИКАТОР
УКАЗАНИЯ
Задается горизонтальное и вертикальное выравнивание текста
Задается индекс связок для примитива вывода полигональная область
Задается вид заполнения полигональной области, который используется, когда соответствующий ФВА имеет значение ИНДИВИДУАЛЬНЫЙ
Задается индекс вида заполнителя полигональной области, который используется, когда соответствующий ФВА имеет значение ИНДИВИДУАЛЬНЫЙ
Задается индекс цвета полигональной области, который используется, когда соответствующий ФВА имеет значение ИНДИВИДУАЛЬНЫЙ
Задается размер шаблона, используемый при создании примитивов полигональная область с видом заполнения ПО ШАБЛОНУ
Задается точка привязки шаблона, используемая при создании примитивов полигональная область с видом заполнения ПО ШАБЛОНІ'
Значение каждой негеометрнческой характеристики примитива извлекается из соответствующего индивидуального атрибута или из подходящей связки станции
Задается идентификатор указания
3.2. Функции задания зависящих от станции атрибу-
тов примитивов
ЗАДАТЬ ПРЕДСТАВЛЕНИЕ
ЛОМАНОЙ
ЗАДАТЬ ПРЕДСТАВЛЕНИЕ
ПОЛИМАРКЕРА
ЗАДАТЬ ПРЕДСТАВЛЕНИЕ
ТЕКСТА
ЗАДАТЬ ПРЕДСТАВЛЕНИЕ ПОЛИГОНАЛЬНОЙ ОБЛАСТИ
ЗАДАТЬ ПРЕДСТАВЛЕНИЕ
ШАБЛОНА
Определяется представление ломаной на станции
Определяется представление полимаркера на станции
Определяется представление текста на станции
Определяется представление полигональной области на станции
ЗАДАТЬ ПРЕДСТАВЛЕНИЕ
-ЦВЕТА
Определяется шаблон, который следует связать с индексом шаблона (т. е. с индексом заполнителя полигональной области)
Определяется цвет, который следует связать с индексом цвета на станции