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/11/10 19:11:56 UTC
svn commit: r1894928 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
Author: tilman
Date: Wed Nov 10 19:11:56 2021
New Revision: 1894928
URL: http://svn.apache.org/viewvc?rev=1894928&view=rev
Log:
PDFBOX-5319: avoid creating Paint objects and filling when there is nothing to do
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=1894928&r1=1894927&r2=1894928&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 Wed Nov 10 19:11:56 2021
@@ -798,7 +798,6 @@ public class PageDrawer extends PDFGraph
public void fillPath(int windingRule) throws IOException
{
graphics.setComposite(getGraphicsState().getNonStrokingJavaComposite());
- graphics.setPaint(getNonStrokingPaint());
setClip();
linePath.setWindingRule(windingRule);
@@ -832,8 +831,10 @@ public class PageDrawer extends PDFGraph
{
shape = linePath;
}
- if (isContentRendered())
+ if (isContentRendered() && !shape.getPathIterator(null).isDone())
{
+ // creating Paint is sometimes a costly operation, so avoid if possible
+ graphics.setPaint(getNonStrokingPaint());
graphics.fill(shape);
}
@@ -1360,11 +1361,8 @@ public class PageDrawer extends PDFGraph
return;
}
Matrix ctm = getGraphicsState().getCurrentTransformationMatrix();
- Paint paint = shading.toPaint(ctm);
- paint = applySoftMaskToPaint(paint, getGraphicsState().getSoftMask());
graphics.setComposite(getGraphicsState().getNonStrokingJavaComposite());
- graphics.setPaint(paint);
Shape savedClip = graphics.getClip();
graphics.setClip(null);
lastClips = null;
@@ -1395,7 +1393,14 @@ public class PageDrawer extends PDFGraph
area = getGraphicsState().getCurrentClippingPath();
}
}
- graphics.fill(area);
+ if (!area.isEmpty())
+ {
+ // creating Paint is sometimes a costly operation, so avoid if possible
+ Paint paint = shading.toPaint(ctm);
+ paint = applySoftMaskToPaint(paint, getGraphicsState().getSoftMask());
+ graphics.setPaint(paint);
+ graphics.fill(area);
+ }
graphics.setClip(savedClip);
}