Author: tilman
Date: Mon Dec  3 14:22:54 2018
New Revision: 1848044

URL: http://svn.apache.org/viewvc?rev=1848044&view=rev
Log:
PDFBOX-4391: switch off antialiasing when rendering on single color device 
because wrong rendering of barcodes

Modified:
    
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java?rev=1848044&r1=1848043&r2=1848044&view=diff
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java 
Mon Dec  3 14:22:54 2018
@@ -18,8 +18,10 @@ package org.apache.pdfbox.rendering;
 
 import java.awt.BasicStroke;
 import java.awt.Color;
+import java.awt.DisplayMode;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
+import java.awt.GraphicsConfiguration;
 import java.awt.GraphicsDevice;
 import java.awt.Paint;
 import java.awt.Point;
@@ -217,7 +219,29 @@ public class PageDrawer extends PDFGraph
         graphics.setRenderingHint(RenderingHints.KEY_RENDERING,
                                   RenderingHints.VALUE_RENDER_QUALITY);
         graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
-                                  RenderingHints.VALUE_ANTIALIAS_ON);
+                                  isBitonal() ?
+                                        RenderingHints.VALUE_ANTIALIAS_OFF :
+                                        RenderingHints.VALUE_ANTIALIAS_ON);
+    }
+
+    private boolean isBitonal()
+    {
+        GraphicsConfiguration deviceConfiguration = 
graphics.getDeviceConfiguration();
+        if (deviceConfiguration == null)
+        {
+            return false;
+        }
+        GraphicsDevice device = deviceConfiguration.getDevice();
+        if (device == null)
+        {
+            return false;
+        }
+        DisplayMode displayMode = device.getDisplayMode();
+        if (displayMode == null)
+        {
+            return false;
+        }
+        return displayMode.getBitDepth() == 1;
     }
 
     /**


Reply via email to