man PostScript::Simple::EPS () - EPS support for PostScript::Simple
NAME
PostScript::Simple::EPS - EPS support for PostScript::Simple
SYNOPSIS
use PostScript::Simple;
# create a new PostScript object $p = new PostScript::Simple(papersize => "A4", colour => 1, units => "in");
# create a new page $p->newpage;
# add an eps file $p->add_eps({xsize => 3}, "test.eps", 1,1); $p->add_eps({yscale => 1.1, xscale => 1.8}, "test.eps", 4,8);
# create an eps object $e = new PostScript::Simple::EPS(file => "test.eps"); $e->rotate(9); $e->xscale(0.5); $p->add_eps($e, 3, 3); # add eps object to postscript object $e->xscale(2); $p->add_eps($e, 2, 5); # add eps object to postscript object again
# write the output to a file $p->output("file.ps");
DESCRIPTION
PostScript::Simple::EPS allows you to add EPS files into PostScript::Simple objects. Included EPS files can be scaled and rotated, and placed anywhere inside a PostScript::Simple page.
Remember when using translate/scale/rotate that you will normally need to do the operations in the reverse order to that which you expect.
PREREQUISITES
This module requires CWPostScript::Simple, CWstrict, CWCarp and CWExporter.
EXPORT
None.
CONSTRUCTOR
Create a new PostScript::Simple::EPS object. The options that can be set are:
- file
- EPS file to be included. This or CWsource must exist when the CWnew method is called.
- source
- PostScript code for the EPS document. Either this or CWfile must be set when CWnew is called.
- clip
-
Set to 0 to disable clipping to the EPS bounding box. Default is to clip.
Example:
$ps = new PostScript::Simple(landscape => 1, eps => 0, xsize => 4, ysize => 3, units => "in");
$eps = new PostScript::Simple::EPS(file => "test.eps");
$eps->scale(0.5);
Scale the EPS file by x0.5 in both directions.$ps->newpage(); $ps->importeps($eps, 1, 1);
Add the EPS file to the PostScript document at coords (1,1).$ps->importepsfile("another.eps", 1, 2, 4, 4);
Easily add an EPS file to the PostScript document using bounding box (1,2),(4,4). The methods CWimporteps and CWimportepsfile are described in the documentation of CWPostScript::Simple.
OBJECT METHODS
All object methods return 1 for success or 0 in some error condition (e.g. insufficient arguments). Error message text is also drawn on the page. Returns the EPS bounding box, as specified on the %%BoundingBox line of the EPS file. Units are standard PostScript points. Example:
($x1, $y1, $x2, $y2) = $eps->get_bbox();Returns the EPS width. Example:
print "EPS width is " . abs($eps->width()) . "\n";Returns the EPS height. Example: To scale CW$eps to 72 points high, do:
$eps->scale(1, 72/$eps->height());Scales the EPS file. To scale in one direction only, specify 1 as the other scale. To scale the EPS file the same in both directions, you may use the shortcut of just specifying the one value. Example:
$eps->scale(1.2, 0.8); # make wider and shorter $eps->scale(0.5); # shrink to half sizeRotates the EPS file by CWdeg degrees anti-clockwise. The EPS file is rotated about it's own origin (as defined by it's bounding box). To rotate by a particular co-ordinate (again, relative to the EPS file, not the main PostScript document), use translate, too. Example:
$eps->rotate(1); # turn upside-downTo rotate 30 degrees about point (50,50):
$eps->translate(50, 50); $eps->rotate(3); $eps->translate(-50, -50);Move the EPS file by CWx,CWy PostScript points. Example:
$eps->translate(10, 10); # move 10 points in both directionsClear all translate, rotate and scale operations. Example:
$eps->reset();Reads the EPS file into memory, to save reading it from file each time if inserted many times into a document. Can not be used with CWpreload. Experimental: defines the EPS at in the document prolog, and just runs a command to insert it each time it is used. CWobject is a PostScript::Simple object. If the EPS file is included more than once in the PostScript file then this will probably shrink the filesize quite a lot. Can not be used at the same time as CWload, or when using EPS objects defined from PostScript source. Example:
$p = new PostScript::Simple(); $e = new PostScript::Simple::EPS(file => "test.eps"); $e->preload($p);
BUGS
This is software in development; some current functionality may not be as expected, and/or may not work correctly.
AUTHOR
The PostScript::Simple::EPS module was written by Matthew Newton, after prods for such a feature from several people around the world. A useful importeps function that provides scaling and aspect ratio operations was gratefully received from Glen Harris, and merged into this module.
SEE ALSO
PostScript::Simple