Логин:   Пароль:






Новости
Рассылки
Форум
Поиск


Java
- Апплеты
- Вопрос-ответ
- Классы
- Примеры
- Руководства
- Статьи
- IDE
- Словарь терминов
- Скачать

Мобильная Java
- Игры
- Примеры
- Статьи
- WAP, WML и пр.

JavaScript
- Вопрос-ответ
- Примеры
- Статьи

Веб-мастеринг
- HTML
- CSS
- SSI

Разминка для ума
Проекты
Книги
Ссылки
Программы
Юмор :)




Rambler's Top100
Rambler's Top100

Статьи - разминка для умаОписание формата Adobe Illustrator

Описание формата Adobe Illustrator

Формат, широко используемый для обмена двухмерными объектами. Стандартные файлы просты в написании. К сожалению, файлы, созданные прикладными программами, которые реализуют полную спецификацию AI, бывают громоздкими, сложными и обычно медленно воспроизводятся.

Обзор

Adobe Illustrator, первоначально разработанный для платформы Macintosh, — известная и широко используемая программа создания изображений. Существуют версии для Macintosh, Microsoft windows и NeXT. Мощные возмож-ности Adobe Illustrator обусловлены тем, что в качестве графических объектов здесь реализованы кривые Безье, а также наличием простого пользовательского интерфейса, который обеспечивает точное позиционирование сплайновых графических объектов. Использование кривых Безье дает некоторые преимущества при моделировании естест-венных (а в определенных случаях и искусственных) объектов, файлы Adobe Illustrator применяются для обмена графическими элементами.

Формат AI инкапсулирует и формализует в структурированном файле подмножество языка описания страницы (PDL) PostScript. Такие файлы предназначены для отображения на принтере PostScript, но могут включать и растровую версию изображения, обеспечивая тем самым его предварительный просмотр. PostScript в полной реализации представляет собой мощный и сложный язык и способен определять почти все, что может быть отображено на двумерном устройстве вывода, формат AI адаптирован для хранения традиционных графических данных: рисунков, чертежей и декоративных надписей. Отметим все же, что файлы AI могут быть очень сложными. Мощь PostScript обусловлена в основном возможностью определять последовательности операций и затем объединять их простыми синтаксическими средствами. Эта скрытая сложность в файлах Adobe Illustrator иногда (но не всегда) сводится к минимуму.

Простые файлы AI конструировать довольно легко, и прикладная программа сможет создавать файлы, которые будут прочитаны любой программой чтения AI и распечатаны на любом PostScript-принтере. А вот чтение файлов AI — совсем другое дело. Некоторые операции могут оказаться слишком сложными для реализации и моделирования программой визуализации. Поэтому разработчики часто предпочитают не визуализировать изображение из данных этого подмножества PostScript. Тем не менее следует отметить, что, как правило, почти все изображение можно реконструировать простыми операциями. Если хотите разработать программу чтения файлов Adobe Illustrator, то рекомендуем в качестве подсказки воспользоваться исходными текстами системы GNU GhostScript, которая содержит почти полную реализацию языка PostScript.

PostScript, а следовательно, и его подмножество AI, представляет собой особый язык со своими правилами. Поэтому, прежде чем начать работать с AI-файлами и изучать спецификацию и ознакомится с документацией по PostScript.

Организация файла

Файл AI состоит из последовательности текстовых строк, которые могут быть комментариями, данными, командами, а также комбинациями команд и данных. Команды в файлах AI — это операторы, за которыми могут следовать или не следовать данные. Данные помещаются в стек и извлекаются из него по схеме "пришел последним — вышел первым" (LIFO). Иногда PostScript рассматривают как потоковый PDL. Однако строки сначала нужно анализировать как полные, а только затем размечать. Строки-операторы обычно имеют такую форму:
список -аргументов оператор

Ключевыми понятиями являются контур, штрих, заполнение и графическое состояние. По контуру движется графический курсор. Штриховка является результатом отображения контура или его части на поверхности визуали-зации. Заполнение применяется для замкнутых контуров. Результаты штриховки и того, что фактически происходит во время операции заполнения (помимо всего прочего), определяются графическим состоянием.

Комментарий — это строка, в которой первым символом, отличным от пробела, является символ %. Специальные строки, называемые структурирующими комментариями, обозначаются комбинацией %%. Знак "+", следующий сразу же за обозначением структурирующего комментария означает, что данные в этой строке связаны с предыдущим структурирующим комментарием.

Мы будем использовать следующие обозначения: llx — нижняя левая координата x, lly — нижняя левая координата y, urx — верхняя правая координата x, uryу— верхняя правая координата y. Этими точками определяется ограничи-тельная рамка; аналогичным образом такие рамки задавались в исходной среде проектирования Macintosh. В других системах могут возникнуть проблемы, поскольку многие объекты ориентированы относительно своих ограничитель-ных рамок. Будем считать, что мы предупредили разработчиков, работающих в таких системах.

Файлы AI организованы следующим образом: вначале записана строка идентификатора, за ней следует заголовок, затем остальная часть файла, в которой определяются графические объекты. В терминологии фирмы Adobe заголовок называется "Прологом" (Prolog) и состоит из структурирующих и простых комментариев. За заголовком следует раздел "Настройки сценария" (Script Setup); он содержит команды, определяющие объекты, из которых состоит изображение. Затем идут разделы "Дополнение страницы" (Page Trailer) и "Дополнение документа" (Document Trailer). Завершаются файлы структурирующим комментарием %%ЕОР, который сообщает программе или устройству визуализации о том, что данные, относящиеся к визуализируемому изображению, закончились.

Строка идентификатора
Пролог
Комментарии
Настройка сценария
Объекты
Дополнение страницы
Дополнение документа

Подробное описание файла

Все файлы AI начинаются строкой комментария, имеющей следующий формат


%PS-Adobe-X.X EPSF-Y.Y.
где X.X и Y.Y — версии форматов AI и EPSF (для хранения инкапсулированного растра) соответственно. Обратите внимание на то, что для идентификации файла программа чтения должна проверить и разметить первую строку, независимо от того, комментарий это или нет.

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


%Строка идентификатора файла
%%BeginProlog
.
.    перечень комментариев заголовка
.
%%EndComments
.
.    перечень описаний наборов процедур
.
%%EndProlog

Типичный заголовок выглядит следующим образом:


%%BeginProlog
%%Creator: Adobe Illustrator 4.0
%%For: John Doe Xylane University
%%Title: Figure 1.1
%%CreationDate: 12-13-95 03:43:15
%%BoundingBox: 0 0 512 512
%%EndComments
%%DocumentSuppliedResources: procset AdobeCustomColor Red123 3 0
%%EndProlog

Отметим, что программа Adobe Illustrator может сохранять файлы в виде некой "беззаголовочной" версии. В этом случае большая часть приведенной выше информации (за исключением строки идентификатора и комментария BoundingBox) будет отсутствовать. Файлы, записанные программой Adobe Illustrator для экспорта, обычно содержат более обширную информацию заголовка. Ниже приведен формат документа, который фирма Adobe считает допус-тимым минимумом для чтения программой Adobe Illustrator:


%!PS-Adobe-3.0
%%BoundingBox: 0 0 512 512
%%EndComments
%%EndProlog
%%BeginSetup
.
.     кодирование шрифтов
.
.     описания шаблонов
.
%%EndSetup
.
.     описание объектов
.
%%Trailer
%%EOF

Структурирующие комментарии

Некоторые структурирующие комментарии используются только в заголовке. Другие появляются в теле файла. В версии Adobe Illustrator для Microsoft Windows (V 4.0) используются такие структурирующие комментарии:


%%Creator: Adobe Illustrator (TM) версия
%%For: пользователь, организация
%%Title: заголовок
%%CreationDate: дата, время
%%DocumentProcSets: Adobe_Illustrator_версия уровень модификация
%%DocumentSuppliedResources: Adobe_Illustrator_версия уровень модификация
%%DocumentFonts: шрифты
%%BoundingBox: llx lly urx ury
%%TemplateBox: llx lly urx ury
%%Template: имя файла
%%PageOrigin: x y
%%PrinterName: принтер
%%PrinterRect: llx lly urx ury

В среде Macintosh последние четыре комментария обычно хранятся в файле ресурсов.

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

%%BeginProlog  
%%BoundingBox: llx lly urx ury Целые
%%CMYKCustomColors:  
%%CreationDate: дата, время Допустимые PostScript-строки
%%Creator: имя версия Программа, использованная для создания файла
%%DocumentCustomcolors: заданный цвет Цвет, определенный в файле
%%DocumentFiles: файл на импорт  
%%DocumentFonts: имя шрифта Шрифт, используемый в изображении
%%DocumentNeededResources: прочие ресурсы Необходимы для воспроизведения изображения
%%DocumentProcessColors: цвета Цвета в описании цветовой модели
%%EndComments  
%%EndProlog  
%%EOF  
%%For: Факультативная информация
%%IncludeResources: Различные ресурсы, необходимые для воспроизведения изображения
%%Title: Наименование изображения

Наборы процедур

Описания наборов процедур начинаются с ключевого слова DocumentSuppliedResources. За ним следует ключевое слово procset и список аргументов, содержащий один или несколько перечисленных ниже элементов:


Adobe_cmykcolor
Adobe_cshow
Adobe_customcolor
Adobe_Illustrator_AI3
Adobe_packedarray
Adobe_pattern_AI3
Adobe_typography_AI3

Затем следуют номер версии и номер ее модификации, например:


DocumentSuppliedResources: procset Adobe_cshow 3 4

Такой порядок характерен для всех случаев, кроме аргумента Adobe_customcolor, где дополнительно указывается цвет:


DocumentSuppliedResources: procset Adobe_customcolor Red123 3 4

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

Комментарии заголовка

Следующие комментарии могут быть включены в заголовок между строками BeginProlog и EndPrologпосле всех остальных комментариев заголовка:


%AI3_ColorUsage: Black&white или Color
%AI3_TemplateBox: llx lly urx ury
%AI3_TemplateFile: том::каталог идентификатор:имя
%AI3_TileBox: llx lly urx ury      только для Macintosh

Раздел настройки сценария

Раздел настройки сценария состоит из информации о настройке, перечня описаний объектов, дополнения страницы и дополнения документа.

Часть этого раздела, посвященная настройке, имеет следующий формат


%%BeginSetup
%%IncludeFont: шрифт
.     нициализация набора процедур 
.
.     кодирование шрифта 
.
.     описания шаблонов
.
%%EndSetup

В строке IncludeFont указывается шрифт, который используется в документе и подставляется в том случае, когда нужный шрифт недоступен программе визуализации. Определенные в заголовке наборы процедур во многих случаях необходимо инициализировать, причем позже в файле они деинициализируются (или завершаются). Кодирование шрифтов заключается в том, что начертаниям букв, имеющимся в файле шрифта, ставятся в соответствие коды ASCII. Мы не будем здесь разъяснять суть кодирования шрифтов; необходимую информацию можно получить из специализированных источников. Отметим лишь, что кодирование шрифтов в этой части файла задается операторами TE и TZ.

В этом же разделе описываются шаблоны. Подразумевается, что они используются в файле один или несколько раз. Описания шаблонов имеют следующий синтаксис:


%%BeginPattern:
имя шаблона llx lly urx ury список слоев E
%%EndPattern

Шаблоны представляют собой миниатюрные рисунки, по сложности иногда сравнимые с полномасштабными многослойными изображениями. Поэтому за дополнительной информацией вам придется обратиться к спецификации формата.

За информацией о настройках, помещенной в разделе "Настройки сценария", следует сам сценарий, состоящий из описаний объектов Эти описания занимают основную часть файла. Во многих случаях на основании их синтаксического анализа можно при визуализации получить хорошую аппроксимацию изображения, особенно в файлах, созданных другими программами (не Adobe Illustrator).

Перед каждым объектом стоит флаг, обозначенный как флаг А. Если этот флаг установлен, то объект в Adobe Illustrator считается заблокированным (не редактируемым). Объектами могут быть:

  • контур
  • встроенный графический объект
  • маска контура
  • абонент
  • составной объект
  • диаграмма
  • текст
  • PostScript-документ

Ниже мы подробно рассмотрим только контуры, встроенные графические объекты, абоненты и диаграммы. За информацией о составных и текстовых объектах рекомендуем обращаться к документации формата AI и спецификации PostScript. Следует подчеркнуть, что работать с терминологией по графам имеет смысл только при наличии под рукой документации Adobe Illustrator.

Объекты-контуры определяются заданными стилем начертания, геометрией контура и способом его визуализации.

Стиль начертания контура можно задать, установив текущее графическое состояние. Отметим, что графическое состояние можно временно сохранять и восстанавливать. Ниже перечислены наиболее важные аргументы состояния:

Аргумент Оператор Значение
array phase d Задает пунктир с помощью массива
flatness i Сглаживание контура с использованием кривых Безье (0-100)
flag D Направление поворота (0=по часовой стрелке)
linecap J 0=утолщенный, 1=скругленный, 2=точный
linejoin j 0=срезанный, 1=круглый, 2=заостренный
linewidth w Толщина линии (минимум 0)
miterlimit M Регулирует срез (>1)

Геометрия контура задается с помощью следующего синтаксиса:

Аргумент Оператор Значение
x y m Перейти
x y l Провести линию
x y L Провести линию до угла
x1 y1 x2 y2 x3 y3 c Провести кривую — добавить к контуру кривую Безье
x1 y1 x2 y2 x3 y3 C провести кривую до угла
x2 y2 x3 y3 v Вставить кривую Безье, начиная с текущей точки
x2 y2 x3 y3 V Вставить кривую Безье до угла
x1 y1 x3 y3 y Добавить кривую Безье к текущему контуру и закончить в точке х3,у3
x1 y1 x3 y3 Y Добавить кривую Безье к текущему контуру до угла

Визуализация контуров обеспечивается следующими операторами:

Аргумент Оператор Значение
- N Оставляет незамкнутый, незаполненный, не заштрихованный контур
- n Оставляет замкнутый, незаполненный, не заштрихованный контур
- F Заполняет контур, оставляя его незамкнутым
- f Заполняет контур, замыкая его
- S Штрихует контур, используя текущие значения по умолчанию
- s Замыкает контур и штрихует его, используя текущие значения по умолчанию
- B Оставляет незамкнутый контур, но заполняет и штрихует его
- b Замыкает, заполняет, штрихует контур

Встроенные графические объекты представляют собой файлы EPS, включенные в AI-файл. Их можно включать либо по ссылке (на внешний файл), либо подстановкой. Информация о включаемом файле начинается оператором "'" (апостроф) и заканчивается оператором "~" (тильда). Между этими операторами размещается комментарий %%IncludeFile(для файлов, включаемых ссылкой) или же пара комментариев %%BeginDocument и %%EndDocument (для подставляемых файлов).


a b c d tx ty llx lly urx ury имя-файла '

Аргументы a b c d tx и ty необязательны и задают матрицу преобразования для включаемого файла. Аргументы llx lly urx и ury задают ограничительную рамку включаемого файла. Аргумент имя-файла — это полное имя включаемого файла.

Файлы, включаемые по внешней ссылке:


a b c d tx ty llx lly urx ury имя-файла '
%%IncludeFile: имя-файла

Файлы, включаемые подстановкой:


a b c d tx ty llx lly urx ury имя-файла '
%%BeginDocument: имя файла
.     
.     содержимое включаемого файла
.
%%EndDocument
~

Системы Macintosh могут включать ссылки на абонентские объекты, связанные с функцией публикации и подписки, имеющейся в System 7. Эти ссылки указываются следующим комментарием:


%AI3_Subscriber: номер ресурса 
встроенный графический объект

где номер ресурса — это номер ресурса SECT в файле, а встроенный графический объект задается так, как указано выше. Графические объекты используются для описания диаграмм (графиков) в деловых, технических и научных приложе-ниях. Полное управление диаграммами, включая размещение и задание внешнего вида перечисленных ниже элементов (определенных фирмой Adobe), обеспечивается рядом команд. Многие детали этих команд имеют смысл только в среде Adobe Illustrator а именно:

  • оси
  • группа меток
  • цена деления оси
  • группа категории оси
  • край
  • группа надписей
  • столбец данных
  • серия 0
  • серия 1
Аргумент Оператор Значение
- Gs Начало графического объекта
- GS Конец графического объекта
l t r b Gb Граница диаграммы (слева, сверху, справа, снизу)
(см. спецификацию) Gy Значения в диалоговом окне Graph Style
(см. спецификацию) Gd Значения в диалоговом окне Graph Style
axis strung Ga Ось: 1=снизу, 2=слева, 3=справа
(см. спецификацию) GA Спецификации осей
r c fr fc Gz Таблица: строки, столбцы, первая строка, первый столбец
cv1, cv2…cvx Gc Считывает в таблицу значения ячеек 1-х
cw1, cw2…cwx num Gw Ширина столбцов 1-х, num=число столбцов
- GC Таблица заполнена
- Gt Начать настройку графика
- GT Закончить настройку графика
target cust Gx Цель, настройка (см. ниже)
cust Gp Общая настройка (см. ниже)
method G+ Изменить метод: 0=сброс в новый, добавить новый к предыдущему
direction Gl 0=послать назад, 1=послать вперед
df ds fcs scs m Gf DoFill, doStroke, fillStyle, strokeStyle, isAMask
column Gl Индекс столбца таблицы
row Gr Индекс строки таблицы
axis Gi Какой объект оси находится внутри: 1=нижний, 2=лсвый, 4=правый,8-верхний
(см. ниже) Gm Настройка матрицы
(см. ниже) GD Настройка формы столбца
repeat Ge Повторить форму столбца
tickvalue Gv Численное значение, соответствующее модифицированной метке деления
- GX Конец настройки
Target col row axis Go Тип только что считанного графического объекта (см. ниже)

Оператор Gx (настройка графика) обеспечивает сохранение информации о текущих значениях по умолчанию. Параметр target принимает одно из следующих значений:

0 Всю диаграмму
1 Все серии и метки легенды
2 Одна серия и мелем легенды
3 Одна серия без легенды
4 Один столбик, линию или сектор диаграммы
5 Все метки данных
6 Одна серия и метки легенды
7 Одна серия без меток легенды
8 Метки одного сегмента линии данных
9 Одна ось, полная
10 Главная линия оси категории
11 Основное деление оси
12 Основное единичное деление оси
13 Набор обозначений делений оси
14 Единичное обозначение метки на оси
15 Весь текст легенды
16 Текст одной легенды
17 Главная линяя числовой оси
18 Рамка или линия легенды, но без метки
19 Метка одной легенды
20 Все обозначения на оси категории
21 Одно обозначение на оси категории
22 Все теневое событие
23 Все деления на одной оси
24 Все вспомогательные деления на одной оси
25 Одно вспомогательное деление на одной оси

Аргумент настройки может иметь одно из следующих значений:

0 Общая настройка по Adobe Illustrator
1 Задать стиль серии диаграмм
2 Задать форму столбика
3 Задать форму метки

Оператор Gp обеспечивает выполнение следующих установочных операций:

0 Переместить/Сдвинуть/Повернуть/Масштабировать
1 Задать стиль начертания
9 Переместить вперед/назад
11 Задать стиль компоновки

Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 11

Warning: mysql_db_query() [function.mysql-db-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 19

Warning: mysql_db_query() [function.mysql-db-query]: A link to the server could not be established in /pub/home/javaport/javaportal/books/show2b.php on line 19

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/books/show2b.php on line 30
Узнай о чем ты на самом деле сейчас думаешь тут.


Опрос
Считаете ли вы целесообразным сделать аналог упражнений по Hibernate на базе вопросов www.sql-ex.ru?
Да, полный аналог упражнений
Да, но с реализацией основных конструкций объектной модели
Нет, Hibernate не актуален, использую др. технологии
Нет



Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 91

Warning: mysql_db_query() [function.mysql-db-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 93

Warning: mysql_db_query() [function.mysql-db-query]: A link to the server could not be established in /pub/home/javaport/javaportal/news/worldnews.php on line 93

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/news/worldnews.php on line 95