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(90);
$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.
PREREQUISITES
This module requires PostScript::Simple
, strict
, Carp
and Exporter
.
EXPORT
None.
CONSTRUCTOR
new(options)
-
Create a new PostScript::Simple::EPS object. The options that can be set are:
- file
-
EPS file to be included. This must exist when the
new
method 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
importeps
andimportepsfile
are described in the documentation ofPostScript::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.
get_bbox
-
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();
scale(x, y)
-
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 size
rotate(deg)
-
Rotates the EPS file by
deg
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(180); # turn upside-down
To rotate 30 degrees about point (50,50):
$eps->translate(50, 50); $eps->rotate(30); $eps->translate(-50, -50);
translate(x, y)
-
Move the EPS file by
x
,y
PostScript points.Example:
$eps->translate(10, 10); # move 10 points in both directions
reset
-
Clear all translate, rotate and scale operations.
Example:
$eps->reset();
load
-
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
preload
. preload(object)
-
Experimental: defines the EPS at in the document prolog, and just runs a command to insert it each time it is used.
object
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
load
.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.