From 51b7c8bf6da5b39f542df27071480e197e6344f3 Mon Sep 17 00:00:00 2001 From: drdev Date: Sat, 12 Apr 2014 06:04:01 +0000 Subject: [PATCH] Improve submenu rendering --- .../src/forge/menu/FMenuItem.java | 12 +++++--- forge-gui-mobile/src/forge/menu/FSubMenu.java | 30 +++++++++++++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/forge-gui-mobile/src/forge/menu/FMenuItem.java b/forge-gui-mobile/src/forge/menu/FMenuItem.java index efe61a74e26..9ad652ecb18 100644 --- a/forge-gui-mobile/src/forge/menu/FMenuItem.java +++ b/forge-gui-mobile/src/forge/menu/FMenuItem.java @@ -17,11 +17,11 @@ import forge.util.Utils; public class FMenuItem extends FDisplayObject { public static final float HEIGHT = Utils.AVG_FINGER_HEIGHT * 0.8f; - private static final float GAP_X = HEIGHT * 0.1f; + protected static final float GAP_X = HEIGHT * 0.1f; private static final float ICON_SIZE = ((int)((HEIGHT - 2 * GAP_X) / 20f)) * 20; //round down to nearest multiple of 20 private static final FSkinFont FONT = FSkinFont.get(12); - private static final FSkinColor FORE_COLOR = FSkinColor.get(Colors.CLR_TEXT); + protected static final FSkinColor FORE_COLOR = FSkinColor.get(Colors.CLR_TEXT); private static final FSkinColor PRESSED_COLOR = FSkinColor.get(Colors.CLR_ACTIVE).alphaColor(0.9f); private static final FSkinColor SEPARATOR_COLOR = FORE_COLOR.alphaColor(0.5f); @@ -91,12 +91,16 @@ public class FMenuItem extends FDisplayObject { return false; //return false so parent can use event to hide menu } + protected boolean showPressedColor() { + return pressed; + } + @Override - public final void draw(Graphics g) { + public void draw(Graphics g) { float w = getWidth(); float h = HEIGHT; - if (pressed) { + if (showPressedColor()) { g.fillRect(PRESSED_COLOR, 0, 0, w, h); } diff --git a/forge-gui-mobile/src/forge/menu/FSubMenu.java b/forge-gui-mobile/src/forge/menu/FSubMenu.java index 2934ea6b7de..ff190930b0a 100644 --- a/forge-gui-mobile/src/forge/menu/FSubMenu.java +++ b/forge-gui-mobile/src/forge/menu/FSubMenu.java @@ -1,5 +1,6 @@ package forge.menu; +import forge.Forge.Graphics; import forge.assets.FImage; public class FSubMenu extends FMenuItem { @@ -19,6 +20,11 @@ public class FSubMenu extends FMenuItem { popupMenu = popupMenu0; } + @Override + protected boolean showPressedColor() { + return super.showPressedColor() || popupMenu.isVisible(); + } + @Override public boolean tap(float x, float y, int count) { if (popupMenu.isVisible()) { @@ -29,4 +35,28 @@ public class FSubMenu extends FMenuItem { } return true; } + + @Override + public void draw(Graphics g) { + super.draw(g); + + float divotWidth = getDivotWidth(); + float divotHeight = divotWidth * 2f; + float x2 = getWidth() - GAP_X - 1; + float x1 = x2 - divotWidth; + float x3 = x1; + float y2 = getHeight() / 2; + float y1 = y2 - divotHeight / 2; + float y3 = y2 + divotHeight / 2; + g.fillTriangle(FORE_COLOR, x1, y1, x2, y2, x3, y3); + } + + private float getDivotWidth() { + return getHeight() / 6; + } + + @Override + public float getMinWidth() { + return super.getMinWidth() + getDivotWidth() + 2 * GAP_X; + } }