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 and importepsfile are described in the documentation of PostScript::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.

SEE ALSO

PostScript::Simple