import jalview.datamodel.SearchResultsI;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
+import jalview.datamodel.VisibleContigsIterator;
import jalview.renderer.ScaleRenderer;
import jalview.renderer.ScaleRenderer.ScaleMark;
import jalview.viewmodel.AlignmentViewport;
g.setColor(Color.blue);
int res;
Iterator<Integer> it = hidden.getBoundedStartIterator(startRes,
- endx + 1, true);
+ endx + 1);
while (it.hasNext())
{
res = it.next() - startRes;
else
{
int screenY = 0;
- final int screenYMax = endRes - startRes;
- int blockStart = startRes;
- int blockEnd = endRes;
+ int blockStart;
+ int blockEnd;
HiddenColumns hidden = av.getAlignment().getHiddenColumns();
- Iterator<int[]> regions = hidden.getBoundedVisRegionIterator(startRes,
- endRes);
+ VisibleContigsIterator regions = (VisibleContigsIterator) hidden
+ .getVisibleBlocksIterator(startRes, endRes, true);
+
while (regions.hasNext())
{
int[] region = regions.next();
-
+ blockEnd = region[1];
blockStart = region[0];
/*
* 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);
-
g1.translate(screenY * avcharWidth, 0);
draw(g1, blockStart, blockEnd, startSeq, endSeq, offset);
* 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()
+ && (regions.hasNext() || regions.endsAtHidden()))
{
g1.setColor(Color.blue);
g1.drawLine((blockEnd - blockStart + 1) * avcharWidth - 1,
g1.translate(-screenY * avcharWidth, 0);
screenY += blockEnd - blockStart + 1;
-
- if (screenY > screenYMax)
- {
- // already rendered last block
- return;
- }
- }
- if (screenY <= screenYMax)
- {
- // remaining visible region to render
- blockEnd = blockStart + (endRes - startRes) - 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,