X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Frenderer%2Fseqfeatures%2FFeatureRenderer.java;h=5e071f90cc4d8de05313b3d6b4292b295c1f905d;hb=refs%2Fheads%2Ffeatures%2FJAL-2754findFeaturesByColumn;hp=950d0cd6fbc3cca6b641780241ae45fc79ca4edf;hpb=173080a606f4e91665be2d9f67ed1271390a4c82;p=jalview.git diff --git a/src/jalview/renderer/seqfeatures/FeatureRenderer.java b/src/jalview/renderer/seqfeatures/FeatureRenderer.java index 950d0cd..5e071f9 100644 --- a/src/jalview/renderer/seqfeatures/FeatureRenderer.java +++ b/src/jalview/renderer/seqfeatures/FeatureRenderer.java @@ -21,7 +21,6 @@ package jalview.renderer.seqfeatures; import jalview.api.AlignViewportI; -import jalview.datamodel.Range; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; import jalview.util.Comparison; @@ -227,7 +226,7 @@ public class FeatureRenderer extends FeatureRendererModel /* * simple case - just find the topmost rendered visible feature colour */ - renderedColour = findFeatureColour(seq, seq.findPosition(column)); + renderedColour = findFeatureColour(seq, column); } else { @@ -278,15 +277,6 @@ public class FeatureRenderer extends FeatureRendererModel transparency)); } - /* - * get range of sequence positions within column range - */ - Range seqRange = seq.findPositions(start, end); - if (seqRange == null) - { - return null; - } - Color drawnColour = null; /* @@ -300,8 +290,8 @@ public class FeatureRenderer extends FeatureRendererModel continue; } - List overlaps = seq.findFeatures(seqRange.start, - seqRange.end, type); + List overlaps = seq.findFeatures(start + 1, end + 1, + type); for (SequenceFeature sf : overlaps) { /* @@ -321,14 +311,12 @@ public class FeatureRenderer extends FeatureRendererModel .findIndex(sf.end); if (isContactFeature) { - boolean drawn = renderFeature(g, seq, - featureStartCol - 1, - featureStartCol - 1, featureColour, - start, end, y1, colourOnly); - drawn |= renderFeature(g, seq, - featureEndCol - 1, - featureEndCol - 1, featureColour, - start, end, y1, colourOnly); + boolean drawn = renderFeature(g, seq, featureStartCol - 1, + featureStartCol - 1, featureColour, start, end, y1, + colourOnly); + drawn |= renderFeature(g, seq, featureEndCol - 1, + featureEndCol - 1, featureColour, start, end, y1, + colourOnly); if (drawn) { drawnColour = featureColour; @@ -393,16 +381,21 @@ public class FeatureRenderer extends FeatureRendererModel } /** - * Returns the sequence feature colour rendered at the given sequence - * position, or null if none found. The feature of highest render order (i.e. - * on top) is found, subject to both feature type and feature group being - * visible, and its colour returned. + * Returns the sequence feature colour rendered at the given column position, + * or null if none found. The feature of highest render order (i.e. on top) is + * found, subject to both feature type and feature group being visible, and + * its colour returned. + *

+ * Note this method does not check for a gap in the column so would return the + * colour for features enclosing a gapped column. Check for gap before calling + * if different behaviour is wanted. * * @param seq - * @param pos + * @param column + * (1..) * @return */ - Color findFeatureColour(SequenceI seq, int pos) + Color findFeatureColour(SequenceI seq, int column) { /* * check for new feature added while processing @@ -421,7 +414,8 @@ public class FeatureRenderer extends FeatureRendererModel continue; } - List overlaps = seq.findFeatures(pos, pos, type); + List overlaps = seq.findFeatures(column, column, + type); for (SequenceFeature sequenceFeature : overlaps) { if (!featureGroupNotShown(sequenceFeature))