Raw content of Bio::Graphics::Glyph::diamond
package Bio::Graphics::Glyph::diamond;
# DAS-compatible package to use for drawing a colored diamond
use strict;
use vars '@ISA';
use Bio::Graphics::Glyph::generic;
@ISA = 'Bio::Graphics::Glyph::generic';
sub draw_component {
my $self = shift;
my $gd = shift;
my $fg = $self->fgcolor;
# find the center and vertices
my ($x1,$y1,$x2,$y2) = $self->calculate_boundaries(@_);
my $xmid = ($x1+$x2)/2;
my $ymid = ($y1+$y2)/2;
my $h = $self->option('height')/2;
$y1 = $ymid - $h;
$y2 = $ymid + $h;
# if it's a point-like feature, then draw symmetrically
# around the midpoing
if ($self->option('point') || $x2 - $x1 < $h*2) {
$x1 = $xmid - $h;
$x2 = $xmid + $h;
}
elsif ($self->option('fallback_to_rectangle')) {
return $self->SUPER::draw_component($gd,@_);
}
$gd->line($x1,$ymid,$xmid,$y1,$fg);
$gd->line($xmid,$y1,$x2,$ymid,$fg);
$gd->line($x2,$ymid,$xmid,$y2,$fg);
$gd->line($xmid,$y2,$x1,$ymid,$fg);
if (my $c = $self->bgcolor) {
$gd->fillToBorder($xmid,$ymid,$fg,$c);
}
}
1;
__END__
=head1 NAME
Bio::Graphics::Glyph::diamond - The "diamond" glyph
=head1 SYNOPSIS
See L and L.
=head1 DESCRIPTION
This glyph draws a diamond of fixed size, positioned in the center of
the feature. The height and width of the diamond are set by the
"height" option.
=head2 OPTIONS
The following options are standard among all Glyphs. See
L 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)
=head1 BUGS
If the feature is wider than a point, then the label and description
are placed where the feature's boundary is, and not where the diamond
is drawn.
=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
Lincoln Stein Elstein@cshl.orgE
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.
=cut