3 import jalview.datamodel.*;
\r
4 import jalview.schemes.*;
\r
9 public class SequenceRenderer implements RendererI
\r
14 public Color getResidueBoxColour(ColourSchemeI cs, SequenceI seq, int i) {
\r
15 Color c = Color.WHITE;
\r
19 c = cs.findColour(seq, seq.getSequence(i, i + 1), i, null);
\r
20 }catch(Exception ex)
\r
26 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,Vector freq, int seqnum,AlignViewport av) {
\r
30 if (displayBoxes == true) {
\r
31 drawBoxes(g,cs,seq,start,end,x1,y1,(int)width, height,freq);
\r
33 if (displayText == true) {
\r
34 fm = g.getFontMetrics();
\r
35 drawText(g,cs,seq,start,end,x1,y1,(int)width,height);
\r
39 public void drawBoxes(Graphics g,ColourSchemeI cs, SequenceI seq,int start, int end, int x1, int y1, int width, int height,Vector freq) {
\r
41 int length = seq.getLength();
\r
43 Color currentColor = Color.WHITE;
\r
46 int curWidth = width;
\r
48 // int threshold = 80;
\r
50 while (i <= end && i < length) {
\r
51 Color c = getResidueBoxColour(cs,seq,i);
\r
53 // Hashtable hash = (Hashtable)freq.elementAt(i-start);
\r
54 // String s = (String)hash.get("maxResidue");
\r
55 // int count = ((Integer)hash.get("maxCount")).intValue();
\r
56 // int max = ((Integer)hash.get("size")).intValue();
\r
57 // int nongap = ((Integer)hash.get("nongap")).intValue();
\r
58 // float frac = (float)(count*1.0/(1.0*nongap));
\r
60 //System.out.println("Frac/count/nongap " + frac + " " + count + " " + nongap);
\r
61 /* if (!seq.getSequence().substring(i,i+1).equals(s) ||
\r
70 } else if (frac > 0.8) {
\r
72 } else if (frac > 0.7) {
\r
74 } else if (frac > 0.5) {
\r
76 } else if (frac> 0.3) {
\r
77 c = Color.lightGray;
\r
81 if (c != currentColor || c != null)
\r
83 g.fillRect(x1+width*(curStart-start),y1,curWidth,height);
\r
96 g.fillRect(x1+width*(curStart-start),y1,curWidth,height);
\r
99 public void drawText(Graphics g, ColourSchemeI cs, SequenceI seq,int start, int end, int x1, int y1, int width, int height)
\r
101 int pady = height/5;
\r
103 g.setColor(Color.black);
\r
104 boolean colourText = av.getColourText();
\r
107 // Need to find the sequence position here.
\r
108 for (int i = start; i <= end; i++)
\r
110 if (i < end && i < seq.getLength())
\r
111 s = seq.getSequence().charAt(i);
\r
112 else if(i<seq.getLength())
\r
113 s = seq.getSequence().charAt(i);
\r
119 c = getResidueBoxColour(cs, seq, i);
\r
120 g.setColor(c.darker());
\r
123 charOffset = (width - fm.charWidth(s))/2;
\r
126 g.drawString(String.valueOf(s), charOffset + x1 + width * (i - start), y1 + height - pady);
\r