From 07572b9103e99ddfd39e9a4c6955ea84b2948ad8 Mon Sep 17 00:00:00 2001 From: drdev Date: Wed, 17 Dec 2014 03:44:29 +0000 Subject: [PATCH] Support zoom for map --- .../planarconquest/CommandCenterScreen.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/CommandCenterScreen.java b/forge-gui-mobile/src/forge/screens/planarconquest/CommandCenterScreen.java index 668e94ca50c..2b6040c0ad1 100644 --- a/forge-gui-mobile/src/forge/screens/planarconquest/CommandCenterScreen.java +++ b/forge-gui-mobile/src/forge/screens/planarconquest/CommandCenterScreen.java @@ -204,6 +204,42 @@ public class CommandCenterScreen extends FScreen implements IVCommandCenter { return new ScrollBounds(mapData.getWidth(), mapData.getHeight()); } + @Override + public boolean zoom(float x, float y, float amount) { + float oldScrollLeft = getScrollLeft(); + float oldScrollTop = getScrollTop(); + float oldScrollWidth = getScrollWidth(); + float oldScrollHeight = getScrollHeight(); + + x += oldScrollLeft; + y += oldScrollTop; + + if (amount > 0) { + zoom *= 1.1f; + if (zoom > 4f) { + zoom = 4f; + } + } + else { + zoom /= 1.1f; + if (zoom < 0.25f) { + zoom = 0.25f; + } + } + revalidate(); //apply change in height to all scroll panes + + //adjust scroll positions to keep x, y in the same spot + float newScrollWidth = getScrollWidth(); + float xAfter = x * newScrollWidth / oldScrollWidth; + setScrollLeft(oldScrollLeft + xAfter - x); + + float newScrollHeight = getScrollHeight(); + float yAfter = y * newScrollHeight / oldScrollHeight; + setScrollTop(oldScrollTop + yAfter - y); + return true; + } + + @Override protected void drawBackground(Graphics g0) { if (mapData == null) { return; } g = g0;