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;
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 ...
Get Programming Web Graphics with Perl and GNU Softwar now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.