X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FVisibleContigsIterator.java;h=6d3f43ddbd6ab5e49c2f9863da11e8215047a5cb;hb=05a51640d2a5c35cd32e8ad831963bd268ea10f6;hp=d7594f92420584a1856318b5be87b9d42870048d;hpb=f57d1d3437767e14c2bf711af0e06c13b9d18cd4;p=jalview.git diff --git a/src/jalview/datamodel/VisibleContigsIterator.java b/src/jalview/datamodel/VisibleContigsIterator.java index d7594f9..6d3f43d 100644 --- a/src/jalview/datamodel/VisibleContigsIterator.java +++ b/src/jalview/datamodel/VisibleContigsIterator.java @@ -5,7 +5,9 @@ import java.util.Iterator; import java.util.List; /** - * An iterator which iterates over visible regions in a range. + * An iterator which iterates over visible regions in a range. Provides a + * special "endsAtHidden" indicator to allow callers to determine if the final + * visible column is adjacent to a hidden region. */ public class VisibleContigsIterator implements Iterator { @@ -13,6 +15,8 @@ public class VisibleContigsIterator implements Iterator private int currentPosition = 0; + private boolean endsAtHidden = false; + VisibleContigsIterator(int start, int end, List hiddenColumns) { @@ -24,6 +28,7 @@ public class VisibleContigsIterator implements Iterator for (int[] region : hiddenColumns) { + endsAtHidden = false; hideStart = region[0]; hideEnd = region[1]; @@ -34,8 +39,17 @@ public class VisibleContigsIterator implements Iterator } if (hideStart > vstart) { - int[] contig = new int[] { vstart, hideStart - 1 }; - vcontigs.add(contig); + if (end - 1 > hideStart - 1) + { + int[] contig = new int[] { vstart, hideStart - 1 }; + vcontigs.add(contig); + endsAtHidden = true; + } + else + { + int[] contig = new int[] { vstart, end - 1 }; + vcontigs.add(contig); + } } vstart = hideEnd + 1; @@ -50,6 +64,7 @@ public class VisibleContigsIterator implements Iterator { int[] contig = new int[] { vstart, end - 1 }; vcontigs.add(contig); + endsAtHidden = false; } } else @@ -72,5 +87,10 @@ public class VisibleContigsIterator implements Iterator currentPosition++; return result; } + + public boolean endsAtHidden() + { + return endsAtHidden; + } }