The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
use strict;
use GD;
use GD::Text::Wrap;

my $outfile = shift || "GDWrap.png";

my $gd = GD::Image->new(400,240);
my $white = $gd->colorAllocate(255,255,255);
my $black = $gd->colorAllocate(  0,  0,  0);
my $blue  = $gd->colorAllocate(127,127,255);
my $red   = $gd->colorAllocate(127,  0,  0);

#print "No colours: $black ", $gd->colorsTotal, "\n";

my $text = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit, 
sed diam 

nonummy nibh euismod 
tincidunt ut laoreet dolore magna aliquam erat volutpat.';

my $wp = GD::Text::Wrap->new($gd,
    width       => 180,
    line_space  => 4,
    color       => $black,
    text        => $text,
);

$wp->set(align => 'left');
$gd->rectangle($wp->get_bounds(10,10), $blue);
$wp->draw(10,10);

$gd->rectangle($wp->get_bounds(210,10), $blue);
$wp->set(para_space => 5, preserve_nl => 1);
$wp->set_font('Dustismo_Sans', 10);
$wp->set(align => 'justified', line_space => 0);
$wp->draw(210,10);

$wp->set(para_space => 10, preserve_nl => 0);
# Assume the user has set FONT_PATH or TTF_FONT_PATH
#$wp->font_path('/usr/share/fonts/ttfonts');
$wp->set_font(['arial', 'Dustismo_Sans'], 10);
$wp->set(align => 'right');
$gd->rectangle($wp->get_bounds(10,120), $blue);
$wp->draw(10,120);

$text =~ tr/\n//d;
$wp->set(text => $text);
$wp->set(colour => $white, align => 'center', line_space => 2);
$wp->set_font(gdMediumBoldFont, 12);
$gd->filledRectangle($wp->get_bounds(210,120), $red);
$wp->draw(210,120);

print "Writing $outfile\n";

open(GD, ">$outfile") or die "Cannot open '$outfile' for write: $!";
binmode GD ;
print GD $gd->png();
close GD;