X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FCigarArray.java;fp=src%2Fjalview%2Fdatamodel%2FCigarArray.java;h=2aa3efbb7378c9e6a86bcc461697bbf9e3672b38;hb=7012b60c122812320c562563505e308ce485d7e7;hp=1723f1d45d148bd082b5d9c17ff0661df2e2216d;hpb=4643fc24cc1802814da8653904d8d8b9835395e3;p=jalview.git diff --git a/src/jalview/datamodel/CigarArray.java b/src/jalview/datamodel/CigarArray.java index 1723f1d..2aa3efb 100644 --- a/src/jalview/datamodel/CigarArray.java +++ b/src/jalview/datamodel/CigarArray.java @@ -20,7 +20,7 @@ */ package jalview.datamodel; -import java.util.List; +import java.util.Iterator; public class CigarArray extends CigarBase { @@ -90,9 +90,7 @@ public class CigarArray extends CigarBase SequenceGroup selectionGroup) { this(constructSeqCigarArray(alignment, selectionGroup)); - constructFromAlignment(alignment, - hidden != null ? hidden.getHiddenColumnsCopy() : null, - selectionGroup); + constructFromAlignment(alignment, hidden, selectionGroup); } private static int[] _calcStartEndBounds(AlignmentI alignment, @@ -154,22 +152,25 @@ public class CigarArray extends CigarBase * @param selectionGroup */ private void constructFromAlignment(AlignmentI alignment, - List list, SequenceGroup selectionGroup) + HiddenColumns hidden, SequenceGroup selectionGroup) { int[] _startend = _calcStartEndBounds(alignment, selectionGroup); - int start = _startend[1], end = _startend[2]; + int start = _startend[1]; + int end = _startend[2]; // now construct the CigarArray operations - if (list != null) + if (hidden != null) { int[] region; - int hideStart, hideEnd; + int hideStart; + int hideEnd; int last = start; - for (int j = 0; last < end & j < list.size(); j++) + + Iterator regions = hidden.getBoundedIterator(start, end, true); + while (regions.hasNext()) { - region = list.get(j); + region = regions.next(); hideStart = region[0]; hideEnd = region[1]; - // edit hidden regions to selection range // just move on if hideEnd is before last if (hideEnd < last) @@ -204,6 +205,7 @@ public class CigarArray extends CigarBase addOperation(CigarArray.D, 1 + hideEnd - hideStart); last = hideEnd + 1; } + // Final match if necessary. if (last <= end) {