This glyph draws two arrows oriented towards each other and connected
by a line of a contrasting color. The length of the arrows is
immaterial, but the length of the glyph itself corresponds to the
length of the scaled feature.
In addition to the common options, the following glyph-specific
options are recognized:
Option Description Default
------ ----------- -------
-connect Whether to connect the true
two arrowheads by a line.
-connect_color The color to use for the bgcolor
connecting line.
None available.
sub draw
{ my $self = shift;
my $gd = shift;
my ($x1,$y1,$x2,$y2) = $self->calculate_boundaries(@_);
my $fg = $self->fgcolor;
my $a2 = HEIGHT/2; my $center = $y1 + $a2;
if ($x2-$x1 < HEIGHT*2) {
$gd->line($x1,$center,$x2,$center,$fg);
return;
}
my $trunc_left = $x1 < $self->panel->left;
my $trunc_right = $x2 > $self->panel->right;
unless ($trunc_left) {
$gd->line($x1,$center,$x1 + HEIGHT,$center,$fg);
$gd->line($x1 + HEIGHT,$center,$x1 + HEIGHT - $a2,$center-$a2,$fg);
$gd->line($x1 + HEIGHT,$center,$x1 + HEIGHT - $a2,$center+$a2,$fg);
}
unless ($trunc_right) {
$gd->line($x2,$center,$x2 - HEIGHT,$center,$fg);
$gd->line($x2 - HEIGHT,$center,$x2 - HEIGHT + $a2,$center+$a2,$fg);
$gd->line($x2 - HEIGHT,$center,$x2 - HEIGHT + $a2,$center-$a2,$fg);
}
if ($self->connect) {
my $c = $self->color('connect_color') || $self->bgcolor;
$gd->line($x1 + ($trunc_left ? 0 : HEIGHT + 2),$center,
$x2 - ($trunc_right ? 0 : HEIGHT + 2),$center,
$c);
}
$self->draw_label($gd,@_) if $self->option('label');
$self->draw_description($gd,@_) if $self->option('description'); } |
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.