| Bio-Graphics documentation | Contained in the Bio-Graphics distribution. |
Bio::Graphics::Glyph::dot - The "dot" glyph
See L<Bio::Graphics::Panel> and L<Bio::Graphics::Glyph>.
This glyph draws an ellipse the width of the scaled feature passed, and height a possibly configured height (See Bio::Graphics::Glyph).
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)
-hilite Highlight color undef (no color)
In addition to the common options, the following glyph-specific options are recognized:
Option Description Default
------ ----------- -------
-point Whether to draw an ellipse feature width
the scaled width of the
feature or with radius
point.
Please report them.
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
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.
| Bio-Graphics documentation | Contained in the Bio-Graphics distribution. |
package Bio::Graphics::Glyph::dot; # DAS-compatible package to use for drawing a ring or filled circle use strict; use base qw(Bio::Graphics::Glyph::generic); use constant PI => 3.14159; sub my_description { return <<END; This glyph draws an ellipse the width of the scaled feature passed, and height a possibly configured height (See Bio::Graphics::Glyph). END } sub my_options { { point => [ 'boolean', undef, 'If true, draws a fixed-radius ellipse at the center of the feature,', 'regardless of the feature\'s length.'], } } sub draw { my $self = shift; my $gd = shift; my $fg = $self->fgcolor; # now draw a circle my ($left,$top) = @_; my ($x1,$y1,$x2,$y2) = $self->calculate_boundaries(@_); my $xmid = (($x1+$x2)/2); my $width = abs($x2-$x1); my $ymid = (($y1+$y2)/2); my $height = abs($y2-$y1); # only point ovals allowed now my $r = $self->height; # Code to maintain compliancy with gd 1.8.4 # gd 1.8.4 does not support the ellipse() or filledEllipse() methods. # Let's maintain the filledEllipse approach for installations # using gd2 or for drawing images with GD::SVG # Otherwise, we will use fill as before. # The can() method fails with GD::SVG. Why? my $bg = $self->bgcolor; if ($gd->can('filledEllipse') || $gd =~ /SVG/ ) { $gd->filledEllipse($xmid,$ymid,$r,$r,$bg) if ($bg); # Draw the border (or unfilled ellipse) $gd->ellipse($xmid,$ymid,$r,$r,$fg); } else { # Let's draw a circle in the gd 1.8.4 manner $gd->arc($xmid,$ymid,$r,$r,0,360,$fg); $gd->fillToBorder($xmid,$ymid,$fg,$bg) if ($bg); } #how about a fuse for the bomb? #work in degrees, not radians. So we define PI above if(defined $self->option('stem')){ my $angle = $self->option('stem'); $gd->line($xmid+($r/PI*sin($angle*PI/180)), $ymid+($r/PI*cos($angle*PI/180)), $xmid+($r*sin($angle*PI/180)), $ymid+($r*cos($angle*PI/180)),$fg); } $self->draw_label($gd,@_) if $self->option('label'); } 1; __END__