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.