import jalview.gui.AlignFrame;
import jalview.gui.Desktop;
import jalview.util.Comparison;
+import jalview.util.ReverseListIterator;
import jalview.viewmodel.seqfeatures.FeatureRendererModel;
import java.awt.AlphaComposite;
* if columns are all gapped, or sequence has no features, nothing to do
*/
Range visiblePositions = seq.findPositions(start+1, end+1);
- if (visiblePositions == null || !seq.getFeatures().hasFeatures())
+ if (visiblePositions == null || (!seq.getFeatures().hasFeatures()
+ && !av.isShowComplementFeatures()))
{
return null;
}
if (featureColour == null)
{
/*
- * feature excluded by visibility settings, filters, or colour threshold
+ * feature excluded by filters, or colour threshold
*/
continue;
}
}
}
+ /*
+ * if configured to do so, find and show complement's features
+ */
+ if (av.isShowComplementFeatures())
+ {
+ AlignViewportI comp = av.getCodingComplement();
+ FeatureRenderer fr2 = Desktop.getAlignFrameFor(comp)
+ .getFeatureRenderer();
+ for (int pos = visiblePositions.start; pos <= visiblePositions.end; pos++)
+ {
+ int column = seq.findIndex(pos);
+ List<SequenceFeature> features = fr2
+ .findComplementFeaturesAtResidue(seq, pos);
+ for (SequenceFeature sf : features)
+ {
+ FeatureColourI fc = fr2.getFeatureStyle(sf.getType());
+ Color featureColour = fr2.getColor(sf, fc);
+ renderFeature(g, seq, column - 1, column - 1, featureColour,
+ start, end, y1, colourOnly);
+ drawnColour = featureColour;
+ }
+ }
+ }
+
if (transparency != 1.0f && g != null)
{
/*
AlignFrame af = Desktop.getAlignFrameFor(complement);
FeatureRendererModel fr2 = af.getFeatureRenderer();
List<SequenceFeature> features = fr2.findComplementFeaturesAtResidue(
- seq, seq.findPosition(column));
- // todo: ensure ordered by feature render order
- for (SequenceFeature sf : features)
+ seq, seq.findPosition(column - 1));
+
+ ReverseListIterator<SequenceFeature> it = new ReverseListIterator<>(
+ features);
+ while (it.hasNext())
{
+ SequenceFeature sf = it.next();
if (!fr2.featureGroupNotShown(sf))
{
Color col = fr2.getColour(sf);