Ace::Graphics::Glyph(3pm) | User Contributed Perl Documentation | Ace::Graphics::Glyph(3pm) |
Ace::Graphics::Glyph - Base class for Ace::Graphics::Glyph objects
See Ace::Graphics::Panel.
Ace::Graphics::Glyph is the base class for all glyph objects. Each glyph is a wrapper around an Ace::Sequence::Feature object, knows how to render itself on an Ace::Graphics::Panel, and has a variety of configuration variables.
End developers will not ordinarily work directly with Ace::Graphics::Glyph, but may want to subclass it for customized displays.
This section describes the class and object methods for Ace::Graphics::Glyph.
Ace::Graphics::Glyph objects are constructed automatically by an Ace::Graphics::GlyphFactory, and are not usually created by end-developer code.
A standard set of options are recognized. See OPTIONS.
Once a glyph is created, it responds to a large number of methods. In this section, these methods are grouped into related categories.
Retrieving glyph context:
Retrieving glyph options:
Retrieving information about the sequence:
Retrieving formatting information:
These methods are called by Ace::Graphics::Track during the layout process:
These methods are intended to be overridden in subclasses:
These methods are useful utility routines:
The following options are standard among all Glyphs. See individual glyph pages for more options.
Option Description Default ------ ----------- ------- -fgcolor Foreground color black -outlinecolor black Synonym for -fgcolor -bgcolor Background color white -fillcolor Interior color of filled turquoise images -linewidth Width of lines drawn by 1 glyph -height Height of glyph 10 -font Glyph font gdSmallFont -label Whether to draw a label false
You may pass an anonymous subroutine to -label, in which case the subroutine will be invoked with the feature as its single argument. The subroutine must return a string to render as the label.
By convention, subclasses are all lower-case. Begin each subclass with a preamble like this one:
package Ace::Graphics::Glyph::crossbox; use strict; use vars '@ISA'; @ISA = 'Ace::Graphics::Glyph';
Then override the methods you need to. Typically, just the draw() method will need to be overridden. However, if you need additional room in the glyph, you may override calculate_height(), calculate_left() and calculate_right(). Do not directly override height(), left() and right(), as their purpose is to cache the values returned by their calculating cousins in order to avoid time-consuming recalculation.
A simple draw() method looks like this:
sub draw { my $self = shift; $self->SUPER::draw(@_); my $gd = shift; # and draw a cross through the box my ($x1,$y1,$x2,$y2) = $self->calculate_boundaries(@_); my $fg = $self->fgcolor; $gd->line($x1,$y1,$x2,$y2,$fg); $gd->line($x1,$y2,$x2,$y1,$fg); }
This subclass draws a simple box with two lines criss-crossed through it. We first call our inherited draw() method to generate the filled box and label. We then call calculate_boundaries() to return the coordinates of the glyph, disregarding any extra space taken by labels. We call fgcolor() to return the desired foreground color, and then call $gd->line() twice to generate the criss-cross.
For more complex draw() methods, see Ace::Graphics::Glyph::transcript and Ace::Graphics::Glyph::segments.
Please report them.
Ace::Sequence, Ace::Sequence::Feature, Ace::Graphics::Panel, Ace::Graphics::Track, Ace::Graphics::Glyph::anchored_arrow, Ace::Graphics::Glyph::arrow, Ace::Graphics::Glyph::box, Ace::Graphics::Glyph::primers, Ace::Graphics::Glyph::segments, Ace::Graphics::Glyph::toomany, Ace::Graphics::Glyph::transcript,
Lincoln Stein <lstein@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.
2022-10-19 | perl v5.36.0 |