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, final SequenceI seq, int position,
54 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, SequenceGroup[] allGroups, SequenceI seq,
87 SequenceGroup currentSequenceGroup = getCurrentSequenceGroup(allGroups,
89 if (currentSequenceGroup != null)
91 if (currentSequenceGroup.getDisplayBoxes())
93 return getBoxColour(currentSequenceGroup.getGroupColourScheme(),
99 return getBoxColour(shader, seq, i);
106 * Search all the groups for a sequence to find the one which a given res
110 * all the groups a sequence participates in
112 * the residue to search for
113 * @return a sequence group for res, or null if no sequence group applies
115 public SequenceGroup getCurrentSequenceGroup(SequenceGroup[] allGroups,
118 if (allGroups == null)
123 for (int i = 0; i < allGroups.length; i++)
125 if ((allGroups[i].getStartRes() <= res)
126 && (allGroups[i].getEndRes() >= res))
128 return (allGroups[i]);
139 * the viewport's colour scheme
141 * the sequence containing the residue
143 * the position of the residue in the sequence
145 public Color getBoxColour(ResidueShaderI shader, SequenceI seq, int i)
147 Color resBoxColour = Color.white;
148 if (shader.getColourScheme() != null)
150 resBoxColour = shader.findColour(seq.getCharAt(i), i, seq);