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/05 15:52:20 UTC

svn commit: r1894761 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java

Author: tilman
Date: Fri Nov  5 15:52:20 2021
New Revision: 1894761

URL: http://svn.apache.org/viewvc?rev=1894761&view=rev
Log:
PDFBOX-5313: avoid NPE as suggested by Henry Iguaro; save and restore clip; closes #133

Modified:
    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/rendering/PageDrawer.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java?rev=1894761&r1=1894760&r2=1894761&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 Fri Nov  5 15:52:20 2021
@@ -896,6 +896,11 @@ public class PageDrawer extends PDFGraph
         {
             // apply clip to path to avoid oversized device bounds in shading contexts (PDFBOX-2901)
             Area area = new Area(linePath);
+            Shape clip = graphics.getClip();
+            if (clip != null)
+            {
+                area.intersect(new Area(clip));
+            }
             area.intersect(new Area(graphics.getClip()));
             intersectShadingBBox(getGraphicsState().getNonStrokingColor(), area);
             shape = area;
@@ -1437,6 +1442,7 @@ public class PageDrawer extends PDFGraph
 
         graphics.setComposite(getGraphicsState().getNonStrokingJavaComposite());
         graphics.setPaint(paint);
+        Shape savedClip = graphics.getClip();
         graphics.setClip(null);
         lastClips = null;
 
@@ -1467,6 +1473,7 @@ public class PageDrawer extends PDFGraph
             }
         }
         graphics.fill(area);
+        graphics.setClip(savedClip);
     }
 
     @Override