super.setconsensus
[jalview.git] / src / jalview / schemes / ConservationColourScheme.java
1 /*\r
2 * Jalview - A Sequence Alignment Editor and Viewer\r
3 * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
4 *\r
5 * This program is free software; you can redistribute it and/or\r
6 * modify it under the terms of the GNU General Public License\r
7 * as published by the Free Software Foundation; either version 2\r
8 * of the License, or (at your option) any later version.\r
9 *\r
10 * This program is distributed in the hope that it will be useful,\r
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 * GNU General Public License for more details.\r
14 *\r
15 * You should have received a copy of the GNU General Public License\r
16 * along with this program; if not, write to the Free Software\r
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
18 */\r
19 package jalview.schemes;\r
20 \r
21 import jalview.analysis.*;\r
22 \r
23 import java.awt.*;\r
24 \r
25 import java.util.Vector;\r
26 \r
27 \r
28 /**\r
29  * DOCUMENT ME!\r
30  *\r
31  * @author $author$\r
32  * @version $Revision$\r
33  */\r
34 public class ConservationColourScheme extends ResidueColourScheme\r
35 {\r
36     /** DOCUMENT ME!! */\r
37     public Conservation conserve;\r
38 \r
39     /** DOCUMENT ME!! */\r
40     public ColourSchemeI cs;\r
41 \r
42     /** DOCUMENT ME!! */\r
43     public int inc = 30;\r
44 \r
45     /**\r
46      * Creates a new ConservationColourScheme object.\r
47      *\r
48      * @param cons DOCUMENT ME!\r
49      * @param oldcs DOCUMENT ME!\r
50      */\r
51     public ConservationColourScheme(Conservation cons, ColourSchemeI oldcs)\r
52     {\r
53         super();\r
54         conserve = cons;\r
55         cs = oldcs;\r
56     }\r
57 \r
58     /**\r
59      * DOCUMENT ME!\r
60      *\r
61      * @param consensus DOCUMENT ME!\r
62      */\r
63     public void setConsensus(Vector consensus)\r
64     {\r
65         super.setConsensus(consensus);\r
66 \r
67         if (cs != null)\r
68         {\r
69             cs.setConsensus(consensus);\r
70         }\r
71     }\r
72 \r
73     /**\r
74      * DOCUMENT ME!\r
75      *\r
76      * @param s DOCUMENT ME!\r
77      * @param i DOCUMENT ME!\r
78      *\r
79      * @return DOCUMENT ME!\r
80      */\r
81     public Color findColour(String s, int i)\r
82     {\r
83         Color c = Color.white;\r
84 \r
85         if (cs == null)\r
86         {\r
87             return c;\r
88         }\r
89 \r
90         char ch = conserve.getConsSequence().getSequence().charAt(i);\r
91 \r
92         if ((ch == '*') || (ch == '+'))\r
93         {\r
94             c = cs.findColour(s, i);\r
95         }\r
96         else\r
97         {\r
98             int tmp = 10;\r
99             int t = 0;\r
100 \r
101             if (!jalview.util.Comparison.isGap(ch))\r
102             {\r
103                 t = Integer.parseInt(ch + "");\r
104             }\r
105 \r
106             c = cs.findColour(s, i);\r
107 \r
108             while (tmp >= t)\r
109             {\r
110                 c = lighter(c, inc);\r
111                 tmp--;\r
112             }\r
113         }\r
114 \r
115         return c;\r
116     }\r
117 \r
118     /**\r
119      * DOCUMENT ME!\r
120      *\r
121      * @param c DOCUMENT ME!\r
122      * @param inc DOCUMENT ME!\r
123      *\r
124      * @return DOCUMENT ME!\r
125      */\r
126     public Color lighter(Color c, int inc)\r
127     {\r
128         int red = c.getRed();\r
129         int blue = c.getBlue();\r
130         int green = c.getGreen();\r
131 \r
132         if (red < (255 - inc))\r
133         {\r
134             red = red + inc;\r
135         }\r
136         else\r
137         {\r
138             red = 255;\r
139         }\r
140 \r
141         if (blue < (255 - inc))\r
142         {\r
143             blue = blue + inc;\r
144         }\r
145         else\r
146         {\r
147             blue = 255;\r
148         }\r
149 \r
150         if (green < (255 - inc))\r
151         {\r
152             green = green + inc;\r
153         }\r
154         else\r
155         {\r
156             green = 255;\r
157         }\r
158 \r
159         return new Color(red, green, blue);\r
160     }\r
161 }\r