1 package jalview.appletgui;
\r
3 import jalview.datamodel.*;
\r
7 public class FeatureRenderer
\r
11 SequenceGroup currentSequenceGroup = null;
\r
12 SequenceGroup [] allGroups = null;
\r
16 public FeatureRenderer(AlignViewport av)
\r
22 public void drawSequence(Graphics g,SequenceI seq,SequenceGroup [] sg, int start, int end, int x1, int y1, int width, int height)
\r
24 Vector features = seq.getSequenceFeatures();
\r
25 Enumeration e = features.elements();
\r
26 while( e.hasMoreElements() )
\r
28 SequenceFeature sf = (SequenceFeature)e.nextElement();
\r
29 if(sf.getStart()>seq.getEnd())
\r
32 int fstart = seq.findIndex(sf.getStart())-1;
\r
33 int fend = seq.findIndex(sf.getEnd())-1;
\r
35 if( (fstart<=end && fend>=start) )
\r
37 if(fstart<0) // fix for if the feature we have starts before the sequence start,
\r
38 fstart = 0;// but the feature end is still valid!!
\r
42 g.setColor(Color.red);
\r
43 g.fillRoundRect( (fstart - start) * width, y1, width, height, 4,4);
\r
44 g.setColor(Color.white);
\r
46 char s = seq.getSequence().charAt(fstart);
\r
47 FontMetrics fm = g.getFontMetrics();
\r
48 int charOffset = (width - fm.charWidth(s))/2;
\r
49 int pady = height/5;
\r
50 g.drawString(String.valueOf(s), charOffset + x1 + width * (fstart - start), y1 + height - pady);
\r
55 for (int i = fstart; i <= fend; i++)
\r
57 char s = seq.getSequence().charAt(i);
\r
58 if( jalview.util.Comparison.isGap(s) )
\r
61 g.setColor(Color.blue);
\r
62 g.fillRect( (i-start) * width, y1, width, height);
\r
64 g.setColor(Color.white);
\r
66 FontMetrics fm = g.getFontMetrics();
\r
67 int charOffset = (width - fm.charWidth(s)) / 2;
\r
68 int pady = height / 5;
\r
69 g.drawString(String.valueOf(s),
\r
70 charOffset + x1 + width * (i-start),
\r
71 y1 + height - pady);
\r