Bio::Graphics::Glyph triangle
SummaryIncluded librariesPackage variablesSynopsisDescriptionGeneral documentationMethods
Toolbar
WebCvsRaw content
Summary
Bio::Graphics::Glyph::triangle - The "triangle" glyph
Package variables
No package variables defined.
Included modules
Bio::Graphics::Glyph::generic
Inherit
Bio::Graphics::Glyph::generic
Synopsis
  See Bio::Graphics::Panel and Bio::Graphics::Glyph.
Description
This glyph draws an equilateral triangle when -point is defined.
It draws an isoceles triangle otherwise. It is possible to draw
the triangle with the base on the N, S, E, or W side. In addition to the common options, the following glyph-specific
options are recognized:
  Option      Description                  Default
------ ----------- -------
-point If true, the triangle 0 will drawn at the center of the range, and not scaled to the feature width. -orient On which side shall the S base be? (NSEW)
Methods
draw_component
No description
Code
pad_left
No description
Code
pad_right
No description
Code
Methods description
None available.
Methods code
draw_componentdescriptionprevnextTop
sub draw_component {
  my $self = shift;
  my $gd = shift;
  my $fg = $self->fgcolor;
  my $orient = $self->option('orient') || 'S';

  # find the center and vertices
my ($x1,$y1,$x2,$y2) = $self->calculate_boundaries(@_); my $xmid = ($x1+$x2)/2;
my $ymid = ($y1+$y2)/2;
my ($vx1,$vy1,$vx2,$vy2,$vx3,$vy3); #make an equilateral
my ($p,$q) = ($self->option('height'),($x2-$x1)/2);
if ($self->option('point')){ $q = $p/sqrt(3); #2;
$x1 = $xmid - $q; $x2 = $xmid + $q; $y1 = $ymid - $q; $y2 = $ymid + $q; } if ($orient eq 'S'){$vx1=$x1;$vy1=$y1;$vx2=$x2;$vy2=$y1;$vx3=$xmid;$vy3=$y2;} elsif($orient eq 'N'){$vx1=$x1;$vy1=$y2;$vx2=$x2;$vy2=$y2;$vx3=$xmid;$vy3=$y1;} elsif($orient eq 'W'){$vx1=$x2;$vy1=$y1;$vx2=$x2;$vy2=$y2;$vx3=$x2-$p;$vy3=$ymid;} elsif($orient eq 'E'){$vx1=$x1;$vy1=$y1;$vx2=$x1;$vy2=$y2;$vx3=$x1+$p;$vy3=$ymid;} # now draw the triangle
$gd->line($vx1,$vy1,$vx2,$vy2,$fg); $gd->line($vx2,$vy2,$vx3,$vy3,$fg); $gd->line($vx3,$vy3,$vx1,$vy1,$fg); if (my $c = $self->bgcolor){ $gd->fillToBorder($xmid,$ymid,$fg,$c) if $orient eq 'S' || $orient eq 'N'; $gd->fillToBorder($x1+1,$ymid,$fg,$c) if $orient eq 'E'; $gd->fillToBorder($x2-1,$ymid,$fg,$c) if $orient eq 'W'; } } 1; __END__
}
pad_leftdescriptionprevnextTop
sub pad_left {
  my $self = shift;
  my $left = $self->SUPER::pad_left;
  return $left unless $self->option('point');
  my $extra = $self->option('height')/3;
return $extra > $left ? $extra : $left;
}
pad_rightdescriptionprevnextTop
sub pad_right {
  my $self = shift;
  my $right = $self->SUPER::pad_right;
  return $right unless $self->option('point');
  my $extra = $self->option('height')/3;
return $extra > $right ? $extra : $right;
}
General documentation
BUGSTop
Please report them.
SEE ALSOTop
Bio::Graphics::Panel,
Bio::Graphics::Glyph,
Bio::Graphics::Glyph::arrow,
Bio::Graphics::Glyph::cds,
Bio::Graphics::Glyph::crossbox,
Bio::Graphics::Glyph::diamond,
Bio::Graphics::Glyph::dna,
Bio::Graphics::Glyph::dot,
Bio::Graphics::Glyph::ellipse,
Bio::Graphics::Glyph::extending_arrow,
Bio::Graphics::Glyph::generic,
Bio::Graphics::Glyph::graded_segments,
Bio::Graphics::Glyph::heterogeneous_segments,
Bio::Graphics::Glyph::line,
Bio::Graphics::Glyph::pinsertion,
Bio::Graphics::Glyph::primers,
Bio::Graphics::Glyph::rndrect,
Bio::Graphics::Glyph::segments,
Bio::Graphics::Glyph::ruler_arrow,
Bio::Graphics::Glyph::toomany,
Bio::Graphics::Glyph::transcript,
Bio::Graphics::Glyph::transcript2,
Bio::Graphics::Glyph::translation,
Bio::Graphics::Glyph::triangle,
Bio::DB::GFF,
Bio::SeqI,
Bio::SeqFeatureI,
Bio::Das,
GD
AUTHORTop
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.