Improve corner button appearance

This commit is contained in:
drdev
2014-03-10 04:05:15 +00:00
parent c4c2de03f9
commit f3d9a76d0d
2 changed files with 49 additions and 13 deletions

View File

@@ -10,14 +10,14 @@ import forge.assets.FSkinFont;
import forge.assets.FSkinColor.Colors; import forge.assets.FSkinColor.Colors;
import forge.game.Game; import forge.game.Game;
import forge.screens.match.FControl; import forge.screens.match.FControl;
import forge.screens.match.input.ButtonUtil;
import forge.toolbox.FButton; import forge.toolbox.FButton;
import forge.toolbox.FButton.Corner;
import forge.toolbox.FContainer; import forge.toolbox.FContainer;
import forge.utils.Utils; import forge.utils.Utils;
public class VPrompt extends FContainer { public class VPrompt extends FContainer {
public static final float BTN_WIDTH = Utils.AVG_FINGER_WIDTH;
public static final float HEIGHT = Utils.AVG_FINGER_HEIGHT; public static final float HEIGHT = Utils.AVG_FINGER_HEIGHT;
public static final float BTN_WIDTH = HEIGHT * 1.5f;
private static final FSkinColor backColor = FSkinColor.get(Colors.CLR_THEME2); private static final FSkinColor backColor = FSkinColor.get(Colors.CLR_THEME2);
private static final FSkinColor foreColor = FSkinColor.get(Colors.CLR_TEXT); private static final FSkinColor foreColor = FSkinColor.get(Colors.CLR_TEXT);
@@ -41,6 +41,8 @@ public class VPrompt extends FContainer {
})); }));
btnOk.setSize(BTN_WIDTH, HEIGHT); btnOk.setSize(BTN_WIDTH, HEIGHT);
btnCancel.setSize(BTN_WIDTH, HEIGHT); btnCancel.setSize(BTN_WIDTH, HEIGHT);
btnOk.setCorner(Corner.BottomLeft);
btnCancel.setCorner(Corner.BottomRight);
} }
public FButton getBtnOk() { public FButton getBtnOk() {

View File

@@ -12,7 +12,6 @@ import forge.assets.FSkinFont;
import forge.assets.FSkinImage; import forge.assets.FSkinImage;
public class FButton extends FDisplayObject { public class FButton extends FDisplayObject {
private static final int insetX = 25;
private static final FSkinColor FORE_COLOR = FSkinColor.get(Colors.CLR_TEXT); private static final FSkinColor FORE_COLOR = FSkinColor.get(Colors.CLR_TEXT);
private static final Color DISABLED_COMPOSITE = new Color(1, 1, 1, 0.25f); private static final Color DISABLED_COMPOSITE = new Color(1, 1, 1, 0.25f);
private static final FSkinColor DISABLED_FORE_COLOR = FORE_COLOR.alphaColor(DISABLED_COMPOSITE.a); private static final FSkinColor DISABLED_FORE_COLOR = FORE_COLOR.alphaColor(DISABLED_COMPOSITE.a);
@@ -23,6 +22,13 @@ public class FButton extends FDisplayObject {
private boolean toggled = false; private boolean toggled = false;
private Runnable command; private Runnable command;
public enum Corner {
None,
BottomLeft,
BottomRight
}
private Corner corner = Corner.None;
/** /**
* Instantiates a new FButton. * Instantiates a new FButton.
*/ */
@@ -96,6 +102,13 @@ public class FButton extends FDisplayObject {
} }
} }
public Corner getCorner() {
return corner;
}
public void setCorner(Corner corner0) {
corner = corner0;
}
public void setCommand(Runnable command0) { public void setCommand(Runnable command0) {
command = command0; command = command0;
} }
@@ -129,6 +142,11 @@ public class FButton extends FDisplayObject {
float w = getWidth(); float w = getWidth();
float h = getHeight(); float h = getHeight();
float cornerButtonWidth = w / 2;
float cornerButtonHeight = h * 1.5f;
float cornerTextOffsetX = cornerButtonWidth / 2;
float cornerTextOffsetY = (cornerButtonHeight - h) / 2;
FSkinColor foreColor = FORE_COLOR; FSkinColor foreColor = FORE_COLOR;
boolean disabled = !isEnabled(); boolean disabled = !isEnabled();
if (disabled) { if (disabled) {
@@ -136,15 +154,31 @@ public class FButton extends FDisplayObject {
foreColor = DISABLED_FORE_COLOR; foreColor = DISABLED_FORE_COLOR;
} }
if (w > 2 * h) { //determine images to draw and text alignment based on which corner button is in (if any)
g.drawImage(imgL, 0, 0, h, h); switch (corner) {
g.drawImage(imgM, h, 0, w - (2 * h), h); case None:
g.drawImage(imgR, w - h, 0, h, h); if (w > 2 * h) {
} g.drawImage(imgL, 0, 0, h, h);
else { g.drawImage(imgM, h, 0, w - (2 * h), h);
float buttonWidth = w / 2; g.drawImage(imgR, w - h, 0, h, h);
g.drawImage(imgL, 0, 0, buttonWidth, h); }
g.drawImage(imgR, buttonWidth, 0, w - buttonWidth, h); else {
g.drawImage(imgL, 0, 0, cornerButtonWidth, h);
g.drawImage(imgR, cornerButtonWidth, 0, w - cornerButtonWidth, h);
}
break;
case BottomLeft:
g.drawImage(imgM, 0, 0, cornerButtonWidth, cornerButtonHeight);
g.drawImage(imgR, cornerButtonWidth, 0, cornerButtonWidth, cornerButtonHeight);
w -= cornerTextOffsetX;
h += cornerTextOffsetY;
break;
case BottomRight:
g.drawImage(imgL, 0, 0, cornerButtonWidth, cornerButtonHeight);
g.drawImage(imgM, cornerButtonWidth, 0, cornerButtonWidth, cornerButtonHeight);
w += cornerTextOffsetX;
h += cornerTextOffsetY;
break;
} }
if (disabled) { if (disabled) {
@@ -152,7 +186,7 @@ public class FButton extends FDisplayObject {
} }
if (!StringUtils.isEmpty(text)) { if (!StringUtils.isEmpty(text)) {
g.drawText(text, font, foreColor, insetX, 0, w - 2 * insetX, h, false, HAlignment.CENTER, true); g.drawText(text, font, foreColor, 0, 0, w, h, false, HAlignment.CENTER, true);
} }
} }
} }