O'Reilly logo

Programming Web Graphics with Perl and GNU Softwar by Shawn Wallace

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

The PostScript::Elements Module

Finally, we will need to incorporate some sort of support for drawing vector graphics in the form of lines, arcs, and boxes. This will be the job of the PostScript::Elements module. It provides routines to draw any of these three shapes, and can be easily extended to encapsulate other shapes or more complex forms. The methods allow you to control the width of the line, the tint of the line (a percentage of gray), and a tint with which to fill the shape (a percentage of gray or transparent). The Elements module can be used as in this example, which will draw a random number of arbitrary lines, boxes, and arcs (see Figure 11.6):

#!/usr/bin/perl -w
# Generate a random collection of lines, boxes, arcs
#
use strict;
use PostScript::Elements;

my $e = new PostScript::Elements;

my $r = rand(25);
for (my $i=0; $i<= $r; $i++) { 
    $e->addArc(points  => [rand(612), rand(792), 
                           rand(200), rand(360), rand(360)],
               linewidth => rand(8) );
    $e->addBox(points  => [rand(612), rand(792), rand(200), rand(200)],
               linewidth => rand(8) );
    $e->addLine(points => [rand(612), rand(792), rand(200), rand(200)],
               linewidth => rand(8) );
}

open OUT, ">example.ps" or die "Couldn't open example.ps: $!";
print OUT $e->Write();
close OUT;
The PostScript::Elements module offers an abstract interface for representing arcs, lines, and boxes that may be strung together to form complex objects

Figure 11-6. The PostScript::Elements module offers an abstract interface for representing arcs, lines, and boxes that may be strung together to form complex ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required