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);
     }