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 int fstart = seq.findIndex(sf.getStart())-1;
\r
31 int fend = seq.findIndex(sf.getEnd())-1;
\r
33 if( (fstart<=end && fend>=start) )
\r
35 if(fstart<0) // fix for if the feature we have starts before the sequence start,
\r
36 fstart = 0;// but the feature end is still valid!!
\r
40 g.setColor(Color.red);
\r
41 g.fillRoundRect( (fstart - start) * width, y1, width, height, 4,4);
\r
42 g.setColor(Color.white);
\r
44 char s = seq.getSequence().charAt(fstart);
\r
45 FontMetrics fm = g.getFontMetrics();
\r
46 int charOffset = (width - fm.charWidth(s))/2;
\r
47 int pady = height/5;
\r
48 g.drawString(String.valueOf(s), charOffset + x1 + width * (fstart - start), y1 + height - pady);
\r
53 for (int i = fstart; i <= fend; i++)
\r
56 g.setColor(Color.blue);
\r
57 g.fillRect( (i-start) * width, y1, width, height);
\r
59 g.setColor(Color.white);
\r
60 char s = seq.getSequence().charAt(i);
\r
61 FontMetrics fm = g.getFontMetrics();
\r
62 int charOffset = (width - fm.charWidth(s)) / 2;
\r
63 int pady = height / 5;
\r
64 g.drawString(String.valueOf(s),
\r
65 charOffset + x1 + width * (i-start),
\r
66 y1 + height - pady);
\r
68 }catch(Exception ex){System.out.println(i+" "+fstart+" "+fend+" " +sf.getDescription()+" "+seq.getName()+" "+seq.getLength()); }
\r