This glyph draws an arrowhead which is anchored at one or both ends
(has a vertical base) or has one or more arrowheads. The arrowheads
indicate that the feature does not end at the edge of the picture, but
continues. For example:
|-----------------------------| both ends in picture
<----------------------| left end off picture
|----------------------------> right end off picture
<------------------------------------> both ends off picture
You can also set the glyph so that the end is just truncated at the
end of the picture.
|-----------------------------
The following options are standard among all Glyphs. See
Bio::Graphics::Glyph for a full explanation.
Option Description Default
------ ----------- -------
-fgcolor Foreground color black
-outlinecolor Synonym for -fgcolor
-bgcolor Background color turquoise
-fillcolor Synonym for -bgcolor
-linewidth Line width 1
-height Height of glyph 10
-font Glyph font gdSmallFont
-connector Connector type 0 (false)
-connector_color
Connector color black
-label Whether to draw a label 0 (false)
-description Whether to draw a description 0 (false)
In addition to the standard options, this glyph recognizes the following:
Option Description Default
-tick draw a scale 0 (false)
-rel_coords use relative coordinates 0 (false)
for scale
-no_arrows don't draw an arrow when 0 (false)
glyph is partly offscreen
The argument for
-tick is an integer between 0 and 2 and has the same
interpretation as the
-tick option in Bio::Graphics::Glyph::arrow.
If
-rel_coords is set to a true value, then the scale drawn on the
glyph will be in relative (1-based) coordinates relative to the beginning
of the glyph.
None available.
sub arrowheads
{ my $self = shift;
my ($ne,$sw,$base_e,$base_w);
my ($x1,$y1,$x2,$y2) = $self->calculate_boundaries(@_);
my $gstart = $x1;
my $gend = $x2;
my $pstart = $self->panel->left;
my $pend = $self->panel->right-1;
if ($gstart <= $pstart) { $sw = 1;
}
if ($gend >= $pend) { $ne = 1;
}
return ($sw,$ne,!$sw,!$ne); } |
sub draw_label
{ my $self = shift;
my ($gd,$left,$top,$partno,$total_parts) = @_;
my $label = $self->label or return;
my $label_align = $self->option('label_align');
if ($label_align && ($label_align eq 'center' || $label_align eq 'right')) {
my $x = $self->left + $left;
my $font = $self->option('labelfont') || $self->font;
my $middle = $self->left + $left + ($self->right - $self->left) / 2; my $label_width = $font->width * length($label);
if ($label_align eq 'center') {
my $new_x = $middle - $label_width / 2; $x = $new_x if ($new_x > $x);;
}
else {
my $new_x = $left + $self->right - $label_width;
$x = $new_x if ($new_x > $x);
}
$x = $self->panel->left + 1 if $x <= $self->panel->left;
return if (!$self->option('bump') && ($label_width + $x) > $self->right);
$gd->string($font,
$x,
$self->top + $top,
$label,
$self->fontcolor);
}
else {
$self->SUPER::draw_label(@_);
} } |
Please report them.
Allen Day <day@cshl.org>.
Copyright (c) 2001 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.