
org.biojava.bio.gui.sequence.LabelRenderer Maven / Gradle / Ivy
/*
* BioJava development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. If you do not have a copy,
* see:
*
* http://www.gnu.org/copyleft/lesser.html
*
* Copyright for this code is held jointly by the individual
* authors. These should be listed in @author doc comments.
*
* For more information on the BioJava project and its aims,
* or to join the biojava-l mailing list, visit the home page
* at:
*
* http://www.biojava.org/
*
*/
package org.biojava.bio.gui.sequence;
import java.awt.Graphics2D;
/**
* The interface for things that can render labels for a line of information
* about a sequence.
*
* Renderers are always activated within the context of a particular
* SequenceRenderContext.
* A single LabelRenderer can be shared among many sequence panels, or added
* multiple times to the same panel. The renderer is required to request how
* much leading and trailing space it requires, as well as the depth (space
* orthogonal to the direction that the sequence is rendered).
*
* @author Matthew Pocock
*/
public interface LabelRenderer {
/**
* Render a label for the information for sp to g.
*
* @param g the Graphics2D to render to
* @param sp the SequencePanel that encapsulates the information to render
* @param min the minimum symbol to render (inclusive)
* @param max the maximum symbol to render (inclusive)
*/
void paint(
Graphics2D g, SequenceRenderContext sp,
int min, int max, SequenceRenderContext.Border border
);
/**
* Retrieve the minimum space required to render the label.
*
* @param sp the SequencePanel to return info for
* @return the leading distance of the renderer for that sequence panel
*/
double getMinimumWidth(SequenceRenderContext sp);
public static LabelRenderer RENDER_NOTHING = new RenderNothing();
static class RenderNothing implements LabelRenderer {
public void paint(
Graphics2D g, SequenceRenderContext sp,
int min, int max, SequenceRenderContext.Border border
) {}
public double getMinimumWidth(SequenceRenderContext src) {
return 0.0;
}
};
}