GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Ace::Graphics::Glyph(3) User Contributed Perl Documentation Ace::Graphics::Glyph(3)

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.
$glyph = Ace::Graphics::Glyph->new(-feature=>$feature,-factory=>$factory)
Given a sequence feature, creates an Ace::Graphics::Glyph object to display it. The -feature argument points to the Ace::Sequence::Feature object to display. -factory indicates an Ace::Graphics::GlyphFactory object from which the glyph will fetch all its run-time configuration information.

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:

$factory = $glyph->factory
Get the Ace::Graphics::GlyphFactory associated with this object. This cannot be changed once it is set.
$feature = $glyph->feature
Get the sequence feature associated with this object. This cannot be changed once it is set.

Retrieving glyph options:

$fgcolor = $glyph->fgcolor
$bgcolor = $glyph->bgcolor
$fontcolor = $glyph->fontcolor
$fillcolor = $glyph->fillcolor
These methods return the configured foreground, background, font and fill colors for the glyph in the form of a GD::Image color index.
$width = $glyph->width
Return the maximum width allowed for the glyph. Most glyphs will be smaller than this.
$font = $glyph->font
Return the font for the glyph.
$option = $glyph->option($option)
Return the value of the indicated option.
$index = $glyph->color($color)
Given a symbolic or #RRGGBB-form color name, returns its GD index.

Retrieving information about the sequence:

$start = $glyph->start
$end = $glyph->end
These methods return the start and end of the glyph in base pair units.
$offset = $glyph->offset
Returns the offset of the segment (the base pair at the far left of the image).
$length = $glyph->length
Returns the length of the sequence segment.

Retrieving formatting information:

$top = $glyph->top
$left = $glyph->left
$bottom = $glyph->bottom
$right = $glyph->right
These methods return the top, left, bottom and right of the glyph in pixel coordinates.
$height = $glyph->height
Returns the height of the glyph. This may be somewhat larger or smaller than the height suggested by the GlyphFactory, depending on the type of the glyph.
$scale = $glyph->scale
Get the scale for the glyph in pixels/bp.
$height = $glyph->labelheight
Return the height of the label, if any.
$label = $glyph->label
Return a human-readable label for the glyph.

These methods are called by Ace::Graphics::Track during the layout process:

$glyph->move($dx,$dy)
Move the glyph in pixel coordinates by the indicated delta-x and delta-y values.
($x1,$y1,$x2,$y2) = $glyph->box
Return the current position of the glyph.

These methods are intended to be overridden in subclasses:

$glyph->calculate_height
Calculate the height of the glyph.
$glyph->calculate_left
Calculate the left side of the glyph.
$glyph->calculate_right
Calculate the right side of the glyph.
$glyph->draw($gd,$left,$top)
Optionally offset the glyph by the indicated amount and draw it onto the GD::Image object.
$glyph->draw_label($gd,$left,$top)
Draw the label for the glyph onto the provided GD::Image object, optionally offsetting by the amounts indicated in $left and $right.

These methods are useful utility routines:

$pixels = $glyph->map_pt($bases);
Map the indicated base position, given in base pair units, into pixels, using the current scale and glyph position.
$glyph->filled_box($gd,$x1,$y1,$x2,$y2)
Draw a filled rectangle with the appropriate foreground and fill colors, and pen width onto the GD::Image object given by $gd, using the provided rectangle coordinates.
$glyph->filled_oval($gd,$x1,$y1,$x2,$y2)
As above, but draws an oval inscribed on the rectangle.

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.

2001-09-17 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.