EPS-файл – это обычный текстовый файл. Стандартная программа для просмотра eps-файлов – gsview. Это свободно-распространяемая программа и ее легко найти, скачать и установить. Также eps-формат понимают другие многочисленные программы. Например, для этого можно использовать Photoshop, хотя это программа для работы с растровыми изображениями. Вообще говоря, eps-файлы могут быть как векторными, так и растровыми. Если файл в eps-формате векторный, то Photoshop при загрузке превращает его в растровую картинку (надо будет при загрузке задать разрешение создаваемой растровой картинки).
Подробно почитать про формат можно по ссылке.
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 5 5 105 105
%% пример серого файла
newpath
10 10 moveto
0 90 rlineto 90 0 rlineto 0 -90 rlineto
closepath
gsave
0.1 setgray
10 setlinewidth
stroke
%%
grestore
0.9 setgray
2 setlinewidth
stroke
%%
showpage
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 5 5 105 105
%% пример цветного файла
newpath
10 10 moveto
0 90 rlineto 90 0 rlineto 0 -90 rlineto
closepath
gsave
0 1 0 setrgbcolor
10 setlinewidth
stroke
%%
grestore
1 0 0 setrgbcolor
fill
%%
showpage
В заголовке надо указать версию формата и координаты окружающего прямоугольника изображения:
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 5 5
105 105
В конце файла пишется
showpage
Система координат отсчитывается от левого нижнего угла.
Ломаная, сама по себе, в формате задается отдельно. Потом ее можно использовать, например, для рисования, собственно, ломаной, или для рисования (заливки) многоугольника.
Задание ломаной начинается с команды newpath. Если требуется замкнуть ломаную, то в конце задания ломаной следует указать команду closepath.
Между указанными командами задаются команды начала рисования ломаной (moveto) и создания отрезка ломаной от текущей позиции (заданной командами moveto, или lineto, или rlineto) до заданной точки ( с помощью команд lineto или rliento). Перед командами moveto, lineto, rlineto задаются два аргумента, в которых определяется координата соответствующей точки. Комада rlineto задает новую вершину ломаной с помощью задания относительных координат (относительно предыдущей точки), а команда lineto задает координаты новой точки в абсолютных координатах.
Пример:
newpath
10 10 moveto
0 90 rlineto 90 0 rlineto 0 -90 rlineto
closepath
После создания ломаной имеет смысл написать команду gsave. Данная команда сохраняет ломаную в буфер и потом ее можно будет использовать повторно с помощью команды grestore. Таким образом можно, например, сначала залить содержимое ломаной, а потом нарисовать ее заново уже в виде, собственно, ломаной, что даст границу многоугольника.
Текущий цвет можно задавать в виде серого цвета, либо в виде цвета в формате RGB. В обоих случаях компоненты масштабируются от 0 до 1. Текущий цвет можно будет использовать, например, для рисования линии, или для заливки области цветом.
Например, красный цвет (в формате RGB) можно задать командой
1 0 0 setrgbcolor
Соответственно, черный, серый и белый цвета можно задать командами
0 setgray
0.1
setgray
1
setgray
Для заливки контура многоугольника сначала надо задать ломаную, потом задать цвет заливки, после чего можно вызвать команду заливки fill. Например:
newpath
10 10 moveto
0 90 rlineto 90 0 rlineto 0 -90 rlineto
closepath
0 1 0 setrgbcolor
fill
Для отрисовки ломаной следует сначала надо задать, собственно, ломаную, потом задать цвет линии, после чего можно вызвать команду отрисовки ломаной stroke. Например:
newpath
10 10 moveto
0 90 rlineto 90 0 rlineto 0 -90 rlineto -90 0 rlineto
1 0 0 setrgbcolor
stroke
Для отрисовки многоугольника следует сначала надо задать ломаную, определяющую границу многоугольника, и сохранить ее в буфер. Потом следует залить внутренность этой ломаной заданным цветом. Далее следует скопировать ломаную из буфера, задать цвет и толщину линии и нарисовать границу многоугольника.
newpath
10 10 moveto
0 90 rlineto 90 0 rlineto 0 -90 rlineto
closepath
gsave
0 1 0 setrgbcolor
fill
grestore
1 0 0 setrgbcolor
10 setlinewidth
stroke
Можно сравнить последний пример со вторым примером из раздела с примерами eps-файлов и заметить очевидную разницу.
Для сокращения размера файла можно использовать макроопределения. Для дальнейшей замены в тексте слова name на текст definition следует использовать команду
/name {definition} def
Наприме, первый пример можно преобразовать к следующему виду:
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 5 5
105 105
%% пример серого файла
/n {newpath} def
/m {moveto} def
/rl {rlineto} def
/lw {setlinewidth} def
/sg {setgray} def
n
10 10 m
0 90 rl 90 0 rl 0 -90 rl
closepath
gsave
0.1 sg
10 lw
stroke
%%
grestore
0.9 sg
2 lw
stroke
%%
showpage