X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FScalePanel.java;h=aedb15790680f89c891aa79e49da177313936e54;hb=2303177fbc4c86e4a63c1e8efa8c8bc50516b6a5;hp=7c8a1d7ce4c92b33cd731dee59fd3c84efe0336c;hpb=902545551ef0f546be958444bed784dae65d69d2;p=jalview.git diff --git a/src/jalview/gui/ScalePanel.java b/src/jalview/gui/ScalePanel.java index 7c8a1d7..aedb157 100755 --- a/src/jalview/gui/ScalePanel.java +++ b/src/jalview/gui/ScalePanel.java @@ -492,31 +492,42 @@ public class ScalePanel extends JPanel implements MouseMotionListener, gg.setColor(Color.black); int scalestartx = (startx / 10) * 10; + + SequenceI refSeq = av.getAlignment().getSeqrep(); + int refSp = 0, refEp = -1, refStart = 0, refEnd = -1, refStartI = 0, refEndI = -1; + if (refSeq != null) + { + // find bounds and set origin appopriately + // locate first visible position for this sequence + int[] refbounds = av.getColumnSelection() + .locateVisibleBoundsOfSequence(refSeq); + + refSp = refbounds[0]; + refEp = refbounds[1]; + refStart = refbounds[2]; + refEnd = refbounds[3]; + refStartI = refbounds[4]; + refEndI = refbounds[5]; + scalestartx = refSp + ((scalestartx - refSp) / 10) * 10; + } + + int widthx = 1 + endx - startx; FontMetrics fm = gg.getFontMetrics(av.getFont()); int y = avCharHeight - fm.getDescent(); - if ((scalestartx % 10) == 0) + if (refSeq == null && scalestartx % 10 == 0) { scalestartx += 5; } String string; - boolean isrgap = false; - char rc; int maxX = 0, refN, iadj; - SequenceI refSeq = av.getAlignment().getSeqrep(); - int refSp = -1, refEp = -1; - if (refSeq != null) - { - refSp = refSeq.findIndex(refSeq.getStart()) - 1; - refEp = refSeq.findIndex(refSeq.getEnd()) - 1; - } // todo: add a 'reference origin column' to set column number relative to for (int i = scalestartx; i < endx; i += 5) { - if ((i % 10) == 0) + if (((i - refSp) % 10) == 0) { iadj = av.getColumnSelection().adjustForHiddenColumns(i) - 1; if (refSeq == null) @@ -529,13 +540,13 @@ public class ScalePanel extends JPanel implements MouseMotionListener, // TODO show bounds if position is a gap // - ie L--R -> "1L|2R" for // marker - if (iadj < refSp) + if (iadj < refStartI) { - string = String.valueOf(iadj - refSp); + string = String.valueOf(iadj - refStartI); } - else if (iadj > refEp) + else if (iadj > refEndI) { - string = "+" + String.valueOf(iadj - refEp); + string = "+" + String.valueOf(iadj - refEndI); } else {