X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Frenderer%2FScaleRenderer.java;h=dc3272ff84decd7d8a0a499230a2850cbe870d58;hb=f53b649151f6393c7353ce51cfd02de348d0bd6e;hp=63e5fa4554578e3d2a8cd4cb046234cfd3b3b6bd;hpb=a946e51c2626014b3d4b0bc2790770e847f08bf4;p=jalview.git diff --git a/src/jalview/renderer/ScaleRenderer.java b/src/jalview/renderer/ScaleRenderer.java index 63e5fa4..dc3272f 100644 --- a/src/jalview/renderer/ScaleRenderer.java +++ b/src/jalview/renderer/ScaleRenderer.java @@ -21,9 +21,11 @@ package jalview.renderer; import jalview.api.AlignViewportI; +import jalview.datamodel.HiddenColumns; import jalview.datamodel.SequenceI; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; /** @@ -34,12 +36,24 @@ import java.util.List; */ public class ScaleRenderer { + /** + * Represents one major or minor scale mark + */ public final class ScaleMark { + /** + * true for a major scale mark, false for minor + */ public final boolean major; + /** + * visible column position (0..) e.g. 19 + */ public final int column; + /** + * text (if any) to show e.g. "20" + */ public final String text; ScaleMark(boolean isMajor, int col, String txt) @@ -71,12 +85,16 @@ public class ScaleRenderer int refSp = 0; int refStartI = 0; int refEndI = -1; + + HiddenColumns hc = av.getAlignment().getHiddenColumns(); + if (refSeq != null) { // find bounds and set origin appropriately - // locate first visible position for this sequence - refSp = av.getAlignment().getHiddenColumns() - .locateVisibleStartOfSequence(refSeq); + // locate first residue in sequence which is not hidden + Iterator it = hc.iterator(); + int index = refSeq.firstResidueOutsideIterator(it); + refSp = hc.absoluteToVisibleColumn(index); refStartI = refSeq.findIndex(refSeq.getStart()) - 1; @@ -96,20 +114,18 @@ public class ScaleRenderer String string; int refN, iadj; // todo: add a 'reference origin column' to set column number relative to - for (int i = scalestartx; i < endx; i += 5) + for (int i = scalestartx; i <= endx; i += 5) { if (((i - refSp) % 10) == 0) { if (refSeq == null) { - iadj = av.getAlignment().getHiddenColumns() - .adjustForHiddenColumns(i - 1) + 1; + iadj = hc.visibleToAbsoluteColumn(i - 1) + 1; string = String.valueOf(iadj); } else { - iadj = av.getAlignment().getHiddenColumns() - .adjustForHiddenColumns(i - 1); + iadj = hc.visibleToAbsoluteColumn(i - 1); refN = refSeq.findPosition(iadj); // TODO show bounds if position is a gap // - ie L--R -> "1L|2R" for