diff options
Diffstat (limited to 'android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java')
-rw-r--r-- | android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java index adae23a428fe..0811c26105a1 100644 --- a/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java +++ b/android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/JavaPanZoomController.java @@ -1021,6 +1021,30 @@ public class JavaPanZoomController return true; } + /** + * Move to centerPosition and zoom to the desired input zoom factor. Input zoom + * factor can be null, in this case leave the zoom unchanged. + */ + public boolean animatedMove(PointF centerPoint, Float zoom) { + RectF moveToRect = getMetrics().getCssViewport(); + moveToRect.offsetTo( + centerPoint.x - moveToRect.width() / 2.0f, + centerPoint.y - moveToRect.height() / 2.0f); + + ImmutableViewportMetrics finalMetrics = getMetrics(); + finalMetrics = finalMetrics.setViewportOrigin( + moveToRect.left * finalMetrics.zoomFactor, + moveToRect.top * finalMetrics.zoomFactor); + + if (zoom != null) { + finalMetrics = finalMetrics.scaleTo(zoom, new PointF(0.0f, 0.0f)); + } + finalMetrics = getValidViewportMetrics(finalMetrics); + + bounce(finalMetrics, PanZoomState.ANIMATED_ZOOM); + return true; + } + /** This function must be called from the UI thread. */ public void abortPanning() { checkMainThread(); |