Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000337.doc
Скачиваний:
23
Добавлен:
30.04.2022
Размер:
1.96 Mб
Скачать

3. Графические объекты, примитивы и их атрибуты

Функциональный интерфейс графической системы предоставляет для построения изображения базовые элементы, называемые примитивами. Вид примитива определяется его параметрами: геометрическим и визуальным представлениями на носителе изображения станции. Эти характеристики задаются набором атрибутов, связанных с примитивом. Некоторые атрибуты могут быть различными для различных станций. Например, одна и та же линия на одной станции может выглядеть черной и пунктирной, а на другой — красной и сплошной. Подобные характеристики примитиву, зависящие от представления на графической станции, называются зависимыми атрибутами. Ядро графической системы (ЯГС) предоставляет функции создания примитивов и установки их атрибутов. Для определенных атрибутов прикладная программа может указать, должен ли данный атрибут (например, тип линии, цвет ломаной) задаваться зависимым от станции образом.

Примитив вывода (Output primitive) — базовый графический элемент, который может использоваться для построения изображения. В ЯГС к примитивам вывода относятся ЛОМАНАЯ, ПОЛИМАРКЕР, ТЕКСТ, ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ, МАТРИЦА ЯЧЕЕК и ОБОБЩЕННЫЙ ПРИМИТИВ ВЫВОДА.

Изображение (Display image) — совокупность графических примитивов и/или сегментов, которая может быть одновременно выведена на носитель изображения.

Атрибут — характеристика примитива вывода или сегмента, например выделение, межлитерный просвет. Примечание: в ЯГС некоторые свойства станции называют атрибутами станции.

Примитивы вывода

В ЯГС предусмотрено шесть примитивов вывода.

Векторный примитив: ЛОМАНАЯ —ЯГС генерирует набор отрезков прямых, соединяющих заданную последовательность точек.

Точечный примитив: ПОЛИМАРКЕР - ЯГС генерирует набор символов некоторого типа, которые центрируются в указанных точках. Эти символы называются маркерами и отмечают последовательность позиций знаками требуемой формы.

Текстовый примитив: ТЕКСТ — ЯГС генерирует строку литер с началом в указанной позиции.

Растровые примитивы: ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ (FILL AREA) - ЯГС генерирует многоугольник; область, которую он ограничивает, может быть пустой, иметь фоновую окраску, быть покрытой узором по шаблону или заштрихованной.

МАТРИЦА ЯЧЕЕК (CELL ARRAY) - ЯГС генерирует матрицу прямоугольных ячеек, каждой из которых присвоен индивидуальный цвет. Этот примитив является обобщением матрицы пикселей растрового устройства. Тем не менее ячейки этого примитива не обязательно должны взаимно однозначно соответствовать аппаратным пикселям.

Примитив общего назначения: ОБОБЩЕННЫЙ ПРИМШИВ ВЫВОДА (ОПВ) (GENERALIZED DRAWING PRIMITIVE - GDP) - с помощью этого примитива ЯГС предоставляет возможность использовать специфические средства графического вывода стан-

Масштаб толщины линии — фактическая толщина линии определяется произведением номинальной толщины на коэффициент масштабирования (масштаб толщины линии). Линии различной толщины показаны на рис. 1.

Цвет — нужный цвет достигается заданием интенсивностей красного (К), зеленого (3) -и синего (С) цветов, т. е. КЗС-интенсивности.

Модель цвета КЗС-интенсивности можно представить в виде цветового куба. Три оси трехмерной системы координат с началом в одном из углов куба определяют значение интенсивностей красного, зеленого и синего цветов соответственно. Значения интенсивностей лежат в интервале 0...1. Любая точка внутри куба (включая грани) задает некоторый цвет. Черному цвету соответствуют " КЗС-интенсивность с координатой (0, 0, 0), белому - с координатой (1,1,1).

Таблица 1. Атрибуты примитивов вывода

ЛОМАНАЯ

ИДЕНТИФИКАТОР УКАЗАНИЯ МАСШТАБ ТОЛЩИНЫ ЛИНИИ

ТИП ЛИНИИ ЦВЕТ

ПОЛИМАРКЕР

ИДЕНТИФИКАТОР УКАЗАНИЯ МАСШТАБ МАРКЕРА

ТИП МАРКЕРА ЦВЕТ

ТЕКСТ

ИДЕНТИФИКАТОР УКАЗАНИЯ НАПРАВЛЕНИЕ ТЕКСТА МЕЖЛИТЕРНЫЙ ПЮСВЕТ ВЫРАВНИВАНИЕ ТЕКСТА

ВЫСОТА ЛИТЕРЫ ВЕРТИКАЛЬ ЛИТЕРЫ ШРИФТ ЦВЕТ

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

ИДЕНТИФИКАТОР УКАЗАНИЯ РАЗМЕР ШАБЛОНА ТОЧКА ПРИВЯЗКИ ШАБЛОНА

МАТРИЦА ШАБЛОНА

ВИД ЗАПОЛНЕНИЯ ВИД ШТРИХОВКИ ЦВЕТ

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

ИДЕНТИФИКАТОР, УКАЗАНИЯ

ЦВЕТ

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

ИДЕНТИФИКАТОР УКАЗАНИЯ

ЦВЕТ

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

Масштаб маркера — реальный размер маркера-определяется произведением номинального размера на коэффициент масштабирования (масштаб маркера). Маркеры различных типов и размеров показаны на рис. 1.

Шрифт — задается числом, выбирающим то или иное написание литер текста исходя из возможностей станции. Примеры написания текста различным шрифтом показаны на рис. 7.

Т

Рис. 7 Примеры текста с различными атрибутами

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

Высота литеры — размер литеры по вертикали (кегль шрифта).

Вертикаль литеры — вектор ориентации вертикальной (продольной) оси литеры.

Масштаб расширения литеры — коэффициент, определяющий отклонение отношения значений ширины (толщины) литеры к ее высоте от номинального значения, принятого при разработке данного шрифта. Направление текста — порядок, в котором выводится последовательность литер. Нормальный порядок письма, используемый в этой книге, — "вправо". Это значит, что литеры текста, который вы читаете, следуют слева направо. В ЯГС дополнительно • предусмотрены следующие направления письма: влево, вверх и вниз.

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

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

Примеры текста с различными значениями высоты литер, их вертикали, масштаба расширения, направления текста и выравнивания приведены на рисунке 2.

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

Примеры полигональных областей, заполненных различным способом, приведены на рис. 8.

В

Рисунок 8 - Примеры полигональных областей

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

Размер шаблона — задает размеры базового прямоугольника, в который помещается фигура шаблона.

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

Матрица шаблона — задается матрицей прямоугольных ячеек, каждой из которых присвоен определенный цвет. Эта цветовая палитра используется при раскраске базового прямоугольника шаблона и всех его копий. Пример заполнения прямоугольной области по шаблону дан на рис. 3

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

Индексы, связки и таблицы

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

Например,

ЗАДАТЬ ВЫСОТУ ЛИТЕРЫ (h)

ТЕКСТ (точка,'ABC'){этот текст будет выведен литерами высотой h}

Для задания зависимых от графической станции атрибутов (за исключением цвета и фигур шаблона) используется связанный с примитивами данного типа индекс. Он указывает на элементы таблицы, реализованной на каждой графической станции для примитивов различного типа. Множество зависимых атрибутов примитива данного типа называется связкой (boundle), а таблица, объединяющая связки атрибутов с разными значениями, - таблицей связок. Например, ИНДЕКС ЛОМАНОЙ указывает на элемент таблицы связок ломаной, содержащий значения толщины линии, типа линии и индекса цвета (рис. 9). ИНДЕКС ЛОМАНОЙ, ИНДЕКС ПОЛИМАРКЕРА, ИНДЕКС ТЕКСТА и ИНДЕКС ПОЛИГОНАЛЬНОЙ ОБЛАСТИ устанавливаются глобально, распространяя тем самым свое действие на изображение всех впоследствии создаваемых примитивов соответствующего типа.

Рисунок 9 - Схема связи атрибутов ломаной

Для каждого атрибута, допускающего зависимый или независимый от станции способ задания, имеется глобальный переключатель. Он устанавливает режим связывания атрибута (attribute binding mode). Каждый из переключателей, называемых флагами выборки атрибута (Aspect Source Flag - ASF) - может находиться в одном из двух состояний - СВЯЗАННЫЙ (зависимый) или ИНДИВИДУАЛЬНЫЙ (независимый).

Индекс связки — указатель на элемент таблицы связок для примитивов вывода данного типа. Определяет зависимые от графической станции характеристики представления примитива.

Таблица связок - зависимая от станции таблица, связанная с примитивами вывода данного типа. Элементы таблицы (связки) описывают все зависимые характеристики представления примитива на станции. В ЯГС таблицы связок существуют для следующих примитивов вывода: ломаной, полимаркера, текста и полигональной области.

Таблица связок ломаной — таблица, связывающая конкретные значения всех зависимых характеристик представления ломаной на станции с индексом связки ломанор. В ЯГС каждый элемент этой таблицы содержит значения типа линии, масштаба толщины линии и индекса цвета.

Таблица связок полимаркера - таблица, связывающая конкретные значения всех зависимых характеристик представления полимаркера на станции с индексом связки полимаркера. В ЯГС каждый элемент этой таблицы содержит значения типа маркера, масштаба макера и индекса цвета.

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

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

Важным свойством зависимых атрибутов является то, что они могут оказывать воздействие на представление изображения, уже находящегося на носителе изображения станции. Если изменить какой-либо из этих атрибутов, например значение КЗС-интенсивностей в таблице цвета, то соответственно изменится и внешнее представление уже выведенных примитивов, использующих эти атрибуты (сказанное будет отработано правильно только для примитивов внутри сегментов). Атрибуты, назначенные примитивами в состоянии ИНДИВИДУАЛЬНЫЙ впоследствии изменить уже нельзя.

Цвет является зависимым от станции атрибутом и адресуется с помощью индекса цвета, который находится в таблицах связок. Индекс цвета указывает на элемент таблицы цвета, которая связывает КЗС-интенсивности с различными значениями индексов цвета. Если изменяются элементы таблицы цвета в процессе воспроизведения изображения на станции, то изменяется и окраска соответствующих выводимых примитивов.

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

На рис. 10 показана взаимосвязь атрибутов ломаной, когда все флаги выборки атрибутов находятся в состоянии СВЯЗАННЫЙ. Похожие схемы могут быть представлены для полимаркеров и текстов.

На рис. 11 показана взаимосвязь атрибутов ломаной, когда все флаги выборки атрибутов находятся в состоянии ИНДИВИДУАЛЬНЫЙ.

Рисунок 10 Схема связи атрибутов полигональной области в режиме СВЯЗАННЫЙ

Рисунок 11 - Схема связи атрибутов полигональной области - в режиме ИНДИВИДУАЛЬНЫЙ

Такая же базовая схема справедлива для полигональной области, за исключением того, что связка ее атрибутов (и альтернативный набор индивидуально назначаемых, атрибутов) содержит индекс заполнителя, используемый при выборке типа шаблона или штриховки. Если вид заполнения имеет значение ПО ШАБЛОНУ, то индекс указывает на элементы таблицы, содержащей размеры и индексы цвета матриц шаблона. Для заполнения области будет применяться шаблон, на который указывает индекс заполнителя, вместе со статически задаваемыми атрибутами — размером шаблона и точкой его привязки. Если вид заполнения имеет значение ШТРИХОВКА, то индекс заполнителя служит для выбора одного из типов штриховки, поддерживаемых реализацией. Других. видов штриховки, кроме определяемых реализацией, не существует.

Таблица связок полигональной области — таблица, связывающая конкретные значения всех зависимых характеристик представления полигональной области на станции с индексом связки полигональной области. В ЯГС каждый элемент этой таблицы содержит значения вида заполнения, индекса заполнителя и индекса цвета. Представление о взаимосвязи атрибутов полигональной области в случае, когда все флаги выборки атрибутов находятся в состоянии СВЯЗАННЫЙ, дается на рис. 11. Аналогичная картина взаимосвязи всех атрибутов этого примитива, но при состоянии флагов ИНДИВИДУАЛЬНЫЙ показана на рис. 12.

С

Рисунок 11 – Задание цвета для примитива МАТРИЦА ЯЧЕЕК

хема задания атрибутов выглядит совершенно иначе для матрицы ячеек — набор индексов цвета указывается непосредственно при вызове функции примитива. Эти индексы прямо указывают на таблицу цвета (рис. 12).

Рисунок 12 - Схема связи атрибутов полигональной области

Связанная иди индивидуальная форма задания атрибутов обобщенного примитива вывода целиком зависит от разработчика Ядра графической системы. Специальные связки атрибутов обобщенного примитива вывода не определены.

Вопросы самоконтроля

  1. Перечислите основные примитивы вывода.

  2. Что такое примитив вывода?

  3. Что такое атрибут?

  4. Дайте определение изображению.

  5. Дайте определение понятию масштаб толщины линии.

  6. Что такое матрица шаблона?

  7. Что понимают под точностью текста?

  8. Что такое таблица связок полигональной области?

  9. Для чего используется таблица цвета?

  10. Как определяется вид штриховки?