diff --git a/src/main/java/org/nanoboot/spriteutils/commands/DrawCommand.java b/src/main/java/org/nanoboot/spriteutils/commands/DrawCommand.java index b568bb4..18177ee 100644 --- a/src/main/java/org/nanoboot/spriteutils/commands/DrawCommand.java +++ b/src/main/java/org/nanoboot/spriteutils/commands/DrawCommand.java @@ -359,12 +359,14 @@ public class DrawCommand implements Command { int endY = startY + row.getHeight() - 1; boolean numberDoubleSized = spriteUtilsOptions.isNumberDoubleSized(); - var enoughSpace = row.getWidth() > (numberDoubleSized ? 6 : 3); - if(!enoughSpace && numberDoubleSized && row.getWidth() > 4) { - numberDoubleSized = false; + if(numberDoubleSized) { + if(row.getWidth() < 23) { + 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); @@ -378,6 +380,10 @@ public class DrawCommand implements Command { private Stroke configureGraphics(Graphics2D g) { g.setColor(Color.black); Stroke originalStroke = g.getStroke(); + if(false) + { + return originalStroke; + } Stroke dashedStroke = new BasicStroke(1, BasicStroke.CAP_SQUARE, BasicStroke.CAP_SQUARE, 0, new float[]{1, 3}, 0); 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); Point end = new Point(endX, endY); String numberString = String.valueOf(number); - if (!doubleSize) { + if (!doubleSize && spriteUtilsOptions.isDrawNumberBackgroundEnabled()) { Color oldColor = g.getColor(); g.setColor(Color.WHITE); 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++) { 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); var data0 = doubleSize ? digitDataDoubleSized : digitData; 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.addToY((doubleSize ? -2 : 0) -4 * (doubleSize ? 2 : 1)); Color currentColor = g.getColor(); + if(spriteUtilsOptions.isDrawNumberBackgroundEnabled()) { g.setColor(Color.WHITE); g.fillRect(start.x - 1, start.y - 1, 4 * (doubleSize ? 2 : 1), 6 * (doubleSize ? 2 : 1)); g.setColor(currentColor); + } + g.setColor(spriteUtilsOptions.isDrawNumberBackgroundEnabled() ? Color.BLACK : Color.YELLOW); drawANumber(g, start, data, doubleSize); + g.setColor(currentColor); } private void drawANumber(Graphics2D g, Point start, boolean[] data, boolean doubleSize) { diff --git a/src/main/java/org/nanoboot/spriteutils/core/SpriteUtilsArgs.java b/src/main/java/org/nanoboot/spriteutils/core/SpriteUtilsArgs.java index df7e6d8..8c9c99d 100644 --- a/src/main/java/org/nanoboot/spriteutils/core/SpriteUtilsArgs.java +++ b/src/main/java/org/nanoboot/spriteutils/core/SpriteUtilsArgs.java @@ -60,12 +60,19 @@ public class SpriteUtilsArgs { for (int i = 1;i< args.length;i++) { String key = args[i]; + if(!key.startsWith("--")) { + throw new SpriteUtilsException("Invalid option (does not start with --): " + key); + } if(args.length < (i+2)) { throw new SpriteUtilsException("Missing value for option: " + key); } ++i; String value = args[i]; + if(value.startsWith("--")) { + throw new SpriteUtilsException("Invalid value (starts with --): " + key); + } + internalMap.put(key, value); } for (String key : internalMap.keySet()) { diff --git a/src/main/java/org/nanoboot/spriteutils/core/SpriteUtilsOptions.java b/src/main/java/org/nanoboot/spriteutils/core/SpriteUtilsOptions.java index 12a7a66..ed7e91e 100644 --- a/src/main/java/org/nanoboot/spriteutils/core/SpriteUtilsOptions.java +++ b/src/main/java/org/nanoboot/spriteutils/core/SpriteUtilsOptions.java @@ -41,6 +41,9 @@ public class SpriteUtilsOptions { public boolean isDrawNumberEnabled() { return spriteUtilsArgs.getOptionalBooleanArgument("--draw-number", true); } + public boolean isDrawNumberBackgroundEnabled() { + return spriteUtilsArgs.getOptionalBooleanArgument("--draw-number-background", true); + } public boolean isNumberDoubleSized() { return spriteUtilsArgs.getBooleanArgument("--double-sized-number"); }