/usr/local/CPAN/Authen-PluggableCaptcha/Authen/PluggableCaptcha/Render/Image/Imager/layers/text.pm
#!/usr/bin/perl
#
# Authen::PluggableCaptcha::Render::Image::Imager::layers::text
#
######################################################
use strict;
package Authen::PluggableCaptcha::Render::Image::Imager::layers::text;
use vars qw(@ISA $VERSION);
$VERSION= '0.01';
use Authen::PluggableCaptcha::Render::Image::Imager::layers ();
our @ISA= qw( Authen::PluggableCaptcha::Render::Image::Imager::layers );
######################################################
use Imager ();
use Imager::Color ();
######################################################
# constructor
sub new {
my ( $proto , %kw_args )= @_;
my $class= ref($proto) || $proto;
my $self= bless ( {} , $class );
# shared init
$self->_init_layer( \%kw_args );
# specific init
$self->{'render_text'}= $kw_args{'render_text'} || undef;
$self->{'font_size'}= $kw_args{'font_size'} || undef;
$self->{'font_filename'}= $kw_args{'font_filename'} || undef;
# make sure we have required items for this layer
foreach ( qw( color_fg font_filename font_size render_text image ) ) {
if ( !exists $self->{$_} ) {
die "Missing required element for layer 'text' : $_";
}
}
return $self;
}
sub render {
my ( $self )= @_;
my $color= Imager::Color->new( $self->{'color_fg'} ) or die "Color Error";
my $font= Imager::Font->new(
file=> $self->{'font_filename'}
) or die ('Cannot load ' . $self->{'font_filename'} . ' : ' . Imager->errstr );
$font->align(
string=> $self->{'render_text'},
size=> $self->{'font_size'},
color=> $color,
'x'=> $self->{'image'}->getwidth/2,
'y'=> $self->{'image'}->getheight/2,
halign=> 'center',
valign=> 'center',
image=> $self->{'image'},
);
}
###
1;