From bff4ea078c0434416ea07155dc5dde3acfc40630 Mon Sep 17 00:00:00 2001 From: Project Nayuki Date: Wed, 28 Jul 2021 19:12:53 +0000 Subject: [PATCH] Added parameters for custom module colors when rendering to SVG. --- .../fastqrcodegen/QrCodeGeneratorDemo.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/io/nayuki/fastqrcodegen/QrCodeGeneratorDemo.java b/src/io/nayuki/fastqrcodegen/QrCodeGeneratorDemo.java index 33c2ff4..3f76d83 100644 --- a/src/io/nayuki/fastqrcodegen/QrCodeGeneratorDemo.java +++ b/src/io/nayuki/fastqrcodegen/QrCodeGeneratorDemo.java @@ -62,9 +62,9 @@ public final class QrCodeGeneratorDemo { File imgFile = new File("hello-world-QR.png"); // File path for output ImageIO.write(img, "png", imgFile); // Write image to file - String svg = toSvgString(qr, 4); // Convert to SVG XML code - File svgFile = new File("hello-world-QR.svg"); // File path for output - Files.write(svgFile.toPath(), // Write image to file + String svg = toSvgString(qr, 4, "#FFFFFF", "#000000"); // Convert to SVG XML code + File svgFile = new File("hello-world-QR.svg"); // File path for output + Files.write(svgFile.toPath(), // Write image to file svg.getBytes(StandardCharsets.UTF_8)); } @@ -228,12 +228,16 @@ public final class QrCodeGeneratorDemo { * number of border modules. The string always uses Unix newlines (\n), regardless of the platform. * @param qr the QR Code to render (not {@code null}) * @param border the number of border modules to add, which must be non-negative + * @param lightColor the color to use for light modules, in any format supported by CSS, not {@code null} + * @param darkColor the color to use for dark modules, in any format supported by CSS, not {@code null} * @return a string representing the QR Code as an SVG XML document - * @throws NullPointerException if the QR Code is {@code null} + * @throws NullPointerException if any object is {@code null} * @throws IllegalArgumentException if the border is negative */ - private static String toSvgString(QrCode qr, int border) { + private static String toSvgString(QrCode qr, int border, String lightColor, String darkColor) { Objects.requireNonNull(qr); + Objects.requireNonNull(lightColor); + Objects.requireNonNull(darkColor); if (border < 0) throw new IllegalArgumentException("Border must be non-negative"); long brd = border; @@ -242,7 +246,7 @@ public final class QrCodeGeneratorDemo { .append("\n") .append(String.format("\n", qr.size + brd * 2)) - .append("\t\n") + .append("\t\n") .append("\t\n") + .append("\" fill=\"" + darkColor + "\"/>\n") .append("\n") .toString(); }