diff --git a/src/main/java/ch/fritteli/labyrinth/generator/renderer/pdf/Generator.java b/src/main/java/ch/fritteli/labyrinth/generator/renderer/pdf/Generator.java index e2a68d3..d683241 100644 --- a/src/main/java/ch/fritteli/labyrinth/generator/renderer/pdf/Generator.java +++ b/src/main/java/ch/fritteli/labyrinth/generator/renderer/pdf/Generator.java @@ -33,15 +33,13 @@ class Generator { final PDDocument pdDocument = new PDDocument(); final PDDocumentInformation info = new PDDocumentInformation(); - info.setTitle("Labyrinth " + this.labyrinth.getWidth() + "x" + this.labyrinth.getHeight() + ", ID " + - this.labyrinth.getRandomSeed()); + info.setTitle("Labyrinth %sx%s, ID %s".formatted(this.labyrinth.getWidth(), this.labyrinth.getHeight(), this.labyrinth.getRandomSeed())); pdDocument.setDocumentInformation(info); final PDPage puzzlePage = new PDPage(new PDRectangle(pageWidth, pageHeight)); final PDPage solutionPage = new PDPage(new PDRectangle(pageWidth, pageHeight)); pdDocument.addPage(puzzlePage); pdDocument.addPage(solutionPage); - try (final PDPageContentStream puzzlePageContentStream = new PDPageContentStream(pdDocument, puzzlePage); - final PDPageContentStream solutionPageContentStream = new PDPageContentStream(pdDocument, solutionPage)) { + try (final PDPageContentStream puzzlePageContentStream = new PDPageContentStream(pdDocument, puzzlePage); final PDPageContentStream solutionPageContentStream = new PDPageContentStream(pdDocument, solutionPage)) { setUpPageContentStream(puzzlePageContentStream); setUpPageContentStream(solutionPageContentStream); this.drawHorizontalLines(puzzlePageContentStream, solutionPageContentStream); @@ -69,8 +67,7 @@ class Generator { } private void drawHorizontalLines(@NonNull final PDPageContentStream... contentStreams) throws IOException { - // PDF has the origin in the lower left corner. We want it in the upper left corner, hence some magic is - // required. + // PDF has the origin in the lower left corner. We want it in the upper left corner, hence some magic is required. Coordinate coordinate = new Coordinate(0f, 0f); // Draw the TOP borders of all tiles. for (int y = 0; y < this.labyrinth.getHeight(); y++) { @@ -138,8 +135,7 @@ class Generator { } private void drawVerticalLines(@NonNull final PDPageContentStream... contentStreams) throws IOException { - // PDF has the origin in the lower left corner. We want it in the upper left corner, hence some magic is - // required. + // PDF has the origin in the lower left corner. We want it in the upper left corner, hence some magic is required. Coordinate coordinate = new Coordinate(0f, 0f); // Draw the LEFT borders of all tiles. for (int x = 0; x < this.labyrinth.getWidth(); x++) { @@ -209,8 +205,7 @@ class Generator { private void drawSolution(@NonNull final PDPageContentStream pageContentStream) throws IOException { // Draw the solution in red pageContentStream.setStrokingColor(Color.RED); - // PDF has the origin in the lower left corner. We want it in the upper left corner, hence some magic is - // required. + // PDF has the origin in the lower left corner. We want it in the upper left corner, hence some magic is required. final Position end = this.labyrinth.getEnd(); Position currentPosition = this.labyrinth.getStart(); Position previousPosition = null; @@ -227,8 +222,7 @@ class Generator { } @NonNull - private Position findNextSolutionPosition(@Nullable final Position previousPosition, - @NonNull final Position currentPosition) { + private Position findNextSolutionPosition(@Nullable final Position previousPosition, @NonNull final Position currentPosition) { final Tile currentTile = this.labyrinth.getTileAt(currentPosition).get(); for (final Direction direction : Direction.values()) { if (!currentTile.hasWallAt(direction)) { @@ -287,8 +281,7 @@ class Generator { } private float calcY(final int y) { - return (Generator.this.labyrinth.getHeight() - y) * PDFRenderer.SCALE - PDFRenderer.SCALE / 2 + - PDFRenderer.MARGIN; + return (Generator.this.labyrinth.getHeight() - y) * PDFRenderer.SCALE - PDFRenderer.SCALE / 2 + PDFRenderer.MARGIN; } } } diff --git a/src/main/java/ch/fritteli/labyrinth/generator/serialization/LabyrinthInputStream.java b/src/main/java/ch/fritteli/labyrinth/generator/serialization/LabyrinthInputStream.java index 6489288..cf619c8 100644 --- a/src/main/java/ch/fritteli/labyrinth/generator/serialization/LabyrinthInputStream.java +++ b/src/main/java/ch/fritteli/labyrinth/generator/serialization/LabyrinthInputStream.java @@ -6,10 +6,6 @@ import lombok.NonNull; import java.io.ByteArrayInputStream; -import static ch.fritteli.labyrinth.generator.serialization.SerializerDeserializer.MAGIC_BYTE_1; -import static ch.fritteli.labyrinth.generator.serialization.SerializerDeserializer.MAGIC_BYTE_2; -import static ch.fritteli.labyrinth.generator.serialization.SerializerDeserializer.VERSION_BYTE; - public class LabyrinthInputStream extends ByteArrayInputStream { public LabyrinthInputStream(@NonNull final byte[] buf) { super(buf); @@ -33,15 +29,15 @@ public class LabyrinthInputStream extends ByteArrayInputStream { public void checkHeader() { final byte magic1 = this.readByte(); - if (magic1 != MAGIC_BYTE_1) { + if (magic1 != SerializerDeserializer.MAGIC_BYTE_1) { throw new IllegalArgumentException("Invalid labyrinth data."); } final byte magic2 = this.readByte(); - if (magic2 != MAGIC_BYTE_2) { + if (magic2 != SerializerDeserializer.MAGIC_BYTE_2) { throw new IllegalArgumentException("Invalid labyrinth data."); } final int version = this.readByte(); - if (version != VERSION_BYTE) { + if (version != SerializerDeserializer.VERSION_BYTE) { throw new IllegalArgumentException("Unknown Labyrinth data version: " + version); } } diff --git a/src/main/java/ch/fritteli/labyrinth/generator/serialization/SerializerDeserializer.java b/src/main/java/ch/fritteli/labyrinth/generator/serialization/SerializerDeserializer.java index b17ab56..244c3f6 100644 --- a/src/main/java/ch/fritteli/labyrinth/generator/serialization/SerializerDeserializer.java +++ b/src/main/java/ch/fritteli/labyrinth/generator/serialization/SerializerDeserializer.java @@ -46,9 +46,9 @@ import java.util.EnumSet; */ @UtilityClass public class SerializerDeserializer { - static final byte MAGIC_BYTE_1 = 0x1a; - static final byte MAGIC_BYTE_2 = (byte) 0xb1; - static final byte VERSION_BYTE = 0x01; + final byte MAGIC_BYTE_1 = 0x1a; + final byte MAGIC_BYTE_2 = (byte) 0xb1; + final byte VERSION_BYTE = 0x01; private final byte TOP_BIT = 0b0000_0001; private final byte RIGHT_BIT = 0b0000_0010; @@ -89,8 +89,7 @@ public class SerializerDeserializer { final Constructor constructor = Labyrinth.class.getDeclaredConstructor(Tile[][].class, Integer.TYPE, Integer.TYPE, Long.TYPE); constructor.setAccessible(true); return constructor.newInstance(field, width, height, randomSeed); - } catch (final NoSuchMethodException | IllegalAccessException | InstantiationException | - InvocationTargetException e) { + } catch (@NonNull final NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) { throw new RuntimeException("Can not deserialize Labyrinth from labyrinth data.", e); } } @@ -98,11 +97,10 @@ public class SerializerDeserializer { @NonNull private Tile createTile(@NonNull final EnumSet walls, boolean solution) { try { - @NonNull final Constructor constructor = Tile.class.getDeclaredConstructor(EnumSet.class, Boolean.TYPE); + final Constructor constructor = Tile.class.getDeclaredConstructor(EnumSet.class, Boolean.TYPE); constructor.setAccessible(true); return constructor.newInstance(walls, solution); - } catch (final NoSuchMethodException | InstantiationException | IllegalAccessException | - InvocationTargetException e) { + } catch (@NonNull final NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) { throw new RuntimeException("Can not deserialize Tile from labyrinth data.", e); } }