3 import jalview.datamodel.*;
\r
4 import jalview.schemes.*;
\r
9 public class SequenceRenderer implements RendererI
\r
12 boolean renderGaps = true;
\r
14 public void renderGaps(boolean b)
\r
19 public Color getResidueBoxColour(ColourSchemeI cs, SequenceI seq, int i)
\r
21 Color c = Color.white;
\r
23 c = cs.findColour(seq, seq.getSequence(i, i + 1), i, null);
\r
24 }catch(Exception ex){}
\r
30 public void drawSequence(Graphics g,ColourSchemeI cs,SequenceI seq,int start, int end, int x1, int y1, double width, int height,boolean showScores, boolean displayBoxes, boolean displayText, boolean colourText,Vector freq, int seqnum) {
\r
34 drawBoxes(g,cs,seq,start,end,x1,y1,(int)width, height,freq);
\r
38 fm = g.getFontMetrics();
\r
39 drawText(g,cs,colourText,seq,start,end,x1,y1,(int)width,height);
\r
43 public void drawBoxes(Graphics g,ColourSchemeI cs, SequenceI seq,int start, int end, int x1, int y1, int width, int height,Vector freq) {
\r
45 int length = seq.getLength();
\r
47 Color currentColor = Color.WHITE;
\r
50 int curWidth = width;
\r
52 // int threshold = 80;
\r
54 while (i <= end && i < length) {
\r
55 Color c = getResidueBoxColour(cs,seq,i);
\r
57 // Hashtable hash = (Hashtable)freq.elementAt(i-start);
\r
58 // String s = (String)hash.get("maxResidue");
\r
59 // int count = ((Integer)hash.get("maxCount")).intValue();
\r
60 // int max = ((Integer)hash.get("size")).intValue();
\r
61 // int nongap = ((Integer)hash.get("nongap")).intValue();
\r
62 // float frac = (float)(count*1.0/(1.0*nongap));
\r
64 //System.out.println("Frac/count/nongap " + frac + " " + count + " " + nongap);
\r
65 /* if (!seq.getSequence().substring(i,i+1).equals(s) ||
\r
74 } else if (frac > 0.8) {
\r
76 } else if (frac > 0.7) {
\r
78 } else if (frac > 0.5) {
\r
80 } else if (frac> 0.3) {
\r
81 c = Color.lightGray;
\r
85 if (c != currentColor || c != null)
\r
87 g.fillRect(x1+width*(curStart-start),y1,curWidth,height);
\r
100 g.fillRect(x1+width*(curStart-start),y1,curWidth,height);
\r
103 public void drawText(Graphics g, ColourSchemeI cs, boolean colText, SequenceI seq,int start, int end, int x1, int y1, int width, int height)
\r
105 int pady = height/5;
\r
107 g.setColor(Color.black);
\r
110 // Need to find the sequence position here.
\r
111 for (int i = start; i <= end; i++)
\r
113 if(i<seq.getLength())
\r
114 s = seq.getSequence().charAt(i);
\r
118 if(!renderGaps && (s=='-' || s=='.' || s==' '))
\r
123 Color c = getResidueBoxColour(cs, seq, i);
\r
124 g.setColor(c.darker());
\r
127 charOffset = (width - fm.charWidth(s))/2;
\r
130 g.drawString(String.valueOf(s), charOffset + x1 + width * (i - start), y1 + height - pady);
\r
134 public void drawHighlightedText(Graphics g, SequenceI seq,int start, int end, int x1, int y1, int width, int height)
\r
136 int pady = height/5;
\r
138 g.setColor(Color.BLACK);
\r
139 g.fillRect(x1,y1,width*(end-start+1),height);
\r
140 g.setColor(Color.white);
\r
143 // Need to find the sequence position here.
\r
144 for (int i = start; i <= end; i++)
\r
146 if(i<seq.getLength())
\r
147 s = seq.getSequence().charAt(i);
\r
149 charOffset = (width - fm.charWidth(s))/2;
\r
150 g.drawString(String.valueOf(s), charOffset + x1 + width * (i - start), y1 + height - pady);
\r