org.biojava.bio.gui.sequence
Class HeadlessRenderContext

java.lang.Object
  extended byorg.biojava.bio.gui.sequence.HeadlessRenderContext
All Implemented Interfaces:
SequenceRenderContext, javax.swing.SwingConstants

public class HeadlessRenderContext
extends java.lang.Object
implements SequenceRenderContext

A stand-alone SequenceRenderContext to make it easy to render to an image.

This class makes it very easy to render sequence information into an arbitrary graphics object without the need to fuss about with AWT or Swing components. You chose the width of the image and the region of the sequence to render. It will calculate the scale factor to ensure that the whole region of the sequence fits into that width. You can then use the context to render any number of SequenceRenderer instances to any Graphics2D instance you want, for example, to an image that's to be written out by a servlet.

Example

 HeadlessRenderContext ctxt = new HeadlessRenderContext(
   seq,   // the sequence to render
   range, // a RangeLocation giving the block you want to render
   width  // an int specifying the image width in pixles
 );

 BufferedImage img = new BufferedImage(
   width,                                   // image width
   (int) Math.ceil(seqRend.getDepth(ctxt),  // calculated height
   BufferedImage.TYPE_INT_RGB               // let's use RGB
 );

 // set stuff up
 Graphics2D graph = img.createGraphics();
 graph.setPaint(Color.WHITE);
 graph.fillRect(0, 0, img.getWidth(), img.getHeight());

 // and now render the sequences
 sequenceRenderer.paint(graph, ctxt);

 // let's dump this out as a png
 ImageIO.write(image, "png", myFile);
 

Since:
1.3
Author:
Matthew Pocock

Nested Class Summary
 
Nested classes inherited from class org.biojava.bio.gui.sequence.SequenceRenderContext
SequenceRenderContext.Border
 
Field Summary
 
Fields inherited from interface org.biojava.bio.gui.sequence.SequenceRenderContext
LAYOUT, REPAINT
 
Fields inherited from interface javax.swing.SwingConstants
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
 
Constructor Summary
HeadlessRenderContext(Sequence seq, RangeLocation range, int width)
           
 
Method Summary
 int getDirection()
          Gets the direction in which this context expects sequences to be rendered - HORIZONTAL or VERTICAL.
 FeatureHolder getFeatures()
          The features to render.
 java.awt.Font getFont()
          Gets the Font attribute of the SequenceRenderContext object
 SequenceRenderContext.Border getLeadingBorder()
          Gets the LeadingBorder attribute of the SequenceRenderContext object.
 RangeLocation getRange()
          The range of the SymbolList to render.
 double getScale()
          Gets the scale as pixels per Symbol
 SymbolList getSymbols()
          The SymbolList that is currently rendered by this SequenceRenderContext.
 SequenceRenderContext.Border getTrailingBorder()
          Gets the TrailingBorder attribute of the SequenceRenderContext object.
 int graphicsToSequence(double d)
          Converts a graphical position into a sequence coordinate.
 int graphicsToSequence(java.awt.Point point)
          Converts a graphical position into a sequence coordinate.
 double sequenceToGraphics(int i)
          Converts a sequence index into a graphical coordinate.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

HeadlessRenderContext

public HeadlessRenderContext(Sequence seq,
                             RangeLocation range,
                             int width)
Method Detail

getDirection

public int getDirection()
Description copied from interface: SequenceRenderContext
Gets the direction in which this context expects sequences to be rendered - HORIZONTAL or VERTICAL.

Specified by:
getDirection in interface SequenceRenderContext
Returns:
The Direction value

getFeatures

public FeatureHolder getFeatures()
Description copied from interface: SequenceRenderContext
The features to render.

Specified by:
getFeatures in interface SequenceRenderContext
Returns:
a FeatureHolder with the Features to render

getFont

public java.awt.Font getFont()
Description copied from interface: SequenceRenderContext
Gets the Font attribute of the SequenceRenderContext object

Specified by:
getFont in interface SequenceRenderContext
Returns:
The Font value

getLeadingBorder

public SequenceRenderContext.Border getLeadingBorder()
Description copied from interface: SequenceRenderContext
Gets the LeadingBorder attribute of the SequenceRenderContext object. This represents the space between the beginning of the rendering area and the beginning of the sequence.

Specified by:
getLeadingBorder in interface SequenceRenderContext
Returns:
The LeadingBorder value

getRange

public RangeLocation getRange()
Description copied from interface: SequenceRenderContext
The range of the SymbolList to render.

Specified by:
getRange in interface SequenceRenderContext
Returns:
the RangeLocation specifying which indices (inclusive) to render

getScale

public double getScale()
Description copied from interface: SequenceRenderContext
Gets the scale as pixels per Symbol

Specified by:
getScale in interface SequenceRenderContext
Returns:
The scale value

getSymbols

public SymbolList getSymbols()
Description copied from interface: SequenceRenderContext
The SymbolList that is currently rendered by this SequenceRenderContext.

Specified by:
getSymbols in interface SequenceRenderContext
Returns:
The Sequence value

getTrailingBorder

public SequenceRenderContext.Border getTrailingBorder()
Description copied from interface: SequenceRenderContext
Gets the TrailingBorder attribute of the SequenceRenderContext object. This represents the space between the end of the sequence and the end of the rendering area.

Specified by:
getTrailingBorder in interface SequenceRenderContext
Returns:
The TrailingBorder value

sequenceToGraphics

public double sequenceToGraphics(int i)
Description copied from interface: SequenceRenderContext
Converts a sequence index into a graphical coordinate. You will need to use this in conjunction with getDirection to correctly lay graphics out.

Specified by:
sequenceToGraphics in interface SequenceRenderContext
Parameters:
i - Index within the sequence
Returns:
Equivalent graphical position in pixels

graphicsToSequence

public int graphicsToSequence(java.awt.Point point)
Description copied from interface: SequenceRenderContext
Converts a graphical position into a sequence coordinate. This will use getDirection to decide whether to use the x or y coordinate.

Specified by:
graphicsToSequence in interface SequenceRenderContext
Parameters:
point - a point representing the position
Returns:
the corresponding sequence index

graphicsToSequence

public int graphicsToSequence(double d)
Description copied from interface: SequenceRenderContext
Converts a graphical position into a sequence coordinate. You will need to have used getDirection to decide whether to use the x or y coordinate.

Specified by:
graphicsToSequence in interface SequenceRenderContext
Parameters:
d - A pixel position
Returns:
The corresponding sequence index