JAL-2664 Updates following review feature/JAL-2664
authorkiramt <k.mourao@dundee.ac.uk>
Tue, 29 Aug 2017 15:27:40 +0000 (16:27 +0100)
committerkiramt <k.mourao@dundee.ac.uk>
Tue, 29 Aug 2017 15:27:40 +0000 (16:27 +0100)
src/jalview/api/AlignmentColsCollectionI.java
src/jalview/api/AlignmentRowsCollectionI.java
src/jalview/datamodel/AllColsCollection.java
src/jalview/datamodel/AllRowsCollection.java
src/jalview/datamodel/VisibleColsCollection.java
src/jalview/datamodel/VisibleRowsCollection.java
src/jalview/renderer/OverviewRenderer.java

index 603da98..44cc587 100644 (file)
@@ -10,4 +10,11 @@ public interface AlignmentColsCollectionI extends Iterable<Integer>
    * @return true if the column at the position is hidden
    */
   public boolean isHidden(int c);
+
+  /**
+   * Answers if any column in this collection is hidden
+   * 
+   * @return true if there is at least 1 hidden column
+   */
+  public boolean hasHidden();
 }
index 09b039d..1e8b0b1 100644 (file)
@@ -14,6 +14,13 @@ public interface AlignmentRowsCollectionI extends Iterable<Integer>
   public boolean isHidden(int r);
 
   /**
+   * Answers if any row in this collection is hidden
+   * 
+   * @return true if there is at least 1 hidden row
+   */
+  public boolean hasHidden();
+
+  /**
    * Answers the sequence at the given position in the alignment
    * 
    * @param r
index f84ba95..0700ecd 100644 (file)
@@ -49,4 +49,10 @@ public class AllColsCollection implements AlignmentColsCollectionI
   {
     return !hidden.isVisible(c);
   }
+
+  @Override
+  public boolean hasHidden()
+  {
+    return hidden.hasHiddenColumns();
+  }
 }
index 502ace4..c52cebf 100644 (file)
@@ -59,5 +59,11 @@ public class AllRowsCollection implements AlignmentRowsCollectionI
   {
     return alignment.getSequenceAtAbsoluteIndex(seq);
   }
+
+  @Override
+  public boolean hasHidden()
+  {
+    return (hidden.getSize() > 0);
+  }
 }
 
index 86233ab..8ec1a99 100644 (file)
@@ -50,4 +50,10 @@ public class VisibleColsCollection implements AlignmentColsCollectionI
     return false;
   }
 
+  @Override
+  public boolean hasHidden()
+  {
+    return false;
+  }
+
 }
index ce8e8da..3119017 100644 (file)
@@ -56,5 +56,11 @@ public class VisibleRowsCollection implements AlignmentRowsCollectionI
   {
     return alignment.getSequenceAtAbsoluteIndex(seq);
   }
+
+  @Override
+  public boolean hasHidden()
+  {
+    return false;
+  }
 }
 
index 709816c..1fb2d89 100644 (file)
@@ -84,9 +84,6 @@ public class OverviewRenderer
     int seqIndex = 0;
     int pixelRow = 0;
 
-    BufferedImage hiddenImage = buildHiddenImage(rows, cols,
-            miniMe.getWidth(), miniMe.getHeight());
-
     for (int alignmentRow : rows)
     {
       if (redraw)
@@ -141,11 +138,20 @@ public class OverviewRenderer
       seqIndex++;
     }
 
-    return applyMask(hiddenImage, miniMe);
+    overlayHiddenRegions(rows, cols);
+    return miniMe;
   }
 
-  /*
+  /**
    * Find the colour of a sequence at a specified column position
+   * 
+   * @param seq
+   *          sequence to get colour for
+   * @param lastcol
+   *          column position to get colour for
+   * @param fcfinder
+   *          FeatureColourFinder to use
+   * @return colour of sequence at this position, as RGB
    */
   private int getColumnColourFromSequence(jalview.datamodel.SequenceI seq,
           int lastcol, FeatureColourFinder fcfinder)
@@ -160,23 +166,42 @@ public class OverviewRenderer
     return color.getRGB();
   }
 
-  /*
-   * Overlay a buffered image (mask) onto another image (image) where mask 
-   * has some transparency so image shows through from below
+  /**
+   * Overlay the hidden regions on the overview image
+   * 
+   * @param rows
+   *          collection of rows the overview is built over
+   * @param cols
+   *          collection of columns the overview is built over
    */
-  private BufferedImage applyMask(BufferedImage mask, BufferedImage image)
+  private void overlayHiddenRegions(AlignmentRowsCollectionI rows,
+          AlignmentColsCollectionI cols)
   {
-    Graphics2D g = (Graphics2D) image.getGraphics();
-    g.setComposite(
-            AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
-                    TRANSPARENCY));
-    g.drawImage(mask, 0, 0, image.getWidth(), image.getHeight(), null);
-    return image;
+    if (cols.hasHidden() || rows.hasHidden())
+    {
+      BufferedImage mask = buildHiddenImage(rows, cols, miniMe.getWidth(),
+              miniMe.getHeight());
+
+      Graphics2D g = (Graphics2D) miniMe.getGraphics();
+      g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
+              TRANSPARENCY));
+      g.drawImage(mask, 0, 0, miniMe.getWidth(), miniMe.getHeight(), null);
+    }
   }
 
-  /*
-   * Build a masking image of hidden columns and rows to be applied on top
-   * of the main overview image.
+  /**
+   * Build a masking image of hidden columns and rows to be applied on top of
+   * the main overview image.
+   * 
+   * @param rows
+   *          collection of rows the overview is built over
+   * @param cols
+   *          collection of columns the overview is built over
+   * @param width
+   *          width of overview in pixels
+   * @param height
+   *          height of overview in pixels
+   * @return BufferedImage containing mask of hidden regions
    */
   private BufferedImage buildHiddenImage(AlignmentRowsCollectionI rows,
           AlignmentColsCollectionI cols, int width, int height)
@@ -316,6 +341,13 @@ public class OverviewRenderer
     }
   }
 
+  /**
+   * Allows redraw flag to be set
+   * 
+   * @param b
+   *          value to set redraw to: true = redraw is occurring, false = no
+   *          redraw
+   */
   public void setRedraw(boolean b)
   {
     synchronized (this)