package PDF::FromHTML::Template::Element::Circle;
use strict;
BEGIN {
use vars qw(@ISA);
@ISA = qw(PDF::FromHTML::Template::Element);
use PDF::FromHTML::Template::Element;
}
sub new
{
my $class = shift;
my $self = $class->SUPER::new(@_);
# warn 'Warning: missing required attribute R' unless exists $self->{R};
return $self;
}
sub render
{
my $self = shift;
my ($context) = @_;
return 0 unless $self->should_render($context);
return 1 if $context->{CALC_LAST_PAGE};
my ($x, $y, $r) = map { $context->get($self, $_) } qw(X Y R);
return 1 unless defined $r;
my $p = $context->{PDF};
$p->save_state;
$self->set_color($context, 'COLOR', 'stroke');
my $fillcolor = $context->get($self, 'FILLCOLOR');
$self->set_color($context, 'FILLCOLOR', 'fill');
my $width = $context->get($self, 'WIDTH') || 1;
$p->linewidth($width);
$p->circle($x, $y, $r);
if (defined $fillcolor)
{
$p->fill_stroke;
}
else
{
$p->stroke;
}
$p->restore_state;
return 1;
}
sub deltas
{
my $self = shift;
my ($context) = @_;
# my ($x, $y, $r) = map { $context->get($self, $_) } qw(X Y R);
my ($x, $y) = map { $context->get($self, $_) } qw(X Y);
#GGG Have $r involved here?
return {
X => $x - $context->{X},
Y => $y - $context->{Y},
};
}
1;
__END__
=head1 NAME
PDF::FromHTML::Template::Element::Circle
=head1 PURPOSE
To draw a circle.
=head1 NODE NAME
CIRCLE
=head1 INHERITANCE
PDF::FromHTML::Template::Element
=head1 ATTRIBUTES
=over 4
=item * R
This is the radius of the circle to be drawn
=item * COLOR
This is the color the circle should be drawn in. Defaults to black.
=item * FILLCOLOR
This is the color the circle should be filled in with. Defaults to none.
=item * WIDTH
This is the width of the line used to draw the circle. Defaults to 1 pixel.
=back
=head1 CHILDREN
None
=head1 AFFECTS
Nothing
=head1 DEPENDENCIES
None
=head1 USAGE
This will cause a 1-inch radius circle to be drawn at the current position in
red.
=head1 AUTHOR
Rob Kinyon (rkinyon@columbus.rr.com)
=head1 SEE ALSO
=cut