<?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, "rotation.ps")) {
print "Cannot open PostScript file\n";
exit;
}
ps_set_info($ps, "Creator", "rotation.php");
ps_set_info($ps, "Author", "Uwe Steinmann");
ps_set_info($ps, "Title", "Rotation example");
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_save($ps);
ps_translate($ps, 100, 100);
ps_rotate($ps, 45);
rectangle($ps);
ps_restore($ps);
ps_setfont($ps, $psfont, 8.0);
ps_show($ps, "Text without rotation");
ps_end_page($ps);
ps_delete($ps);
?>
The above example illustrates a very common way of rotating a
graphic (in this case just a rectangle) by simply rotating the
coordinate system. Since the graphic's coordinate system assumes
(0,0) to be the origin, the page coordinate system is also translated
to place the graphics not on the edge of the page. Pay attention
to the order of ps_translate() and
ps_rotate(). In the above case the rectancle is
rotated around the point (100, 100) in the untranslated coordinate
system. Switching the two statements has a completely
different result.
In order to output the following text at the original position, all
modifications of the coordinate system are encapsulated in
ps_save() and ps_restore().