From 31a6bf16cc1491b09310ab239f7a611f3baf0f3f Mon Sep 17 00:00:00 2001 From: drdev Date: Fri, 23 May 2014 00:42:42 +0000 Subject: [PATCH] Support zoom in image view --- .../forge/itemmanager/views/ImageView.java | 19 ++++++++++++++++++- .../src/forge/itemmanager/views/ItemView.java | 12 ++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java b/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java index 51c974ed5a0..673772dfb77 100644 --- a/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java +++ b/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java @@ -62,6 +62,7 @@ public class ImageView extends ItemView { private GroupDef groupBy = null; private ItemInfo focalItem; private boolean updatingLayout; + private float totalZoomAmount; private final ArrayList orderedItems = new ArrayList(); private final ArrayList groups = new ArrayList(); @@ -545,7 +546,7 @@ public class ImageView extends ItemView { } @Override - protected boolean onScrollerTap(float x, float y, int count) { + protected boolean tap(float x, float y, int count) { ItemInfo item = getItemAtPoint(x, y); if (count == 1) { selectItem(item); @@ -558,6 +559,22 @@ public class ImageView extends ItemView { return true; } + @Override + protected boolean zoom(float x, float y, float amount) { + totalZoomAmount += amount; + + float columnZoomAmount = Utils.AVG_FINGER_WIDTH; + while (totalZoomAmount >= columnZoomAmount) { + setColumnCount(getColumnCount() - 1); + totalZoomAmount -= columnZoomAmount; + } + while (totalZoomAmount <= -columnZoomAmount) { + setColumnCount(getColumnCount() + 1); + totalZoomAmount += columnZoomAmount; + } + return true; + } + private ItemInfo getItemAtPoint(float x, float y) { for (int i = groups.size() - 1; i >= 0; i--) { Group group = groups.get(i); diff --git a/forge-gui-mobile/src/forge/itemmanager/views/ItemView.java b/forge-gui-mobile/src/forge/itemmanager/views/ItemView.java index ae8b852cbb2..38d1b8b7093 100644 --- a/forge-gui-mobile/src/forge/itemmanager/views/ItemView.java +++ b/forge-gui-mobile/src/forge/itemmanager/views/ItemView.java @@ -55,7 +55,12 @@ public abstract class ItemView { @Override public boolean tap(float x, float y, int count) { - return onScrollerTap(x, y, count); + return ItemView.this.tap(x, y, count); + } + + @Override + public boolean zoom(float x, float y, float amount) { + return ItemView.this.zoom(x, y, amount); } @Override @@ -64,7 +69,10 @@ public abstract class ItemView { } } - protected boolean onScrollerTap(float x, float y, int count) { + protected boolean tap(float x, float y, int count) { + return false; + } + protected boolean zoom(float x, float y, float amount) { return false; } protected abstract float getScrollHeight();