X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FFeatureRenderer.java;h=8a94a895aadded33776f94672513d8ec8d7cb52e;hb=17837bcd5396404a52d6ba5724119a510eb2e51d;hp=1de32a503f34408b8ba010bd128d6f8586663d26;hpb=759ed7e045bf7cf92373682b2392bf21d210d15c;p=jalview.git diff --git a/src/jalview/gui/FeatureRenderer.java b/src/jalview/gui/FeatureRenderer.java index 1de32a5..8a94a89 100755 --- a/src/jalview/gui/FeatureRenderer.java +++ b/src/jalview/gui/FeatureRenderer.java @@ -18,93 +18,120 @@ */ package jalview.gui; -import java.util.*; +import jalview.datamodel.*; import java.awt.*; -import jalview.datamodel.*; +import java.util.*; + +/** + * DOCUMENT ME! + * + * @author $author$ + * @version $Revision$ + */ public class FeatureRenderer { - AlignViewport av; - SequenceGroup currentSequenceGroup = null; - SequenceGroup[] allGroups = null; - Color resBoxColour; - Graphics graphics; - - public FeatureRenderer(AlignViewport av) - { - this.av = av; - } - - public void drawSequence(Graphics g, SequenceI seq, SequenceGroup[] sg, - int start, int end, int x1, int y1, int width, - int height) - { - Vector features = seq.getSequenceFeatures(); - Enumeration e = features.elements(); - - while (e.hasMoreElements()) + AlignViewport av; + SequenceGroup currentSequenceGroup = null; + SequenceGroup[] allGroups = null; + Color resBoxColour; + Graphics graphics; + + /** + * Creates a new FeatureRenderer object. + * + * @param av DOCUMENT ME! + */ + public FeatureRenderer(AlignViewport av) { - SequenceFeature sf = (SequenceFeature) e.nextElement(); - - if (sf.getStart() > seq.getEnd()) - { - continue; - } - - int fstart = seq.findIndex(sf.getStart()) - 1; - int fend = seq.findIndex(sf.getEnd()) - 1; + this.av = av; + } - if ( ( (fstart <= end) && (fend >= start))) - { - if (fstart < start) - { // fix for if the feature we have starts before the sequence start, - fstart = start; // but the feature end is still valid!! - } - if(fend >=end) - fend = end; + /** + * DOCUMENT ME! + * + * @param g DOCUMENT ME! + * @param seq DOCUMENT ME! + * @param sg DOCUMENT ME! + * @param start DOCUMENT ME! + * @param end DOCUMENT ME! + * @param x1 DOCUMENT ME! + * @param y1 DOCUMENT ME! + * @param width DOCUMENT ME! + * @param height DOCUMENT ME! + */ + public void drawSequence(Graphics g, SequenceI seq, SequenceGroup[] sg, + int start, int end, int x1, int y1, int width, int height) + { + Vector features = seq.getSequenceFeatures(); + Enumeration e = features.elements(); - if (fstart == fend) - { - g.setColor(Color.red); - g.fillRoundRect( (fstart - start) * width, y1, width, - height, 4, 4); - g.setColor(Color.white); - - char s = seq.getSequence().charAt(fstart); - FontMetrics fm = g.getFontMetrics(); - int charOffset = (width - fm.charWidth(s)) / 2; - int pady = height / 5; - g.drawString(String.valueOf(s), - charOffset + x1 + (width * (fstart - start)), - (y1 + height) - pady); - } - else + while (e.hasMoreElements()) { - for (int i = fstart; i <= fend; i++) - { - char s = seq.getSequence().charAt(i); + SequenceFeature sf = (SequenceFeature) e.nextElement(); - if (jalview.util.Comparison.isGap(s)) + if (sf.getStart() > seq.getEnd()) { - continue; + continue; } - g.setColor(Color.blue); - g.fillRect( (i - start) * width, y1, width, height); - - g.setColor(Color.white); + int fstart = seq.findIndex(sf.getStart()) - 1; + int fend = seq.findIndex(sf.getEnd()) - 1; - FontMetrics fm = g.getFontMetrics(); - int charOffset = (width - fm.charWidth(s)) / 2; - int pady = height / 5; - g.drawString(String.valueOf(s), - charOffset + x1 + (width * (i - start)), - (y1 + height) - pady); - } + if (((fstart <= end) && (fend >= start))) + { + if (fstart < start) + { // fix for if the feature we have starts before the sequence start, + fstart = start; // but the feature end is still valid!! + } + + if (fend >= end) + { + fend = end; + } + + if (fstart == fend) + { + g.setColor(Color.red); + g.fillRoundRect((fstart - start) * width, y1, width, + height, 4, 4); + g.setColor(Color.white); + + char s = seq.getSequence().charAt(fstart); + FontMetrics fm = g.getFontMetrics(); + int charOffset = (width - fm.charWidth(s)) / 2; + int pady = height / 5; + g.drawString(String.valueOf(s), + charOffset + x1 + (width * (fstart - start)), + (y1 + height) - pady); + } + else + { + for (int i = fstart; i <= fend; i++) + { + char s = seq.getSequence().charAt(i); + + if (jalview.util.Comparison.isGap(s)) + { + continue; + } + + g.setColor(Color.blue); + g.fillRect((i - start) * width, y1, width, height); + + g.setColor(Color.white); + + FontMetrics fm = g.getFontMetrics(); + int charOffset = (width - fm.charWidth(s)) / 2; + int pady = height / 5; + g.drawString(String.valueOf(s), + charOffset + x1 + (width * (i - start)), + (y1 + height) - pady); + } + } + } } - } } - } }