|
NAMEAce::Graphics::Glyph - Base class for Ace::Graphics::Glyph objectsSYNOPSISSee Ace::Graphics::Panel.DESCRIPTIONAce::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. METHODSThis section describes the class and object methods for Ace::Graphics::Glyph.CONSTRUCTORSAce::Graphics::Glyph objects are constructed automatically by an Ace::Graphics::GlyphFactory, and are not usually created by end-developer code.
OBJECT METHODSOnce 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:
OPTIONSThe 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. SUBCLASSING Ace::Graphics::GlyphBy 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. BUGSPlease report them.SEE ALSOAce::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,AUTHORLincoln 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.
Visit the GSP FreeBSD Man Page Interface. |