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/11 03:14:43 UTC

svn commit: r1894944 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java

Author: tilman
Date: Thu Nov 11 03:14:43 2021
New Revision: 1894944

URL: http://svn.apache.org/viewvc?rev=1894944&view=rev
Log:
PDFBOX-5319: restore reversion but use colorspace instead of Paint to decide whether to intersect

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=1894944&r1=1894943&r2=1894944&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 Thu Nov 11 03:14:43 2021
@@ -797,8 +797,8 @@ public class PageDrawer extends PDFGraph
     @Override
     public void fillPath(int windingRule) throws IOException
     {
-        graphics.setComposite(getGraphicsState().getNonStrokingJavaComposite());
-        graphics.setPaint(getNonStrokingPaint());
+        PDGraphicsState graphicsState = getGraphicsState();
+        graphics.setComposite(graphicsState.getNonStrokingJavaComposite());
         setClip();
         linePath.setWindingRule(windingRule);
 
@@ -816,7 +816,7 @@ public class PageDrawer extends PDFGraph
         }
 
         Shape shape;
-        if (!(graphics.getPaint() instanceof Color))
+        if (graphicsState.getNonStrokingColorSpace() instanceof PDPattern)
         {
             // apply clip to path to avoid oversized device bounds in shading contexts (PDFBOX-2901)
             Area area = new Area(linePath);
@@ -825,7 +825,7 @@ public class PageDrawer extends PDFGraph
             {
                 area.intersect(new Area(clip));
             }
-            intersectShadingBBox(getGraphicsState().getNonStrokingColor(), area);
+            intersectShadingBBox(graphicsState.getNonStrokingColor(), area);
             shape = area;
         }
         else
@@ -834,6 +834,8 @@ public class PageDrawer extends PDFGraph
         }
         if (isContentRendered() && !shape.getPathIterator(null).isDone())
         {
+            // creating Paint is sometimes a costly operation, so avoid if possible
+            graphics.setPaint(getNonStrokingPaint());
             graphics.fill(shape);
         }