Графический метафайл представляет независимый как от устройств, так и от приложений механизм для передачи и хранения графических данных. Дополнительно были разъяснены базовые принципы, на которые опирается разработка графических метафайлов:
Метафайл GKSM
Ядро графической системы предоставляет прикладной программе интерфейс с графическим метафайлом, получившим название GKS-метафайл (GKSM), и как часть стандарта официальный документ содержит описание функции этого интерфейса.
Формат и Содержание записей метафайла находится в приложении, которое не входит в стандарт. Это разделение вызвано необходимостью обеспечить независимость стандартизации метафайла от конкретных систем или устройств.
Содержание метафайла
Метафайл GKSM описывает плоские изображения, представленные последовательностью записей данных (items), сгенерированных в результате вызова функций ЯГС. Как известно, функции ЯГС сгруппированы по возрастанию функциональных возможностей на совместимые снизу вверх уровни. Хотя на этом и не заостряется внимание, уровни ЯГС полностью определяют соответствующие уровни метафайла GKSM. Таким образом, в простейшем случае в метафайл входит всего двенадцать типов записей, представляющих ломаную, полимаркер, текст, простые атрибуты, а также записи заголовка файла, заголовка изображения и конечную запись. На более высоких уровнях содержатся записи функций задания прочих атрибутов (цвета, толщины линии, шрифта и т. д.), растровых примитивов и операций над сегментами. Дополнительно к графическим записям в метафайл может входить и произвольная, зависящая от приложений, информация.
Формат записей метафайла
Метафайл GKSM строится как последовательность логических записей переменной длины. Каждая запись начинается с поля ключа, определяющего его тип. Затем для облегчения пропуска интерпретатором ненужных записей следует длина данных в записи. Длина ключа колеблется от одного до восьми байтов; внутреннее представление вещественных и целых чисел выбирается в достаточно широких пределах. Возможны форматы данных как двоичный, так и в коде ASCII. Используемый текущий формат представления указывается в заголовке файла, который предшествует все прочим записям любого метафайла. Логические записи последовательно отображаются на физические записи, имеющие образ перфокарт.
Уровни метафайлов
Первая версия метафайла, разрабатываемого группой WG2 для стандартизации на международном уровне, обязана включать только функции графики.
Тем не менее, существует и настоятельная потребность в интеграции как графической, так и прикладной информации в единый метафайл с распределенными по возрастающим снизу вверх уровням возможностями. На самом высоком уровне графические составляющие таких ориентированных на приложениях файлов, как IGES, могут быть совмещены с соответствующими форматами графического метафайла. Один из путей достижения расширенной функциональности без потери общности, свойственной простым графическим метафайлам, заключается во введении дополнительных уровней метафайла подобно многоуровневой структуре ЯГС. И если три нижних уровня на этом рисунке построены по принципу возрастания графических возможностей, то верхний уровень уже зависит от приложения. Можно разработать специальный интерпретатор, который на основе графического содержимого будет генерировать.
В заключение следует сказать о связи между метафайлами CGM и GKSM. Первый следует рассматривать скорее как метафайл описания статических изображений, в который не включены никакие функции изменения (например, сегментации), а второй - это скорее протокол работы ЯГС. Если уровень вывода 0, то эти два метафайла функционально эквивалентны. Простым перекодированием можно перевести данные из формата одного метафайла в формат другого; на более высоких уровнях GKSM содержит функции сегментации, поэтому ЯГС должно обработать все эти функции и только после создания окончательного изображения занести его в CGM.
Подобная несовместимость может быть преодолена либо путем развития функций CGM, либо принятием описания GKSM как стандарта ISO. Но все-таки желательно, чтобы оба они являлись стандартами, оба служили для хранения изображений на уровне 0 и оба представляли собой файлы-протоколы на уровне 1.
Уровень
Содержание
L3 — прикладной слой
L2 + проблемно-ориентированные данные (объекты САПР, их геометрия и свойства)
L2 — механизмы описания
L1 + описания и ссылки на символы, макросы и штифты
L1 -структурированное изображение
LO + сегментация изображения: преобразование частей изображения и идентификация
LO — изображение
Графические примитивы и атрибуты
Рисунок 13 Многоуровневая структура графических метафайлов
Вопросы для самоконтроля
Дайте определение метафайлу?
Что такое графические языки?
перечислите особенности графических языков высокого уровня.
Перечислите основные проблемы разработки и использование графических языков.
В каких ситуациях используют процедурные графические языки?
Перечислите преимущества и недостатки использования графпакетов.