1
0
mirror of https://github.com/openeggbert/sprite-utils.git synced 2025-03-25 15:37:50 +01:00

Added new features and some improvements

This commit is contained in:
Robert Vokac 2024-10-05 14:08:08 +02:00
parent d5c106d8b9
commit 0b2efe092f
Signed by: robertvokac
GPG Key ID: FB9CE8E20AADA55F
3 changed files with 29 additions and 9 deletions

View File

@ -359,12 +359,14 @@ public class DrawCommand implements Command {
int endY = startY + row.getHeight() - 1; int endY = startY + row.getHeight() - 1;
boolean numberDoubleSized = spriteUtilsOptions.isNumberDoubleSized(); boolean numberDoubleSized = spriteUtilsOptions.isNumberDoubleSized();
var enoughSpace = row.getWidth() > (numberDoubleSized ? 6 : 3); if(numberDoubleSized) {
if(!enoughSpace && numberDoubleSized && row.getWidth() > 4) { if(row.getWidth() < 23) {
numberDoubleSized = false; numberDoubleSized = false;
}
} }
if(spriteUtilsOptions.isDrawNumberEnabled() && enoughSpace) {
drawNumber(row.getNumberPerSheet(), g, endX - 2, endY - 1, numberDoubleSized); if(spriteUtilsOptions.isDrawNumberEnabled()) {
drawNumber(row.getNumberPerSheet(), g, endX - 2, endY - 1, numberDoubleSized, spriteUtilsOptions);
} }
g.setStroke(dashedStroke); g.setStroke(dashedStroke);
@ -378,6 +380,10 @@ public class DrawCommand implements Command {
private Stroke configureGraphics(Graphics2D g) { private Stroke configureGraphics(Graphics2D g) {
g.setColor(Color.black); g.setColor(Color.black);
Stroke originalStroke = g.getStroke(); Stroke originalStroke = g.getStroke();
if(false)
{
return originalStroke;
}
Stroke dashedStroke = new BasicStroke(1, BasicStroke.CAP_SQUARE, BasicStroke.CAP_SQUARE, Stroke dashedStroke = new BasicStroke(1, BasicStroke.CAP_SQUARE, BasicStroke.CAP_SQUARE,
0, new float[]{1, 3}, 0); 0, new float[]{1, 3}, 0);
g.setStroke(dashedStroke); g.setStroke(dashedStroke);
@ -405,12 +411,12 @@ public class DrawCommand implements Command {
} }
} }
private void drawNumber(int number, Graphics2D g, int endX, int endY, boolean doubleSize) { private void drawNumber(int number, Graphics2D g, int endX, int endY, boolean doubleSize, SpriteUtilsOptions spriteUtilsOptions) {
LOG.debug("Drawing number {}", number); LOG.debug("Drawing number {}", number);
Point end = new Point(endX, endY); Point end = new Point(endX, endY);
String numberString = String.valueOf(number); String numberString = String.valueOf(number);
if (!doubleSize) { if (!doubleSize && spriteUtilsOptions.isDrawNumberBackgroundEnabled()) {
Color oldColor = g.getColor(); Color oldColor = g.getColor();
g.setColor(Color.WHITE); g.setColor(Color.WHITE);
g.fillRect(endX + 1, endY - 5 * (doubleSize ? 2 : 1), 1, 6 * (doubleSize ? 2 : 1)); g.fillRect(endX + 1, endY - 5 * (doubleSize ? 2 : 1), 1, 6 * (doubleSize ? 2 : 1));
@ -419,11 +425,11 @@ public class DrawCommand implements Command {
for (int i = 0; i < numberString.length(); i++) { for (int i = 0; i < numberString.length(); i++) {
char digit = numberString.charAt(numberString.length() - 1 - i); char digit = numberString.charAt(numberString.length() - 1 - i);
drawANumber(Character.getNumericValue(digit), g, end.x - (i * 4 * (doubleSize ? 2 : 1)), end.y, doubleSize); drawANumber(Character.getNumericValue(digit), g, end.x - (i * 4 * (doubleSize ? 2 : 1)), end.y, doubleSize, spriteUtilsOptions);
} }
} }
private void drawANumber(int number, Graphics2D g, int endX, int endY, boolean doubleSize) { private void drawANumber(int number, Graphics2D g, int endX, int endY, boolean doubleSize, SpriteUtilsOptions spriteUtilsOptions) {
Point end = new Point(endX, endY); Point end = new Point(endX, endY);
var data0 = doubleSize ? digitDataDoubleSized : digitData; var data0 = doubleSize ? digitDataDoubleSized : digitData;
boolean[] data = data0.get((char) ('0' + number)); boolean[] data = data0.get((char) ('0' + number));
@ -435,10 +441,14 @@ public class DrawCommand implements Command {
start.addToX((doubleSize ? -1 : 0) -2 * (doubleSize ? 2 : 1)); start.addToX((doubleSize ? -1 : 0) -2 * (doubleSize ? 2 : 1));
start.addToY((doubleSize ? -2 : 0) -4 * (doubleSize ? 2 : 1)); start.addToY((doubleSize ? -2 : 0) -4 * (doubleSize ? 2 : 1));
Color currentColor = g.getColor(); Color currentColor = g.getColor();
if(spriteUtilsOptions.isDrawNumberBackgroundEnabled()) {
g.setColor(Color.WHITE); g.setColor(Color.WHITE);
g.fillRect(start.x - 1, start.y - 1, 4 * (doubleSize ? 2 : 1), 6 * (doubleSize ? 2 : 1)); g.fillRect(start.x - 1, start.y - 1, 4 * (doubleSize ? 2 : 1), 6 * (doubleSize ? 2 : 1));
g.setColor(currentColor); g.setColor(currentColor);
}
g.setColor(spriteUtilsOptions.isDrawNumberBackgroundEnabled() ? Color.BLACK : Color.YELLOW);
drawANumber(g, start, data, doubleSize); drawANumber(g, start, data, doubleSize);
g.setColor(currentColor);
} }
private void drawANumber(Graphics2D g, Point start, boolean[] data, boolean doubleSize) { private void drawANumber(Graphics2D g, Point start, boolean[] data, boolean doubleSize) {

View File

@ -60,12 +60,19 @@ public class SpriteUtilsArgs {
for (int i = 1;i< args.length;i++) { for (int i = 1;i< args.length;i++) {
String key = args[i]; String key = args[i];
if(!key.startsWith("--")) {
throw new SpriteUtilsException("Invalid option (does not start with --): " + key);
}
if(args.length < (i+2)) { if(args.length < (i+2)) {
throw new SpriteUtilsException("Missing value for option: " + key); throw new SpriteUtilsException("Missing value for option: " + key);
} }
++i; ++i;
String value = args[i]; String value = args[i];
if(value.startsWith("--")) {
throw new SpriteUtilsException("Invalid value (starts with --): " + key);
}
internalMap.put(key, value); internalMap.put(key, value);
} }
for (String key : internalMap.keySet()) { for (String key : internalMap.keySet()) {

View File

@ -41,6 +41,9 @@ public class SpriteUtilsOptions {
public boolean isDrawNumberEnabled() { public boolean isDrawNumberEnabled() {
return spriteUtilsArgs.getOptionalBooleanArgument("--draw-number", true); return spriteUtilsArgs.getOptionalBooleanArgument("--draw-number", true);
} }
public boolean isDrawNumberBackgroundEnabled() {
return spriteUtilsArgs.getOptionalBooleanArgument("--draw-number-background", true);
}
public boolean isNumberDoubleSized() { public boolean isNumberDoubleSized() {
return spriteUtilsArgs.getBooleanArgument("--double-sized-number"); return spriteUtilsArgs.getBooleanArgument("--double-sized-number");
} }