(PECL ps >= 1.1.0)
ps_translate — Изменяет систему координат
Устанавливает новую начальную точку системы координат.
psdoc
Идентификатор ресурса файла postscript, возвращённый функцией ps_new().
x
Координата X начала изменённой системы координат.
y
Координата Y начала изменённой системы координат.
Возвращает true
в случае успешного выполнения или false
в случае возникновения ошибки.
Пример #1 Изменение системы координат
<?php
function rectangle($ps) {
ps_moveto($ps, 0, 0);
ps_lineto($ps, 0, 50);
ps_lineto($ps, 50, 50);
ps_lineto($ps, 50, 0);
ps_lineto($ps, 0, 0);
ps_stroke($ps);
}
$ps = ps_new();
if (!ps_open_file($ps, "translate.ps")) {
print "Не удается открыть файл PostScript\n";
exit;
}
ps_set_info($ps, "Creator", "translate.php");
ps_set_info($ps, "Author", "Уве Штайнманн");
ps_set_info($ps, "Title", "Пример перевода");
ps_set_info($ps, "BoundingBox", "0 0 596 842");
$psfont = ps_findfont($ps, "Helvetica", "", 0);
ps_begin_page($ps, 596, 842);
ps_set_text_pos($ps, 100, 100);
ps_translate($ps, 500, 750);
rectangle($ps);
ps_translate($ps, -500, -750);
ps_setfont($ps, $psfont, 8.0);
ps_show($ps, "Текст в исходной позиции");
ps_end_page($ps);
ps_begin_page($ps, 596, 842);
ps_set_text_pos($ps, 100, 100);
ps_save($ps);
ps_translate($ps, 500, 750);
rectangle($ps);
ps_restore($ps);
ps_setfont($ps, $psfont, 8.0);
ps_show($ps, "Текст в исходной позиции");
ps_end_page($ps);
ps_delete($ps);
?>
Приведённый выше пример демонстрирует два возможных способа разместить графику (в данном случае просто прямоугольник) в любой позиции на странице, в то время как сама графика использует свою собственную систему координат. Хитрость заключается в том, чтобы изменить начало текущей системы координат перед рисованием прямоугольника. Изменение системы координат необходимо отменить после того, как рисунок был нарисован.
На второй странице применён несколько иной и более элегантный подход. Вместо отмены изменения вторым вызовом ps_translate(), графический контекст сохраняется до изменения системы координат и восстанавливается после рисования прямоугольника.