Skip to content

Commit 55a4842

Browse files
committed
Allow Java2DRenderer ink to be null (uses current Graphics2D color)
1 parent f09aba0 commit 55a4842

File tree

4 files changed

+27
-18
lines changed

4 files changed

+27
-18
lines changed

src/main/java/uk/org/okapibarcode/output/Java2DRenderer.java

+7-3
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.awt.geom.Rectangle2D;
3333
import java.util.Collections;
3434
import java.util.List;
35+
import java.util.Objects;
3536

3637
import uk.org.okapibarcode.backend.OkapiInternalException;
3738
import uk.org.okapibarcode.backend.Symbol;
@@ -82,11 +83,11 @@ public Java2DRenderer(Graphics2D g2d, double magnification, Color paper, Color i
8283
* @param g2d the graphics to render to
8384
* @param magnification the magnification factor to apply
8485
* @param paper the paper (background) color (may be {@code null})
85-
* @param ink the ink (foreground) color
86+
* @param ink the ink (foreground) color (may be {@code null})
8687
* @param rotation the clockwise rotation of the symbol in degrees (must be a multiple of 90)
8788
*/
8889
public Java2DRenderer(Graphics2D g2d, double magnification, Color paper, Color ink, int rotation) {
89-
this.g2d = g2d;
90+
this.g2d = Objects.requireNonNull(g2d);
9091
this.magnification = magnification;
9192
this.paper = paper;
9293
this.ink = ink;
@@ -135,9 +136,12 @@ public void render(Symbol symbol) {
135136
if (paper != null) {
136137
g2d.setColor(new java.awt.Color(paper.red, paper.green, paper.blue));
137138
g2d.fillRect(0, 0, width, height);
139+
g2d.setColor(oldColor);
138140
}
139141

140-
g2d.setColor(new java.awt.Color(ink.red, ink.green, ink.blue));
142+
if (ink != null) {
143+
g2d.setColor(new java.awt.Color(ink.red, ink.green, ink.blue));
144+
}
141145

142146
for (Rectangle rect : symbol.getRectangles()) {
143147
double x = (rect.x * magnification) + marginX;

src/main/java/uk/org/okapibarcode/output/PostScriptRenderer.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import java.io.IOException;
2525
import java.io.OutputStream;
26+
import java.util.Objects;
2627

2728
import uk.org.okapibarcode.backend.OkapiInternalException;
2829
import uk.org.okapibarcode.backend.Symbol;
@@ -78,10 +79,10 @@ public PostScriptRenderer(OutputStream out, double magnification, Color paper, C
7879
* @param rotation the clockwise rotation of the symbol in degrees (must be a multiple of 90)
7980
*/
8081
public PostScriptRenderer(OutputStream out, double magnification, Color paper, Color ink, int rotation) {
81-
this.out = out;
82+
this.out = Objects.requireNonNull(out);
8283
this.magnification = magnification;
83-
this.paper = paper;
84-
this.ink = ink;
84+
this.paper = Objects.requireNonNull(paper);
85+
this.ink = Objects.requireNonNull(ink);
8586
this.rotation = normalizeRotation(rotation);
8687
}
8788

src/main/java/uk/org/okapibarcode/output/SvgRenderer.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.io.IOException;
2424
import java.io.OutputStream;
2525
import java.io.StringWriter;
26+
import java.util.Objects;
2627

2728
import javax.xml.parsers.DocumentBuilderFactory;
2829
import javax.xml.parsers.ParserConfigurationException;
@@ -98,10 +99,10 @@ public SvgRenderer(OutputStream out, double magnification, Color paper, Color in
9899
* @param rotation the clockwise rotation of the symbol in degrees (must be a multiple of 90)
99100
*/
100101
public SvgRenderer(OutputStream out, double magnification, Color paper, Color ink, boolean xmlProlog, int rotation) {
101-
this.out = out;
102+
this.out = Objects.requireNonNull(out);
102103
this.magnification = magnification;
103-
this.paper = paper;
104-
this.ink = ink;
104+
this.paper = Objects.requireNonNull(paper);
105+
this.ink = Objects.requireNonNull(ink);
105106
this.xmlProlog = xmlProlog;
106107
this.rotation = normalizeRotation(rotation);
107108
}

src/test/java/uk/org/okapibarcode/output/Java2DRendererTest.java

+12-9
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
public class Java2DRendererTest {
4747

4848
@Test
49-
public void testPaperColor() throws Exception {
49+
public void testPaperAndInkColor() throws Exception {
5050

5151
Code128 code128 = new Code128();
5252
code128.setFontName(SymbolTest.DEJA_VU_SANS.getFontName());
@@ -66,22 +66,25 @@ public void testPaperColor() throws Exception {
6666
Graphics2D g2d = image.createGraphics();
6767
g2d.setPaint(new GradientPaint(0, 0, java.awt.Color.ORANGE, width, height, java.awt.Color.GREEN));
6868
g2d.fillRect(0, 0, width, height);
69+
g2d.setColor(java.awt.Color.BLACK);
6970

70-
Java2DRenderer renderer = new Java2DRenderer(g2d, 4, null, Color.BLACK);
71+
Java2DRenderer renderer1 = new Java2DRenderer(g2d, 4, null, Color.BLACK); // null paper -> no background drawn
72+
Java2DRenderer renderer2 = new Java2DRenderer(g2d, 4, null, null); // null paper -> no background drawn, null ink -> uses g2d color
7173
g2d.translate(25, 25);
72-
renderer.render(code128);
74+
renderer1.render(code128);
7375
g2d.translate(300, 0);
74-
renderer.render(datamatrix);
76+
renderer1.render(datamatrix);
7577
g2d.translate(100, 0);
76-
renderer.render(maxicode);
78+
renderer2.render(maxicode);
7779

78-
Java2DRenderer renderer2 = new Java2DRenderer(g2d, 4, Color.WHITE, Color.BLACK);
80+
Java2DRenderer renderer3 = new Java2DRenderer(g2d, 4, Color.WHITE, Color.BLACK);
81+
Java2DRenderer renderer4 = new Java2DRenderer(g2d, 4, Color.WHITE, null); // null ink -> uses g2d color
7982
g2d.translate(-400, 300);
80-
renderer2.render(code128);
83+
renderer3.render(code128);
8184
g2d.translate(300, 0);
82-
renderer2.render(datamatrix);
85+
renderer3.render(datamatrix);
8386
g2d.translate(100, 0);
84-
renderer2.render(maxicode);
87+
renderer4.render(maxicode);
8588

8689
String filename = "java-2d-paper-color.png";
8790
BufferedImage expected = ImageIO.read(getClass().getResourceAsStream(filename));

0 commit comments

Comments
 (0)