package Bio::Graphics::Glyph::pentagram; use strict; use base qw(Bio::Graphics::Glyph::generic); sub my_description { return <option('labelfont') || $self->font; my $pad = $font->height; if ($self->option('text')) { $pad *= 2; } return $pad; } sub default_text { return ''; } sub default_text_pad_x { return 0; } sub default_text_pad_y { return 3; } sub default_size { return 20; } sub draw_component { my $self = shift; my $gd = shift; my ($x1,$y1,$x2,$y2) = $self->calculate_boundaries(@_); my $fg = $self->fgcolor; my $bg = $self->bgcolor; my $size = defined $self->option('size') ? $self->option('size') : $self->default_size(); my $poly_pkg = $self->polygon_package; my $polygon = $poly_pkg->new(); if ($self->option('inverted') == 1) { $polygon->addPt($x1,$y2); $polygon->addPt($x1+$size/2,$y2-$size/2); $polygon->addPt($x1,$y2-$size); $polygon->addPt($x1+$size, $y2-$size); $polygon->addPt($x1+$size, $y2); } else { $polygon->addPt($x1,$y2); $polygon->addPt($x1,$y2-$size); $polygon->addPt($x1+$size/2,$y2-$size); $polygon->addPt($x1+$size, $y2-$size/2); $polygon->addPt($x1+$size/2, $y2); } $gd->filledPolygon($polygon, $bg); $gd->polygon($polygon,$fg); my $text = defined $self->option('text') ? $self->option('text') : $self->default_text(); if ($text) { my $text_pad_x = defined $self->option('text_pad_x') ? $self->option('text_pad_x') : $self->default_text_pad_x(); my $text_pad_y = defined $self->option('text_pad_y') ? $self->option('text_pad_y') : $self->default_text_pad_y(); my $font = $self->option('labelfont') || $self->font; $gd->string($font, $x1+$text_pad_x, $y2-$size-$text_pad_y-$font->height, $text, $fg); } } 1; __END__ =head1 NAME Bio::Graphics::Glyph::pentagram - The "pentagram" glyph =head1 SYNOPSIS See L and L. =head1 DESCRIPTION This glyph draws a pentagram with the sharp angle pointing right or,if the 'inverted' option is set to 1, an "inverted" pentagram (with the sharp angle pointing inwards, not outwards). There may be an optional text above the glyph. =head2 OPTIONS In addition to the common options, the following glyph-specific options are recognized: Option Description Default ------ ----------- ------- -size Width and height of the 20 glyph -text Text to show none -text_pad_x Number of pixels between 0 the left edge of the glyph and the start of text -text_pad_x Number of pixels between 3 the pentagram and the text =head1 BUGS Please report them. =head1 SEE ALSO L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L =head1 AUTHOR Vsevolod (Simon) Ilyushchenko Esimonf@cshl.eduE. Copyright (c) 2004 Cold Spring Harbor Laboratory This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See DISCLAIMER.txt for disclaimers of warranty. =cut