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.game.Game;
import forge.screens.match.FControl;
import forge.screens.match.input.ButtonUtil;
import forge.toolbox.FButton;
import forge.toolbox.FButton.Corner;
import forge.toolbox.FContainer;
import forge.utils.Utils;
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 BTN_WIDTH = HEIGHT * 1.5f;
private static final FSkinColor backColor = FSkinColor.get(Colors.CLR_THEME2);
private static final FSkinColor foreColor = FSkinColor.get(Colors.CLR_TEXT);
@@ -41,6 +41,8 @@ public class VPrompt extends FContainer {
}));
btnOk.setSize(BTN_WIDTH, HEIGHT);
btnCancel.setSize(BTN_WIDTH, HEIGHT);
btnOk.setCorner(Corner.BottomLeft);
btnCancel.setCorner(Corner.BottomRight);
}
public FButton getBtnOk() {

View File

@@ -12,7 +12,6 @@ import forge.assets.FSkinFont;
import forge.assets.FSkinImage;
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 Color DISABLED_COMPOSITE = new Color(1, 1, 1, 0.25f);
private static final FSkinColor DISABLED_FORE_COLOR = FORE_COLOR.alphaColor(DISABLED_COMPOSITE.a);
@@ -22,6 +21,13 @@ public class FButton extends FDisplayObject {
private FSkinFont font;
private boolean toggled = false;
private Runnable command;
public enum Corner {
None,
BottomLeft,
BottomRight
}
private Corner corner = Corner.None;
/**
* 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) {
command = command0;
}
@@ -129,6 +142,11 @@ public class FButton extends FDisplayObject {
float w = getWidth();
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;
boolean disabled = !isEnabled();
if (disabled) {
@@ -136,15 +154,31 @@ public class FButton extends FDisplayObject {
foreColor = DISABLED_FORE_COLOR;
}
if (w > 2 * h) {
g.drawImage(imgL, 0, 0, h, h);
g.drawImage(imgM, h, 0, w - (2 * h), h);
g.drawImage(imgR, w - h, 0, h, h);
}
else {
float buttonWidth = w / 2;
g.drawImage(imgL, 0, 0, buttonWidth, h);
g.drawImage(imgR, buttonWidth, 0, w - buttonWidth, h);
//determine images to draw and text alignment based on which corner button is in (if any)
switch (corner) {
case None:
if (w > 2 * h) {
g.drawImage(imgL, 0, 0, h, h);
g.drawImage(imgM, h, 0, w - (2 * h), h);
g.drawImage(imgR, w - h, 0, h, 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) {
@@ -152,7 +186,7 @@ public class FButton extends FDisplayObject {
}
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);
}
}
}