import jalview.datamodel.SequenceI;
import jalview.renderer.seqfeatures.FeatureColourFinder;
import jalview.renderer.seqfeatures.FeatureRenderer;
-import jalview.util.Comparison;
import jalview.viewmodel.OverviewDimensions;
import java.awt.Color;
{
private FeatureColourFinder finder;
- private jalview.api.SequenceRenderer sr;
-
// image to render on
private BufferedImage miniMe;
private ResidueShaderI shader;
- public OverviewRenderer(jalview.api.SequenceRenderer seqRenderer,
- FeatureRenderer fr, OverviewDimensions od, AlignmentI alignment,
+ private ResidueColourFinder resColFinder;
+
+ public OverviewRenderer(FeatureRenderer fr, OverviewDimensions od,
+ AlignmentI alignment,
ResidueShaderI resshader)
{
- sr = seqRenderer;
finder = new FeatureColourFinder(fr);
+ resColFinder = new OverviewResColourFinder();
al = alignment;
shader = resshader;
if ((seq != null) && (seq.getLength() > lastcol))
{
- color = getResidueColour(allGroups, seq, lastcol, fcfinder);
+ color = resColFinder.getResidueColour(shader, allGroups, seq, lastcol,
+ fcfinder);
}
if (isHidden)
return color.getRGB();
}
- private Color getResidueColour(SequenceGroup[] allGroups,
- final SequenceI seq, int position,
- FeatureColourFinder finder)
- {
- Color col = getResidueBoxColour(allGroups, seq, position);
-
- if (finder != null)
- {
- col = finder.findFeatureColour(col, seq, position);
- }
- return col;
- }
-
- protected Color getResidueBoxColour(SequenceGroup[] allGroups,
- SequenceI seq, int i)
- {
-
- ResidueShaderI currentShader;
-
- SequenceGroup currentSequenceGroup = inCurrentSequenceGroup(allGroups,
- i);
- if (currentSequenceGroup != null)
- {
- currentShader = currentSequenceGroup.getGroupColourScheme();
- }
- else
- {
- currentShader = shader;
- }
-
- return getBoxColour(currentShader, seq, i);
- }
-
- SequenceGroup inCurrentSequenceGroup(SequenceGroup[] allGroups, int res)
- {
- if (allGroups == null)
- {
- return null;
- }
-
- for (int i = 0; i < allGroups.length; i++)
- {
- if ((allGroups[i].getStartRes() <= res)
- && (allGroups[i].getEndRes() >= res))
- {
- return (allGroups[i]);
- }
- }
-
- return null;
- }
-
- Color getBoxColour(ResidueShaderI shader, SequenceI seq, int i)
- {
- Color resBoxColour = Color.white;
- char currentChar = seq.getCharAt(i);
-
- if (shader.getColourScheme() != null)
- {
- if (Comparison.isGap(currentChar)
- && !shader.getColourScheme().hasGapColour())
- {
- resBoxColour = Color.lightGray;
- }
- else
- {
- resBoxColour = shader.findColour(currentChar, i, seq);
- }
- }
- else if (Comparison.isGap(currentChar))
- {
- resBoxColour = Color.lightGray;
- }
-
- return resBoxColour;
- }
-
/**
* Draw the alignment annotation in the overview panel
*