2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $$Year-Rel$$ The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
21 package jalview.renderer;
23 import jalview.datamodel.SequenceGroup;
24 import jalview.datamodel.SequenceI;
25 import jalview.renderer.seqfeatures.FeatureColourFinder;
27 import java.awt.Color;
29 public class ResidueColourFinder
31 public ResidueColourFinder()
36 * Get the colour of a residue in a sequence
39 * true if the viewport's Show Boxes setting is true
41 * the viewport's colour scheme
43 * all the groups which seq participates in
45 * the sequence containing the residue
47 * the position of the residue in the sequence
49 * FeatureColourFinder for the viewport
50 * @return colour of the residue
52 public Color getResidueColour(boolean showBoxes, ResidueShaderI shader,
53 SequenceGroup[] allGroups,
54 final SequenceI seq, int position, FeatureColourFinder finder)
56 Color col = getResidueBoxColour(showBoxes, shader, allGroups, seq,
59 // if there's a FeatureColourFinder we might override the residue colour
60 // here with feature colouring
63 col = finder.findFeatureColour(col, seq, position);
69 * Get the residue colour without accounting for any features
72 * true if the viewport's Show Boxes setting is true
74 * the viewport's colour scheme
76 * all the groups which seq participates in
78 * the sequence containing the residue
80 * the position of the residue in the sequence
83 protected Color getResidueBoxColour(boolean showBoxes,
84 ResidueShaderI shader,
85 SequenceGroup[] allGroups,
88 SequenceGroup currentSequenceGroup = getCurrentSequenceGroup(allGroups,
90 if (currentSequenceGroup != null)
92 if (currentSequenceGroup.getDisplayBoxes())
94 return getBoxColour(currentSequenceGroup.getGroupColourScheme(),
100 return getBoxColour(shader, seq, i);
107 * Search all the groups for a sequence to find the one which a given res
111 * all the groups a sequence participates in
113 * the residue to search for
114 * @return a sequence group for res, or null if no sequence group applies
116 public SequenceGroup getCurrentSequenceGroup(SequenceGroup[] allGroups,
119 if (allGroups == null)
124 for (int i = 0; i < allGroups.length; i++)
126 if ((allGroups[i].getStartRes() <= res)
127 && (allGroups[i].getEndRes() >= res))
129 return (allGroups[i]);
140 * the viewport's colour scheme
142 * the sequence containing the residue
144 * the position of the residue in the sequence
146 public Color getBoxColour(ResidueShaderI shader, SequenceI seq, int i)
148 Color resBoxColour = Color.white;
149 if (shader.getColourScheme() != null)
151 resBoxColour = shader.findColour(seq.getCharAt(i), i, seq);