You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2021/04/17 09:53:16 UTC
svn commit: r1888852 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox:
contentstream/operator/state/SetLineDashPattern.java
rendering/PageDrawer.java
Author: tilman
Date: Sat Apr 17 09:53:16 2021
New Revision: 1888852
URL: http://svn.apache.org/viewvc?rev=1888852&view=rev
Log:
PDFBOX-5168: make non empty dash with only zero invisible
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/state/SetLineDashPattern.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/state/SetLineDashPattern.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/state/SetLineDashPattern.java?rev=1888852&r1=1888851&r2=1888852&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/state/SetLineDashPattern.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/state/SetLineDashPattern.java Sat Apr 17 09:53:16 2021
@@ -58,7 +58,6 @@ public class SetLineDashPattern extends
COSArray dashArray = (COSArray) base0;
int dashPhase = ((COSNumber) base1).intValue();
- boolean allZero = true;
for (COSBase base : dashArray)
{
if (base instanceof COSNumber)
@@ -66,7 +65,6 @@ public class SetLineDashPattern extends
COSNumber num = (COSNumber) base;
if (Float.compare(num.floatValue(), 0) != 0)
{
- allZero = false;
break;
}
}
@@ -77,11 +75,6 @@ public class SetLineDashPattern extends
break;
}
}
- if (dashArray.size() > 0 && allZero)
- {
- LOG.warn("dash lengths all zero, ignored");
- dashArray = new COSArray();
- }
context.setLineDashPattern(dashArray, dashPhase);
}
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=1888852&r1=1888851&r2=1888852&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 Sat Apr 17 09:53:16 2021
@@ -681,6 +681,7 @@ public class PageDrawer extends PDFGraph
float phaseStart = dashPattern.getPhase();
float[] dashArray = getDashArray(dashPattern);
phaseStart = transformWidth(phaseStart);
+ boolean allZero = true;
// empty dash array is illegal
// avoid also infinite and NaN values (PDFBOX-3360)
@@ -692,11 +693,22 @@ public class PageDrawer extends PDFGraph
{
for (int i = 0; i < dashArray.length; ++i)
{
- if (Float.isInfinite(dashArray[i]) || Float.isNaN(dashArray[i]))
+ float dash = dashArray[i];
+ if (Float.isInfinite(dash) || Float.isNaN(dash))
{
dashArray = null;
+ allZero = false;
break;
}
+ if (dash != 0)
+ {
+ allZero = false;
+ }
+ }
+ if (allZero)
+ {
+ // PDFBOX-5168: make it invisible like Adobe
+ return (Shape p) -> new Area();
}
}
int lineCap = Math.min(2, Math.max(0, state.getLineCap())); // legal values 0..2