X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fviewmodel%2FOverviewDimensions.java;h=43680b57d5870f70b0be5b9eecd1749d7520b853;hb=95702b58b4a81f53147aa5e4add078f965966437;hp=60b4ee988a031030bce8fc22a0abfa0307183759;hpb=1ab6f120162b85abfb50046444199f2638f966ac;p=jalview.git diff --git a/src/jalview/viewmodel/OverviewDimensions.java b/src/jalview/viewmodel/OverviewDimensions.java index 60b4ee9..43680b5 100644 --- a/src/jalview/viewmodel/OverviewDimensions.java +++ b/src/jalview/viewmodel/OverviewDimensions.java @@ -69,29 +69,29 @@ public class OverviewDimensions /** * Create an OverviewDimensions object * - * @param props + * @param ranges * positional properties of the viewport * @param showAnnotationPanel * true if the annotation panel is to be shown, false otherwise */ - public OverviewDimensions(ViewportPositionProps props, + public OverviewDimensions(ViewportRanges ranges, boolean showAnnotationPanel) { // scale the initial size of overviewpanel to shape of alignment - float initialScale = (float) props.getAbsoluteAlignmentWidth() - / (float) props.getAbsoluteAlignmentHeight(); + float initialScale = (float) ranges.getAbsoluteAlignmentWidth() + / (float) ranges.getAbsoluteAlignmentHeight(); if (!showAnnotationPanel) { graphHeight = 0; } - if (props.getAbsoluteAlignmentWidth() > props + if (ranges.getAbsoluteAlignmentWidth() > ranges .getAbsoluteAlignmentHeight()) { // wider width = MAX_WIDTH; - sequencesHeight = (int) (MAX_WIDTH / initialScale); + sequencesHeight = Math.round(MAX_WIDTH / initialScale); if (sequencesHeight < MIN_SEQ_HEIGHT) { sequencesHeight = MIN_SEQ_HEIGHT; @@ -100,7 +100,7 @@ public class OverviewDimensions else { // taller - width = (int) (MAX_WIDTH * initialScale); + width = Math.round(MAX_WIDTH * initialScale); sequencesHeight = MAX_SEQ_HEIGHT; if (width < MIN_WIDTH) @@ -121,18 +121,18 @@ public class OverviewDimensions * hidden sequences * @param hiddenCols * hidden columns - * @param props + * @param ranges * viewport position properties */ public void updateViewportFromMouse(int mousex, int mousey, HiddenSequences hiddenSeqs, ColumnSelection hiddenCols, - ViewportPositionProps props) + ViewportRanges ranges) { int x = mousex; int y = mousey; - int alwidth = props.getAbsoluteAlignmentWidth(); - int alheight = props.getAbsoluteAlignmentHeight(); + int alwidth = ranges.getAbsoluteAlignmentWidth(); + int alheight = ranges.getAbsoluteAlignmentHeight(); if (x < 0) { @@ -156,7 +156,7 @@ public class OverviewDimensions int xAsRes = Math.round((float) x * alwidth / width); // get viewport width in residues - int vpwidth = props.getEndRes() - props.getStartRes() + 1; + int vpwidth = ranges.getEndRes() - ranges.getStartRes() + 1; // get where x should be when accounting for hidden cols // if x is in a hidden col region, shift to left - but we still need @@ -173,7 +173,8 @@ public class OverviewDimensions // if last position was before the end of the alignment, need to update if ((scrollCol + vpwidth - 1) < visAlignWidth) { - visXAsRes = hiddenCols.findColumnNToLeft(vpwidth - 1, alwidth - 1); + visXAsRes = hiddenCols.findColumnPosition(hiddenCols + .subtractVisibleColumns(vpwidth - 1, alwidth - 1)); } else { @@ -190,7 +191,7 @@ public class OverviewDimensions // get viewport height in sequences // add 1 because height includes both endSeq and startSeq - int vpheight = props.getEndSeq() - props.getStartSeq() + 1; + int vpheight = ranges.getEndSeq() - ranges.getStartSeq() + 1; // get where y should be when accounting for hidden rows // if y is in a hidden row region, shift up - but we still need absolute @@ -199,19 +200,16 @@ public class OverviewDimensions yAsSeq = hiddenSeqs.adjustForHiddenSeqs(hiddenSeqs .findIndexWithoutHiddenSeqs(yAsSeq)); - // get where end seq should be by adding the viewport height on - int endSeq = yAsSeq + vpheight - 1; - // check in case we went off the edge of the alignment int visAlignHeight = hiddenSeqs.findIndexWithoutHiddenSeqs(alheight); int visYAsRes = hiddenSeqs.findIndexWithoutHiddenSeqs(yAsSeq); - if (hiddenSeqs.findIndexWithoutHiddenSeqs(endSeq) > visAlignHeight) + if (visYAsRes + vpheight - 1 > visAlignHeight) { // went past the end of the alignment, adjust backwards if ((scrollRow + vpheight - 1) < visAlignHeight) { - visYAsRes = hiddenSeqs - .findIndexNAboveRow(vpheight - 1, alheight - 1); + visYAsRes = hiddenSeqs.findIndexWithoutHiddenSeqs(hiddenSeqs + .subtractVisibleRows(vpheight - 1, alheight - 1)); } else { @@ -219,10 +217,9 @@ public class OverviewDimensions } } - // convert absolute positions back to visible alignment positions for - // viewport scrolling + // update scroll values scrollCol = visXAsRes; - scrollRow = visYAsRes; // hiddenSeqs.findIndexWithoutHiddenSeqs(yAsSeq); + scrollRow = visYAsRes; } @@ -234,22 +231,22 @@ public class OverviewDimensions * hidden sequences * @param hiddenCols * hidden columns - * @param props + * @param ranges * viewport position properties */ public void setBoxPosition(HiddenSequences hiddenSeqs, - ColumnSelection hiddenCols, ViewportPositionProps props) + ColumnSelection hiddenCols, ViewportRanges ranges) { - int alwidth = props.getAbsoluteAlignmentWidth(); - int alheight = props.getAbsoluteAlignmentHeight(); + int alwidth = ranges.getAbsoluteAlignmentWidth(); + int alheight = ranges.getAbsoluteAlignmentHeight(); // work with absolute values of startRes and endRes - int startRes = hiddenCols.adjustForHiddenColumns(props.getStartRes()); - int endRes = hiddenCols.adjustForHiddenColumns(props.getEndRes()); + int startRes = hiddenCols.adjustForHiddenColumns(ranges.getStartRes()); + int endRes = hiddenCols.adjustForHiddenColumns(ranges.getEndRes()); // work with absolute values of startSeq and endSeq - int startSeq = hiddenSeqs.adjustForHiddenSeqs(props.getStartSeq()); - int endSeq = hiddenSeqs.adjustForHiddenSeqs(props.getEndSeq()); + int startSeq = hiddenSeqs.adjustForHiddenSeqs(ranges.getStartSeq()); + int endSeq = hiddenSeqs.adjustForHiddenSeqs(ranges.getEndSeq()); // boxX, boxY is the x,y location equivalent to startRes, startSeq boxX = Math.round((float) startRes * width / alwidth); @@ -278,7 +275,6 @@ public class OverviewDimensions g.drawRect(boxX + 1, boxY + 1, boxWidth - 2, boxHeight - 2); } - // don't like this, scroll vals are separate from setting code public int getScrollCol() { return scrollCol;