3 import jalview.datamodel.*;
\r
4 import jalview.schemes.*;
\r
8 public class FeatureRenderer implements RendererI
\r
12 SequenceGroup currentSequenceGroup = null;
\r
13 SequenceGroup [] allGroups = null;
\r
17 public FeatureRenderer(AlignViewport av)
\r
23 public void drawSequence(Graphics g,SequenceI seq,SequenceGroup [] sg, int start, int end, int x1, int y1, int width, int height, Vector pid, int seqnum)
\r
25 Vector features = seq.getSequenceFeatures();
\r
26 Enumeration e = features.elements();
\r
27 while( e.hasMoreElements() )
\r
29 SequenceFeature sf = (SequenceFeature)e.nextElement();
\r
30 if(sf.getStart()>seq.getEnd())
\r
33 int fstart = seq.findIndex(sf.getStart())-1;
\r
34 int fend = seq.findIndex(sf.getEnd())-1;
\r
36 if( (fstart<=end && fend>=start) )
\r
38 if(fstart<0) // fix for if the feature we have starts before the sequence start,
\r
39 fstart = 0;// but the feature end is still valid!!
\r
43 g.setColor(Color.red);
\r
44 g.fillRoundRect( (fstart - start) * width, y1, width, height, 4,4);
\r
45 g.setColor(Color.white);
\r
47 char s = seq.getSequence().charAt(fstart);
\r
48 FontMetrics fm = g.getFontMetrics();
\r
49 int charOffset = (width - fm.charWidth(s))/2;
\r
50 int pady = height/5;
\r
51 g.drawString(String.valueOf(s), charOffset + x1 + width * (fstart - start), y1 + height - pady);
\r
56 for (int i = fstart; i <= fend; i++)
\r
58 char s = seq.getSequence().charAt(i);
\r
59 if( jalview.util.Comparison.isGap(s) )
\r
62 g.setColor(Color.blue);
\r
63 g.fillRect( (i-start) * width, y1, width, height);
\r
65 g.setColor(Color.white);
\r
67 FontMetrics fm = g.getFontMetrics();
\r
68 int charOffset = (width - fm.charWidth(s)) / 2;
\r
69 int pady = height / 5;
\r
70 g.drawString(String.valueOf(s),
\r
71 charOffset + x1 + width * (i-start),
\r
72 y1 + height - pady);
\r