package Chart::Clicker::Decoration::Legend; { $Chart::Clicker::Decoration::Legend::VERSION = '2.76'; } use Moose; extends 'Chart::Clicker::Container'; with 'Graphics::Primitive::Oriented'; # ABSTRACT: Series name, color key use Graphics::Primitive::Font; use Graphics::Primitive::Insets; use Graphics::Primitive::TextBox; use Layout::Manager::Flow; has '+border' => ( default => sub { my $b = Graphics::Primitive::Border->new; $b->color(Graphics::Color::RGB->new( red => 0, green => 0, blue => 0)); $b->width(1); return $b; } ); has 'font' => ( is => 'rw', isa => 'Graphics::Primitive::Font', default => sub { Graphics::Primitive::Font->new } ); has 'item_padding' => ( is => 'rw', isa => 'Graphics::Primitive::Insets', default => sub { Graphics::Primitive::Insets->new({ top => 3, left => 3, bottom => 3, right => 5 }) } ); has '+layout_manager' => ( default => sub { Layout::Manager::Flow->new(anchor => 'west', wrap => 1) }, lazy => 1 ); override('prepare', sub { my ($self, $driver) = @_; return if $self->component_count > 0; my $ca = $self->clicker->color_allocator; my $font = $self->font; my $ii = $self->item_padding; if($self->is_vertical) { # This assumes you aren't changing the layout manager... $self->layout_manager->anchor('north'); } my $count = 0; foreach my $ds (@{ $self->clicker->datasets }) { foreach my $s (@{ $ds->series }) { unless($s->has_name) { $s->name("Series $count"); } my $tb = Graphics::Primitive::TextBox->new( color => $ca->next, font => $font, padding => $ii, text => $s->name ); $self->add_component($tb); $count++; } } super; $ca->reset; }); __PACKAGE__->meta->make_immutable; no Moose; 1; __END__ =pod =head1 NAME Chart::Clicker::Decoration::Legend - Series name, color key =head1 VERSION version 2.76 =head1 DESCRIPTION Chart::Clicker::Decoration::Legend draws a legend on a Chart. =head1 ATTRIBUTES =head2 border Set/Get this Legend's border. =head2 font Set/Get the font used for this legend's items. =head2 insets Set/Get this Legend's insets. =head2 item_padding Set/Get the padding for this legend's items. =head2 layout_manager Set/Get the layout manager for this lagend. Defaults to L with an anchor of C and a C of 1. =head1 AUTHOR Cory G Watson =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 by Cold Hard Code, LLC. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut