JAL-345 JAL-1738 SearchResultI method to mark columns in a bitset for highlighted...
authorJim Procter <jprocter@issues.jalview.org>
Sun, 30 Oct 2016 13:05:35 +0000 (13:05 +0000)
committerJim Procter <jprocter@issues.jalview.org>
Sun, 30 Oct 2016 13:05:35 +0000 (13:05 +0000)
src/jalview/datamodel/SearchResults.java
src/jalview/datamodel/SearchResultsI.java

index 2f62991..a5bf8aa 100755 (executable)
@@ -22,6 +22,7 @@ package jalview.datamodel;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.BitSet;
 import java.util.List;
 
 /**
@@ -270,6 +271,31 @@ public class SearchResults implements SearchResultsI
     return result;
   }
 
+  @Override
+  public int markColumns(SequenceCollectionI sqcol, BitSet bs)
+  {
+    int count = 0;
+    for (SequenceI s : sqcol.getSequences())
+    {
+      BitSet mask = new BitSet();
+      int[] cols = getResults(s, sqcol.getStartRes(), sqcol.getEndRes());
+      if (cols != null)
+      {
+        for (int pair = 0; pair < cols.length; pair += 2)
+        {
+          mask.set(cols[pair], cols[pair + 1] + 1);
+        }
+      }
+      // find columns that were already selected
+      BitSet compl = (BitSet) mask.clone();
+      compl.and(bs);
+      count += compl.cardinality();
+      // and mark ranges not already marked
+      bs.or(mask);
+    }
+    return count;
+  }
+
   /* (non-Javadoc)
    * @see jalview.datamodel.SearchResultsI#getSize()
    */
index dc18bb8..d59f453 100644 (file)
@@ -2,6 +2,7 @@ package jalview.datamodel;
 
 import jalview.datamodel.SearchResults.Match;
 
+import java.util.BitSet;
 import java.util.List;
 
 public interface SearchResultsI
@@ -79,4 +80,15 @@ public interface SearchResultsI
    */
   public abstract List<Match> getResults();
 
+  /**
+   * Set bits in a bitfield for all columns in the given sequence collection
+   * that are highlighted
+   * 
+   * @param sqcol
+   *          the set of sequences to search for highlighted regions
+   * @param bs
+   *          bitset to set
+   * @return number of bits set
+   */
+  public abstract int markColumns(SequenceCollectionI sqcol, BitSet bs);
 }
\ No newline at end of file