JAL-2674 reverted attempt at visible regions iterator
[jalview.git] / src / jalview / appletgui / SeqCanvas.java
index 8d429c7..5d55473 100755 (executable)
@@ -565,20 +565,25 @@ public class SeqCanvas extends Panel implements ViewportListenerI
       int blockEnd = endRes;
 
       HiddenColumns hidden = av.getAlignment().getHiddenColumns();
-      Iterator<int[]> regions = hidden.getBoundedVisRegionIterator(startRes,
-              endRes);
+      Iterator<int[]> regions = hidden.iterator();
       while (regions.hasNext())
       {
         int[] region = regions.next();
+        int hideStart = region[0];
+        int hideEnd = region[1];
 
-        blockStart = region[0];
+        if (hideStart <= blockStart)
+        {
+          blockStart += (hideEnd - hideStart) + 1;
+          continue;
+        }
 
         /*
          * draw up to just before the next hidden region, or the end of
          * the visible region, whichever comes first
          */
-        blockEnd = Math.min(region[1], blockStart + screenYMax - screenY);
-
+        blockEnd = Math.min(hideStart - 1,
+                blockStart + screenYMax - screenY);
         g1.translate(screenY * avcharWidth, 0);
 
         draw(g1, blockStart, blockEnd, startSeq, endSeq, offset);
@@ -587,7 +592,7 @@ public class SeqCanvas extends Panel implements ViewportListenerI
          * draw the downline of the hidden column marker (ScalePanel draws the
          * triangle on top) if we reached it
          */
-        if (av.getShowHiddenMarkers() && blockEnd == region[1])
+        if (av.getShowHiddenMarkers() && blockEnd == hideStart - 1)
         {
           g1.setColor(Color.blue);
           g1.drawLine((blockEnd - blockStart + 1) * avcharWidth - 1,
@@ -597,6 +602,7 @@ public class SeqCanvas extends Panel implements ViewportListenerI
 
         g1.translate(-screenY * avcharWidth, 0);
         screenY += blockEnd - blockStart + 1;
+        blockStart = hideEnd + 1;
 
         if (screenY > screenYMax)
         {
@@ -604,17 +610,17 @@ public class SeqCanvas extends Panel implements ViewportListenerI
           return;
         }
       }
+
       if (screenY <= screenYMax)
       {
         // remaining visible region to render
-        blockEnd = blockStart + (endRes - startRes) - screenY;
+        blockEnd = blockStart + screenYMax - screenY;
         g1.translate(screenY * avcharWidth, 0);
         draw(g1, blockStart, blockEnd, startSeq, endSeq, offset);
 
         g1.translate(-screenY * avcharWidth, 0);
       }
     }
-
   }
 
   // int startRes, int endRes, int startSeq, int endSeq, int x, int y,