int xAsRes = getLeftXFromCentreX(mousex, hiddenCols);
int yAsSeq = getTopYFromCentreY(mousey, hiddenSeqs);
+ updateViewportFromTopLeft(xAsRes, yAsSeq, hiddenSeqs, hiddenCols);
+ }
+
+ @Override
+ public void adjustViewportFromMouse(int mousex, int mousey,
+ HiddenSequences hiddenSeqs, HiddenColumns hiddenCols)
+ {
+ // calculate translation in pixel terms:
+ // get mouse location in viewport coords, add translation in viewport
+ // coords,
+ // convert back to pixel coords
+ int vpx = Math.round((float) mousex * alwidth / width);
+ int visXAsRes = hiddenCols.findColumnPosition(vpx);
+
+ int vpy = Math.round((float) mousey * alheight / sequencesHeight);
+ int visYAsRes = hiddenSeqs.findIndexWithoutHiddenSeqs(vpy);
+
+ updateViewportFromTopLeft(visXAsRes + transX, visYAsRes + transY,
+ hiddenSeqs,
+ hiddenCols);
+ }
+
+ @Override
+ protected void updateViewportFromTopLeft(int xAsRes, int yAsSeq,
+ HiddenSequences hiddenSeqs, HiddenColumns hiddenCols)
+ {
+
resetAlignmentDims();
if (xAsRes < 0)
public void setBoxPosition(HiddenSequences hiddenSeqs,
HiddenColumns hiddenCols)
{
+
// work with absolute values of startRes and endRes
int startRes = hiddenCols.adjustForHiddenColumns(ranges.getStartRes());
int endRes = hiddenCols.adjustForHiddenColumns(ranges.getEndRes());
int vpy = Math.round((float) mousey * alheight / sequencesHeight);
return hidden.subtractVisibleRows(ranges.getViewportHeight() / 2, vpy);
}
+
+ @Override
+ public void setDragPoint(int x, int y, HiddenSequences hiddenSeqs,
+ HiddenColumns hiddenCols)
+ {
+ {
+ // get alignment position of x and box (can get directly from vpranges) and calc difference
+ int vpx = Math.round((float) x * alwidth / width);
+ int visXAsRes = hiddenCols.findColumnPosition(vpx);
+
+ int vpy = Math.round((float) y * alheight / sequencesHeight);
+ int visYAsRes = hiddenSeqs.findIndexWithoutHiddenSeqs(vpy);
+
+ transX = ranges.getStartRes() - visXAsRes;
+ transY = ranges.getStartSeq() - visYAsRes;
+ }
+ }
+
}