From e8d02fb7225305566995d9f4fbf9e5e910179bb7 Mon Sep 17 00:00:00 2001 From: gmungoc Date: Fri, 30 Jun 2017 10:44:37 +0100 Subject: [PATCH] JAL-2526 correct treatment of contact features only partly visible --- .../renderer/seqfeatures/FeatureRenderer.java | 22 +++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/jalview/renderer/seqfeatures/FeatureRenderer.java b/src/jalview/renderer/seqfeatures/FeatureRenderer.java index 541288e..3f44bcc 100644 --- a/src/jalview/renderer/seqfeatures/FeatureRenderer.java +++ b/src/jalview/renderer/seqfeatures/FeatureRenderer.java @@ -309,10 +309,26 @@ public class FeatureRenderer extends FeatureRendererModel for (SequenceFeature sf : overlaps) { Color featureColour = fc.getColor(sf); - int visibleStart = Math.max(sf.getBegin(), - visiblePositions.getBegin()); + + /* + * if feature starts/ends outside the visible range, + * restrict to visible positions (or if a contact feature, + * to a single position) + */ + int visibleStart = sf.getBegin(); + if (visibleStart < visiblePositions.getBegin()) + { + visibleStart = sf.isContactFeature() ? sf.getEnd() + : visiblePositions.getBegin(); + } + int visibleEnd = sf.getEnd(); + if (visibleEnd > visiblePositions.getEnd()) + { + visibleEnd = sf.isContactFeature() ? sf.getBegin() + : visiblePositions.getEnd(); + } + int featureStartCol = seq.findIndex(visibleStart); - int visibleEnd = Math.min(sf.getEnd(), visiblePositions.getEnd()); int featureEndCol = sf.begin == sf.end ? featureStartCol : seq .findIndex(visibleEnd); -- 1.7.10.2