import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
+import jalview.renderer.seqfeatures.FeatureColourFinder;
import jalview.util.Comparison;
import java.awt.Color;
public class OverviewResColourFinder extends ResidueColourFinder
{
- final Color GAP_COLOUR; // default colour to use at gaps
+ final int GAP_COLOUR; // default colour to use at gaps
- final Color RESIDUE_COLOUR; // default colour to use at residues
+ final int RESIDUE_COLOUR; // default colour to use at residues
final Color HIDDEN_COLOUR; // colour for hidden regions
{
if (useLegacyColouring)
{
- GAP_COLOUR = Color.white;
- RESIDUE_COLOUR = Color.lightGray;
- HIDDEN_COLOUR = hiddenCol;
+ GAP_COLOUR = Color.white.getRGB();
+ RESIDUE_COLOUR = Color.lightGray.getRGB();
}
else
{
- GAP_COLOUR = gapCol;
- RESIDUE_COLOUR = Color.white;
- HIDDEN_COLOUR = hiddenCol;
+ GAP_COLOUR = gapCol.getRGB();
+ RESIDUE_COLOUR = Color.white.getRGB();
}
+ HIDDEN_COLOUR = hiddenCol;
}
@Override
+ /**
+ * for Test suite only.
+ */
public Color getBoxColour(ResidueShaderI shader, SequenceI seq, int i)
{
- seq.resetColors();
- Color c = seq.getColor(i);
- if (c != null)
- {
- return c;
- }
+ return new Color(getBoxColourInt(shader, seq, i));
+ }
+
+ public int getBoxColourInt(ResidueShaderI shader, SequenceI seq, int i)
+ {
char currentChar = seq.getCharAt(i);
// In the overview window, gaps are coloured grey, unless the colour scheme
// specifies a gap colour, in which case gaps honour the colour scheme
boolean isGap = Comparison.isGap(currentChar);
if (shader.getColourScheme() == null)
{
- return seq.setColor(i, isGap ? GAP_COLOUR : RESIDUE_COLOUR);
+ return (isGap ? GAP_COLOUR : RESIDUE_COLOUR);
}
+ return (isGap && !shader.getColourScheme().hasGapColour() ? GAP_COLOUR
+ : shader.findColourInt(currentChar, i, seq));
+ }
+
+ /**
+ * For test suite only.
+ */
+ @Override
+ public Color getResidueColour(boolean showBoxes, ResidueShaderI shader,
+ SequenceGroup[] allGroups, final SequenceI seq, int i,
+ FeatureColourFinder finder)
+ {
+ return new Color(getResidueColourInt(showBoxes, shader, allGroups, seq,
+ i, finder));
+ }
+
+
+ public int getResidueColourInt(boolean showBoxes, ResidueShaderI shader,
+ SequenceGroup[] allGroups, final SequenceI seq, int i,
+ FeatureColourFinder finder)
+ {
+
+ int c = seq.getColor(i);
+ if (c != 0)
+ {
+ return c;
+ }
+
+ int col = getResidueBoxColourInt(showBoxes, shader, allGroups, seq, i);
+
+ // if there's a FeatureColourFinder we might override the residue colour
+ // here with feature colouring
return seq.setColor(i,
- isGap && !shader.getColourScheme().hasGapColour() ? GAP_COLOUR
- : shader.findColour(currentChar, i, seq));
+ finder == null || finder.noFeaturesDisplayed() ? col
+ : finder.findFeatureColourInt(col, seq, i));
}
/**
- * {@inheritDoc} In the overview, the showBoxes setting is ignored, as the
- * overview displays the colours regardless.
+ * For test suite only.
*/
@Override
protected Color getResidueBoxColour(boolean showBoxes,
ResidueShaderI shader, SequenceGroup[] allGroups, SequenceI seq,
int i)
{
+ return new Color(
+ getResidueBoxColourInt(showBoxes, shader, allGroups, seq, i));
+ }
+
+ /**
+ * In the overview, the showBoxes setting is ignored, as the overview displays
+ * the colours regardless.
+ */
+ protected int getResidueBoxColourInt(boolean showBoxes,
+ ResidueShaderI shader, SequenceGroup[] allGroups, SequenceI seq,
+ int i)
+ {
SequenceGroup currentSequenceGroup = getCurrentSequenceGroup(allGroups,
i);
ResidueShaderI currentShader = (currentSequenceGroup == null ? shader
: currentSequenceGroup.getGroupColourScheme());
- return getBoxColour(currentShader, seq, i);
+ return getBoxColourInt(currentShader, seq, i);
}
/**