X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Frenderer%2FContactGeometry.java;h=ad741ff3f7a8b9db277e3d88addd6bbe122e5fba;hb=f3d6a13271e3f34dfb4e40d6a2a7df1d392f8014;hp=2eb325c46ce8b97838ec1e36857fcb1395eeb937;hpb=9e40070f757fc662aba39ba6314be4937276ead4;p=jalview.git diff --git a/src/jalview/renderer/ContactGeometry.java b/src/jalview/renderer/ContactGeometry.java index 2eb325c..ad741ff 100644 --- a/src/jalview/renderer/ContactGeometry.java +++ b/src/jalview/renderer/ContactGeometry.java @@ -78,33 +78,38 @@ public class ContactGeometry * @return true if the range on the matrix specified by ci intersects with selected columns in the ContactListI's reference frame. */ - boolean intersects(contactInterval ci,ColumnSelection columnSelection, HiddenColumns hiddenColumns, boolean visibleOnly) { + boolean intersects(contactInterval ci, ColumnSelection columnSelection, + HiddenColumns hiddenColumns, boolean visibleOnly) + { boolean rowsel = false; - final int[] mappedRange = contacts.getMappedPositionsFor(ci.cStart, ci.cEnd); - if (mappedRange==null) + final int[] mappedRange = contacts.getMappedPositionsFor(ci.cStart, + ci.cEnd); + if (mappedRange == null) { return false; } - boolean containsHidden=false; - if (visibleOnly && hiddenColumns!=null && hiddenColumns.hasHiddenColumns()) + for (int p = 0; p < mappedRange.length && !rowsel; p += 2) { - // TODO: turn into function on hiddenColumns and create test !! - Iterator viscont = hiddenColumns - .getVisContigsIterator(mappedRange[0], mappedRange[1], false); - containsHidden = !viscont.hasNext(); - if (!containsHidden) + boolean containsHidden = false; + if (visibleOnly && hiddenColumns != null + && hiddenColumns.hasHiddenColumns()) { - for (int[] interval=viscont.next();viscont.hasNext(); - rowsel |= columnSelection.intersects(interval[0],interval[1])) - ; + // TODO: turn into function on hiddenColumns and create test !! + Iterator viscont = hiddenColumns.getVisContigsIterator( + mappedRange[p], mappedRange[p + 1], false); + containsHidden = !viscont.hasNext(); + if (!containsHidden) + { + for (int[] interval = viscont.next(); viscont + .hasNext(); rowsel |= columnSelection + .intersects(interval[p], interval[p + 1])) + ; + } } - } - else - { - // if containsHidden is true mappedRange is not visible - if (containsHidden) + else { - rowsel = columnSelection.intersects(mappedRange[0], mappedRange[1]); + rowsel = columnSelection.intersects(mappedRange[p], + mappedRange[p + 1]); } } return rowsel;