package Chart::Clicker::Positioned; use Moose::Role; use Moose::Util::TypeConstraints; enum 'Chart::Clicker::Position' => qw(left right top bottom); has 'position' => ( is => 'rw', isa => 'Chart::Clicker::Position' ); sub is_left { my ($self) = @_; return $self->position eq 'left'; } sub is_right { my ($self) = @_; return $self->position eq 'right'; } sub is_top { my ($self) = @_; return $self->position eq 'top'; } sub is_bottom { my ($self) = @_; return $self->position eq 'bottom'; } no Moose; 1; __END__ =head1 NAME Chart::Clicker::Positioned - Role for components that care about position. =head1 SYNOPSIS Some components draw differently depending on which 'side' they are positioned. If an Axis is on the left, it will put the numbers left and the bar on the right. If positioned on the other side then those two piece are reversed. package My::Component; extends 'Chart::Clicker::Drawing::Component'; with 'Chart::Clicker::Positioned'; 1; =head1 METHODS =head2 is_bottom Returns true if the component is positioned bottom. =head2 is_left Returns true if the component is positioned left. =head2 is_right Returns true if the component is positioned right. =head2 is_top Returns true if the component is positioned top. =head2 position The 'side' on which this component is positioned. =head1 AUTHOR Cory G Watson =head1 SEE ALSO perl(1) =head1 LICENSE You can redistribute and/or modify this code under the same terms as Perl itself.