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:12 UTC
svn commit: r1888851 - in
/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox:
contentstream/operator/state/SetLineDashPattern.java
rendering/PageDrawer.java
Author: tilman
Date: Sat Apr 17 09:53:12 2021
New Revision: 1888851
URL: http://svn.apache.org/viewvc?rev=1888851&view=rev
Log:
PDFBOX-5168: make non empty dash with only zero invisible
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/state/SetLineDashPattern.java
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/state/SetLineDashPattern.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/state/SetLineDashPattern.java?rev=1888851&r1=1888850&r2=1888851&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/state/SetLineDashPattern.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/state/SetLineDashPattern.java Sat Apr 17 09:53:12 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 (num.floatValue() != 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/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java?rev=1888851&r1=1888850&r2=1888851&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java Sat Apr 17 09:53:12 2021
@@ -750,6 +750,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)
@@ -761,11 +762,29 @@ 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 new Stroke()
+ {
+ @Override
+ public Shape createStrokedShape(Shape p)
+ {
+ return new Area();
+ }
+ };
}
}
int lineCap = Math.min(2, Math.max(0, state.getLineCap()));