ГОСТ 27817-88
(CT СЭВ 6177-88)
Группа П85
ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР
Системы обработки информации
МАШИННАЯ ГРАФИКА
Функциональное описание ядра графической системы
Information processing systems. Computer graphics. Functional description of graphical kernel system
ОКСТУ 0014
Дата введения 1989-07-01
ИНФОРМАЦИОННЫЕ ДАННЫЕ
1. УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Государственного комитета СССР по стандартам от 31.08.88 N 3090
2. Стандарт полностью соответствует СТ СЭВ 6177-88
3. Стандарт соответствует международному стандарту ИСО 7942 и национальному стандарту США ANSI Х.3.1241 (1985)
4. Срок проверки - 1992 г., периодичность проверки - 5 лет.
5. ВВЕДЕН ВПЕРВЫЕ
6. ССЫЛОЧНЫЕ НОРМАТИВНО-ТЕХНИЧЕСКИЕ ДОКУМЕНТЫ
Обозначение НТД, на который дана ссылка | Номер пункта, подпункта, перечисления, приложения |
СТ СЭВ 359-76 | пп.2.4.5.9, 2.4.5.11, 3.4.1.10 |
СТ СЭВ 356-86 | п.3.4.2.3 |
СТ СЭВ 5712-86 | Приложение 1 |
Настоящий стандарт распространяется на программные и технические средства машинной графики, реализующие и использующие ядро графической системы (ЯГС), и устанавливает общие положения, концепции ядра графической системы, структуру данных и функции ядра графической системы, используемые в системах автоматизированного проектирования (САПР), в автоматизированных системах управления (АСУ) и других областях, где применяются средства машинной графики.
Настоящий стандарт соответствует ИСО 7942, за исключением:
раздел 0 ИСО 7942 включен в стандарт как приложение 2;
раздел 2 ИСО 7942 включен в стандарт как приложение 1;
опущен раздел 4.12 ИСО 7942 и все примечания относительно "International Register of Graphikal Items ISO";
дополнительно к ИСО 7942 введен минимальный уровень реализации ЯГС - уровень М (в соответствии с документом ANSI Х3.124.1-1985).
1.1. Устанавливаемый настоящим стандартом набор функций ЯГС предназначен для использования в прикладных задачах, которые вырабатывают спроектированные с помощью ЭВМ двухмерные изображения для векторных и растровых графических устройств вывода.
1.2. ЯГС должно обеспечивать ввод данных и взаимодействие с оператором графических устройств при помощи графической информации и сегментации изображений и обеспечивать их запоминание и изменение.
1.3. ЯГС представляет собой набор функций, которые могут быть реализованы программно или аппаратно, и служит для обеспечения связи между прикладной программой и графическими устройствами ввода и вывода.
1.4. Одним из основных понятий ЯГС является понятие графической рабочей станции (далее - станция), состоящей из набора устройств ввода и одного устройства вывода. Несколько станций могут использоваться параллельно.
1.5. В ЯГС включены функции записи информации во внешний файл и чтения из него.
1.6. Функции ЯГС объединены в двенадцать совместимых между собой уровней от минимального уровня до уровня, обеспечивающего все возможности ЯГС. Описание уровней приведено в подразд.2.10. В реализацию ЯГС должны входить функции только одного уровня. Реализацию следует считать неправильной, если она находится между двумя определенными уровнями или вне уровней. В реализациях доступ ко всем возможностям графических станций, который может быть осуществлен посредством функций ЯГС, должен осуществляться только через ЯГС.
1.7. ЯГС не зависит от особенностей языков программирования. Для связи с языками программирования необходимо описать имена функций и типы данных в терминах конкретного языка программирования.
1.8. Реализация ЯГС дает возможность пользователям машинной графики разрабатывать прикладные программы, которые будут переноситься между различными вычислительными системами и различными графическими устройствами.
1.9. Понятия и пояснения, применяемые в настоящем стандарте, приведены в приложении 1.
2.1. Состав стандарта
2.1.1. Стандарт содержит 4 раздела и 9 приложений.
2.2.1. Ядро графической системы представляет собой функциональный интерфейс между прикладной программой и конфигурацией графических устройств ввода и вывода. Функциональный интерфейс содержит все основные функции для интерактивной и неинтерактивной графики и применим для широкого диапазона графического оборудования.
2.2.2. Этот интерфейс составлен таким образом, что позволяет прикладной программе не учитывать особенности аппаратуры. В результате получается интерфейс, представляющий единообразные для всех устройств примитивы вывода: ЛОМАНАЯ, ПОЛИМАРКЕР, ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ, МАТРИЦА ЯЧЕЕК, ОБОБЩЕННЫЙ ПРИМИТИВ ВЫВОДА, и единообразные классы устройств ввода: ВВОД ПОЗИЦИИ, ВВОД ПОСЛЕДОВАТЕЛЬНОСТИ ПОЗИЦИЙ, ВВОД ЧИСЛА, ВЫБОР, УКАЗАНИЕ, ВВОД СТРОКИ.
2.2.3. В подразд.2.3 рассматриваются основные концепции ввода и вывода. Вводится основное понятие ЯГС, реализующее независимость от устройств, - графическая станция.
2.2.4. Средства манипуляции и изменения изображений вводятся посредством сегментации, динамических атрибутов и преобразований. Общее описание этих методов приведено в п.2.5.3 с учетом принятой концепции станции.
2.2.5. Совокупность станций позволяет осуществлять одновременный обмен данными с различными устройствами отображения. ЯГС предоставляет с помощью специальных станций средства для хранения графических данных как вне, так и внутри ядра. В последнем случае эта специальная станция дает возможность передавать графические данные непосредственно из нее на другие станции.
2.2.6. Полный набор функций поддерживается не каждой реализацией ЯГС. Каждая реализация ЯГС включает функции одного уровня. Уровни совместимы снизу вверх.
2.2.7. ЯГС определяет только независимое от языков программирования ядро графической системы. Для объединения с языком программирования ЯГС следует встроить в зависимый от языка слой, содержащий языковые соглашения, например, параметры и имена.
2.2.8. Модель функционирования ЯГС в графической системе представлена на черт.1. Каждый уровень программ может вызывать функции примыкающих нижних уровней. В основном прикладная программа будет использовать проблемно-ориентированный и языково-зависимый уровни, а также другие зависящие от применения уровни и ресурсы операционной системы. Все возможности станции, к которым можно обращаться через ЯГС, следует использовать только через ЯГС. Связь с языками программирования описана в приложении 5.
Модель функционирования ЯГС в графической системе
Черт.1
2.3. Концепции
2.3.1. Графический вывод, генерируемый ЯГС, строится на основе двух групп элементов - примитивов вывода и атрибутов примитивов. Примитивы вывода являются абстракцией основных действий, которые может выполнять устройство, например рисование линий и отображение строк литер.
Атрибуты управляют характеристиками примитивов вывода, например типом линий, цветом, высотой литер. Негеометрическими характеристиками, такими как цвет, управление осуществляется индивидуально для каждой станции, что позволяет полнее использовать ее возможности.
2.3.2. Графическая информация, вводимая от устройств, как результат действий оператора, преобразуется ЯГС в шесть классов ввода. Каждый класс ввода характеризуется типом вводимых данных. Представленное таким образом устройство называется логическим устройством ввода. Эффект действий по вводу отображается на носитель изображения в виде подсказки и эха индивидуально для каждого логического устройства ввода.
2.3.3. Две абстрактные концепции (абстрактный вывод и абстрактный ввод) являются основополагающими для определения так называемой абстрактной станции. Станция ЯГС содержит один (либо ни одного) носитель изображения и, возможно, несколько устройств ввода, таких, как, например, алфавитно-цифровая клавиатура, планшет и световое перо. Станция представляет эти устройства прикладной программе как конфигурацию абстрактных устройств, скрывая тем самым особенности аппаратуры.
2.3.4. Геометрическая информация (координаты), содержащаяся в примитивах вывода, атрибутах и значениях данных логического ввода (при вводе позиции или последовательности позиций) подвергается преобразованиям. Эти преобразования связывают следующие, принятые в ЯГС, системы координат:
1) мировые координаты (МК), используемые прикладным программистом;
2) нормированные координаты (НК), используемые для задания единой для всех станций системы координат;
3) координаты устройства (КУ): одна система координат на каждую станцию, в этой системе представляются координаты пространства изображения станции.
2.3.5. Примитивы вывода и атрибуты преобразуются из МК в НК посредством преобразования нормирования, из НК - в НК посредством преобразований сегмента и из НК в КУ посредством преобразований станции. Входные данные устройства ввода позиции преобразуются из КУ в НК посредством преобразования, обратного преобразованию станции, и посредством одного из преобразований, обратных к преобразованию нормирования из НК в МК.
2.3.6. Примитивы вывода и атрибуты примитивов могут быть объединены в сегмент. Сегменты являются неделимыми единицами при манипуляциях и изменениях. Манипуляции включают в себя создание, удаление и переименование. Изменение включает в себя преобразование сегмента, изменение его видимости и выделение сегмента. Сегментация является также основной для оперативного и не зависящего от устройства способа хранения изображений. Такая область хранения, определяемая как особая станция (называемая общей памятью сегментов) позволяет вставлять сегменты в другие сегменты и передавать сегменты на другие станции.
2.3.7. Атрибуты, управляющие внешним видом компонентов изображения (примитивов вывода, сегментов, подсказок и эха устройств ввода) на носители изображения, организованы следующим образом. Две группы атрибутов влияют на внешний вид каждого примитива вывода: атрибуты примитивов, которые не зависят от станции, и атрибуты станции. Атрибуты примитивов задаются по мере необходимости и связываются с примитивом во время его создания. Атрибуты примитива определяют его геометрические характеристики, такие как, например, высота литеры для примитива ТЕКСТ и размер шаблона для примитива ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ. Негеометрическими характеристиками примитивов атрибуты управляют одним из двух способов; либо все негеометрические характеристики примитива задаются одним атрибутом-индексом, указывающим на зависящее от станции представление (набор значений), либо каждая негеометрическая характеристика примитива задается отдельным, не зависящим от станции, атрибутом. Первый способ - задание связками, второй - индивидуальное задание.
2.3.8. Атрибуты станции включают связки негеометрических атрибутов примитивов, указываемые индексами. Связка ломаной, например, содержит значение типа линии, коэффициента масштабирования толщины линии и индекс цвета. Кроме того, атрибуты станции задают таблицу цвета, таблицу шаблонов и управляют задержкой изменения изображения. Атрибуты станции могут изменяться динамически.
2.3.9. Визуальное представление сегментов определяется атрибутами сегментов, включающими преобразование сегмента, видимость, выделение и чувствительность к указанию. Их также можно изменять динамически. Атрибуты сегмента могут служить основой для организации обратной связи во время манипуляции изображением (например при использовании выделения).
2.3.10. Атрибуты, управляющие работой логических устройств ввода, задаются либо во время инициализации, либо при подготовке устройств ввода. При инициализации могут быть определены начальные значения, тип подсказки и эха и область на экране, где они будут появляться. С помощью записи данных при инициализации можно задавать специфичные для данного устройства дополнительные атрибуты. Во время подготовки устройства ввода может быть выбран режим работы и включено или выключено эхо. Режимы работы логических устройств ввода определяют, кто (оператор или прикладная программа) имеет инициативу: данные ввода в режиме ОПРОС получаются непосредственно прикладной программой, данные ввода в режиме ЗАПРОС задаются оператором непосредственно в ответ на запрос прикладной программы, в режиме СОБЫТИЕ генерируются оператором асинхронно и накапливаются в очереди, доступной для обработки прикладной программой.
2.3.11. Во время работы ЯГС может находиться в пяти функциональных состояниях. Каждому состоянию соответствует набор функций, допустимых в этом состоянии, и набор переменных состояния. Концепция функционального состояния и переменные состояния позволяют четко определить параметры инициализации (например при обращении к функции ОТКРЫТЬ СТАНЦИЮ) и правильно интерпретировать действия различных функций, особенно для обеспечения независимости от устройств. Существует особый набор функций, называемых справочными функциями, который допускается во всех состояниях. Эти функции могут обращаться к таблицам состояния в режиме чтения. Ряд справочных функций имеет доступ в режиме чтения к описаниям станций, что дает возможность прикладной программе адаптироваться к конкретным возможностям станции. Справочные функции никогда не вызывают ошибок. Наоборот, полученная от них информация позволяет определить, правильно ли был сделан запрос.
2.3.12. В ЯГС предусмотрено запоминание графической информации с целью ее долговременного хранения и обмена между системами. Станция вывода в метафайл ЯГС выполняет запись графической информации в так называемый метафайл, станция ввода из метафайла ЯГС считывает данные из метафайла. Кроме обычных функций вывода ЯГС, станция вывода в метафайл может принимать записи, содержащие неграфическую информацию. Ввод из метафайла осуществляется при помощи операций чтения и интерпретации, которые приводят к тем же результатам, как и при обращении к соответствующим функциям непосредственно из прикладной программы.
2.4.1. Примитивы вывода
2.4.1.1. Графическая информация, которая генерируется ЯГС и направляется на все активные станции, строится из основных элементов, называемых графическими примитивами вывода. В ЯГС имеется шесть видов примитивов вывода:
ЛОМАНАЯ - набор связанных между собой отрезков прямых линий, определяемых последовательностью точек;
ПОЛИМАРКЕР - графические символы одного типа, центрированные в заданных позициях;
ТЕКСТ - строка литер в заданной позиции;
ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ - многоугольник, который может быть либо пуст, либо закрашен одним цветом, либо заполнен узором, либо заштрихован;
МАТРИЦА ЯЧЕЕК - матрица ячеек, каждая из которых имеет свой индивидуальный цвет;
ОБОБЩЕННЫЙ ПРИМИТИВ ВЫВОДА (ОПВ) - ЯГС обращается к специальным дополнительным возможностям геометрического вывода станции. Таким как, например, вычерчивание сплайновых кривых, дуг окружностей и эллипсов. Объекты вывода характеризуются идентификатором, набором точек и дополнительными данными. ЯГС применяет все преобразования к точкам, но оставляет их интерпретацию за станцией.
2.4.2. Атрибуты графических примитивов вывода
2.4.2.1. Каждый примитив вывода имеет три типа атрибутов: геометрический, негеометрический и идентификационный. Первые два типа атрибутов определяют точное представление примитива вывода, а третий тип атрибутов используется совместно с вводом. Значения атрибутов устанавливаются по мере необходимости и заносятся в таблицу состояния ЯГС. Предоставляются отдельные функции ЯГС для установки отдельно каждого из атрибутов примитива (за исключением флагов выборки атрибутов (ФВА), которые описаны ниже), что позволяет прикладной программе задавать значения атрибута, не обязательно задавая значения других атрибутов. Во время создания примитива вывода (а именно, когда вызывается одна из функций ЯГС для генерации примитива вывода) значения атрибутов связываются с примитивом и не могут впоследствии быть изменены.
2.4.2.2. Атрибуты первого типа управляют геометрическими характеристиками примитивов, которые влияют на форму и размер всего примитива (например ВЫСОТА ЛИТЕРЫ для примитивов ТЕКСТ). Атрибуты этого типа не зависят от станции. Они представляют координатные данные (точки или смещения) и задаются в мировых координатах, либо принимают одно из перечисленных значений. Геометрические атрибуты задаются отдельно для каждого из видов примитивов. Примитивы могут иметь один или несколько геометрических атрибутов или не иметь ни одного атрибута такого типа.