Jalview Imported Sources
[jalview.git] / src / jalview / gui / FeatureRenderer.java
1 package jalview.gui;\r
2 \r
3 import jalview.datamodel.*;\r
4 import jalview.schemes.*;\r
5 import java.awt.*;\r
6 import java.util.*;\r
7 \r
8 public class FeatureRenderer implements RendererI {\r
9 \r
10 \r
11     public Color getResidueBoxColour(ColourSchemeI cs, SequenceI seq, int i) {\r
12         Color c = cs.findColour(seq,seq.getSequence(i,i+1),i,null);\r
13         return c;\r
14     }\r
15 \r
16     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
17 \r
18         int i      = start;\r
19         int length = seq.getLength();\r
20 \r
21         Color currentColor = Color.black;\r
22 \r
23 \r
24         int    prev   = -1;\r
25         int    fstart = 0;\r
26         char   prevc   = '-';\r
27 \r
28         g.setColor(Color.magenta);\r
29 \r
30         while (i <= end && i < length) {\r
31             char c = seq.getCharAt(i);\r
32             if (c != '-') {\r
33 \r
34               if (prevc != c) {\r
35 \r
36                 if (prevc == 'F') {\r
37                   g.setColor(Color.green);\r
38                 } else if (prevc == 'R') {\r
39                   g.setColor(Color.cyan);\r
40                 } else if (prevc == 'M') {\r
41                   g.setColor(Color.magenta);\r
42                 } else if (prevc == 'P') {\r
43                   g.setColor(Color.yellow);\r
44                 }\r
45                 g.fillRect(x1+(int)(width*(i-fstart)),y1+height/4,(int)((prev-fstart+1)*width),height/2);\r
46 \r
47                 prevc   = c;\r
48                 fstart = i;\r
49             }\r
50           } else if (prevc != '-') {\r
51                 if (prevc == 'F') {\r
52                   g.setColor(Color.green);\r
53                 } else if (prevc == 'R') {\r
54                   g.setColor(Color.cyan);\r
55                 } else if (prevc == 'M') {\r
56                   g.setColor(Color.magenta);\r
57                 } else if (prevc == 'P') {\r
58                   g.setColor(Color.yellow);\r
59                 }\r
60                 g.fillRect(x1+(int)(width*(fstart-start)),y1+height/4,(int)((i-fstart+1)*width),height/2);\r
61 \r
62                 prevc = c;\r
63           } else {\r
64             fstart = -1;\r
65           }\r
66             i++;\r
67         }\r
68 \r
69         if (fstart != -1) {\r
70         if (prevc == 'F') {\r
71           g.setColor(Color.green);\r
72         } else if (prevc == 'R') {\r
73           g.setColor(Color.cyan);\r
74         } else if (prevc == 'M') {\r
75           g.setColor(Color.magenta);\r
76         } else if (prevc == 'P') {\r
77           g.setColor(Color.yellow);\r
78         }\r
79 \r
80         //g.fillRect(x1+(int)(width*(fstart-start)),y1+height/4,(int)((end-fstart+1)*width),height/2);\r
81 \r
82         }\r
83     }\r
84 \r
85 }\r