Jalview Imported Sources
[jalview.git] / src / jalview / gui / BlockRenderer.java
1 package jalview.gui;\r
2 \r
3 import jalview.datamodel.*;\r
4 import jalview.schemes.*;\r
5 import jalview.analysis.*;\r
6 import jalview.util.*;\r
7 import java.awt.*;\r
8 import java.util.*;\r
9 \r
10 public class BlockRenderer implements RendererI {\r
11     protected Color   color = Color.black;\r
12     protected Color   maroon = new Color(200,0,50);\r
13     protected Color   purple = new Color(255,100,255);\r
14 \r
15     public Color getResidueBoxColour(ColourSchemeI cs, SequenceI seq, int i) {\r
16         Color c = cs.findColour(seq,seq.getSequence(i,i+1),i,null);\r
17         return c;\r
18     }\r
19 \r
20     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 pid, int seqnum,AlignViewport av) {\r
21 \r
22 /*      int i      = start;\r
23         int length = seq.getLength();\r
24 \r
25         Color currentColor = Color.white;\r
26         Vector kmers = av.getKmers();\r
27 \r
28         g.setColor(Color.black);\r
29 \r
30         int prev = -1;\r
31 \r
32         int seqno = -1;\r
33 \r
34         for (int ii = 0; ii < av.getAlignment().getHeight(); ii++) {\r
35             if (av.getSelection().contains(av.getAlignment().getSequenceAt(ii))) {\r
36                 seqno = ii;\r
37             }\r
38         }\r
39 \r
40         int blstart = start - 20;\r
41         int blend   = end   + 20;\r
42 \r
43         if (blstart < 0) {\r
44             blstart = 0;\r
45         }\r
46 \r
47         if (blend > av.getAlignment().getWidth()) {\r
48             blend = av.getAlignment().getWidth();\r
49         }\r
50 \r
51         Hashtable blocks = AAFrequency.findBlocks(av.getAlignment().getSequences(),\r
52                                                   blstart,\r
53                                                   blend,\r
54                                                   av.getSelection().asVector());\r
55 \r
56         Hashtable hkmer = AlignmentUtil.findKmers(seq,blstart,blend,kmers);\r
57 \r
58         boolean   inblock = false;\r
59 \r
60         int       bstart = -1;\r
61         int       blen   = -1;\r
62         int       klen   = -1;\r
63         int       block_end = -1;\r
64         Color bc;\r
65 \r
66         // System.out.println("Rendering " + start + " " + end);\r
67 \r
68         while (i <= blend && i < length) {\r
69             boolean foundblock = false;\r
70 \r
71             if (blocks.get(new Integer(i-blstart)) != null) {\r
72 \r
73                 blen   = ((Integer)blocks.get(new Integer(i-blstart))).intValue();\r
74 \r
75                 foundblock = true;\r
76 \r
77                 block_end = i + blen-1;\r
78 \r
79                 g.setColor(getColor(blen));\r
80                 g.fillRect(x1+(int)(width*(i-start)),y1,\r
81                            (int)width+1,             height/2);\r
82             }\r
83 \r
84             boolean foundKmer = false;\r
85 \r
86             if (hkmer.get(new Integer(i-blstart)) != null) {\r
87 \r
88 \r
89                 klen   = ((Integer)hkmer.get(new Integer(i-blstart))).intValue();\r
90 \r
91                 //              System.out.println("Got kmer " + i + " " + start + " kength " + klen);\r
92 \r
93                 foundKmer = true;\r
94 \r
95                 g.setColor(Color.lightGray);\r
96 \r
97                 if ((int)width> 5) {\r
98                     g.fillRect(x1+(int)(width*(i-start)),y1+height/2,\r
99                                (int)(width*klen)+1,             height/2);\r
100                 } else {\r
101                     g.fillRect(x1+(int)(width*(i-start)),y1+height/2,\r
102                                (int)(width*klen)+1,             height/2);\r
103 \r
104                 }\r
105 \r
106             }\r
107 \r
108             if (width > 5) {\r
109                 g.setColor(Color.black);\r
110                 g.drawString(seq.getSequence().substring(i,i+1),x1+(int)(width*(i-start)),y1+height);\r
111             }\r
112             i++;\r
113         }*/\r
114     }\r
115 \r
116     public Color getColor(int blen) {\r
117 \r
118         Color bc;\r
119 \r
120         if (blen > 20 ) {\r
121             bc = Color.yellow;\r
122         }else if (blen > 10) {\r
123             bc = Color.red;\r
124         } else if (blen > 5) {\r
125             bc = Color.blue;\r
126         } else if (blen > 2) {\r
127             bc = purple;\r
128         } else if (blen == 2) {\r
129             bc = Color.orange;\r
130 \r
131         } else {\r
132             bc = Color.lightGray;\r
133         }\r
134         return bc;\r
135     }\r
136 }\r