Improve submenu rendering

This commit is contained in:
drdev
2014-04-12 06:04:01 +00:00
parent 2bba9c9d8d
commit 51b7c8bf6d
2 changed files with 38 additions and 4 deletions

View File

@@ -17,11 +17,11 @@ import forge.util.Utils;
public class FMenuItem extends FDisplayObject { public class FMenuItem extends FDisplayObject {
public static final float HEIGHT = Utils.AVG_FINGER_HEIGHT * 0.8f; 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 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 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 PRESSED_COLOR = FSkinColor.get(Colors.CLR_ACTIVE).alphaColor(0.9f);
private static final FSkinColor SEPARATOR_COLOR = FORE_COLOR.alphaColor(0.5f); 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 return false; //return false so parent can use event to hide menu
} }
protected boolean showPressedColor() {
return pressed;
}
@Override @Override
public final void draw(Graphics g) { public void draw(Graphics g) {
float w = getWidth(); float w = getWidth();
float h = HEIGHT; float h = HEIGHT;
if (pressed) { if (showPressedColor()) {
g.fillRect(PRESSED_COLOR, 0, 0, w, h); g.fillRect(PRESSED_COLOR, 0, 0, w, h);
} }

View File

@@ -1,5 +1,6 @@
package forge.menu; package forge.menu;
import forge.Forge.Graphics;
import forge.assets.FImage; import forge.assets.FImage;
public class FSubMenu extends FMenuItem { public class FSubMenu extends FMenuItem {
@@ -19,6 +20,11 @@ public class FSubMenu extends FMenuItem {
popupMenu = popupMenu0; popupMenu = popupMenu0;
} }
@Override
protected boolean showPressedColor() {
return super.showPressedColor() || popupMenu.isVisible();
}
@Override @Override
public boolean tap(float x, float y, int count) { public boolean tap(float x, float y, int count) {
if (popupMenu.isVisible()) { if (popupMenu.isVisible()) {
@@ -29,4 +35,28 @@ public class FSubMenu extends FMenuItem {
} }
return true; 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;
}
} }