Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : PostScript document creation : ps_translate

ps_translate

Sets translation (PECL ps:1.1.0-1.3.5)
bool ps_translate ( resource psdoc, float x, float y )

Sets a new initial point of the coordinate system.

Parameters

psdoc

Resource identifier of the postscript file as returned by ps_new().

x

x-coordinate of the origin of the translated coordinate system.

y

y-coordinate of the origin of the translated coordinate system.

Return Values

Returns TRUE on success or FALSE on failure.

Examples

Example 2024. Translation of the coordinate system

<?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
"Cannot open PostScript file\n";
 exit;
}

ps_set_info($ps, "Creator", "translate.php");
ps_set_info($ps, "Author", "Uwe Steinmann");
ps_set_info($ps, "Title", "Translated 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_translate($ps, 500, 750);
rectangle($ps);
ps_translate($ps, -500, -750);
ps_setfont($ps, $psfont, 8.0);
ps_show($ps, "Text at initial position");
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, "Text at initial position");
ps_end_page($ps);

ps_delete($ps);
?>

The above example demonstrates two possible ways to place a graphic (in this case just a rectangle) at any position on the page, while the graphic itself uses its own coordinate system. The trick is to change the origin of the current coordinate system before drawing the rectangle. The translation has to undone after the graphic has been drawn.

On the second page a slightly different and more elegant approach is applied. Instead of undoing the translation with a second call of ps_translate() the graphics context is saved before modifying the coordinate system and restored after drawing the rectangle.


Change Language


Follow Navioo On Twitter
ps_add_bookmark
ps_add_launchlink
ps_add_locallink
ps_add_note
ps_add_pdflink
ps_add_weblink
ps_arc
ps_arcn
ps_begin_page
ps_begin_pattern
ps_begin_template
ps_circle
ps_clip
ps_close_image
ps_close
ps_closepath_stroke
ps_closepath
ps_continue_text
ps_curveto
ps_delete
ps_end_page
ps_end_pattern
ps_end_template
ps_fill_stroke
ps_fill
ps_findfont
ps_get_buffer
ps_get_parameter
ps_get_value
ps_hyphenate
ps_include_file
ps_lineto
ps_makespotcolor
ps_moveto
ps_new
ps_open_file
ps_open_image_file
ps_open_image
ps_open_memory_image
ps_place_image
ps_rect
ps_restore
ps_rotate
ps_save
ps_scale
ps_set_border_color
ps_set_border_dash
ps_set_border_style
ps_set_info
ps_set_parameter
ps_set_text_pos
ps_set_value
ps_setcolor
ps_setdash
ps_setflat
ps_setfont
ps_setgray
ps_setlinecap
ps_setlinejoin
ps_setlinewidth
ps_setmiterlimit
ps_setoverprintmode
ps_setpolydash
ps_shading_pattern
ps_shading
ps_shfill
ps_show_boxed
ps_show_xy2
ps_show_xy
ps_show2
ps_show
ps_string_geometry
ps_stringwidth
ps_stroke
ps_symbol_name
ps_symbol_width
ps_symbol
ps_translate
eXTReMe Tracker