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 2025/12/10 12:02:18 UTC

svn commit: r1930429 - pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering

Author: tilman
Date: Wed Dec 10 12:02:17 2025
New Revision: 1930429

Log:
PDFBOX-5660: optimize, as suggested by Valery Bokov, closes #367

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
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java	Wed Dec 10 12:02:12 2025	(r1930428)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java	Wed Dec 10 12:02:17 2025	(r1930429)
@@ -69,6 +69,7 @@ import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.pdmodel.PDResources;
 import org.apache.pdfbox.pdmodel.common.PDRectangle;
 import org.apache.pdfbox.pdmodel.common.function.PDFunction;
@@ -2035,14 +2036,15 @@ public class PageDrawer extends PDFGraph
 
     private boolean hasBlendMode(PDTransparencyGroup group, Set<COSBase> groupsDone)
     {
-        if (groupsDone.contains(group.getCOSObject()))
+        COSStream groupCOSStream = group.getCOSObject();
+        if (groupsDone.contains(groupCOSStream))
         {
             // The group is being processed. Avoid endless recursion.
             return false;
         }
-        groupsDone.add(group.getCOSObject());
+        groupsDone.add(groupCOSStream);
 
-        Boolean val = blendModeMap.get(group.getCOSObject());
+        Boolean val = blendModeMap.get(groupCOSStream);
         if (val != null)
         {
             return val;
@@ -2051,7 +2053,7 @@ public class PageDrawer extends PDFGraph
         PDResources resources = group.getResources();
         if (resources == null)
         {
-            blendModeMap.put(group.getCOSObject(), false);
+            blendModeMap.put(groupCOSStream, false);
             return false;
         }
         for (COSName name : resources.getExtGStateNames())
@@ -2064,7 +2066,7 @@ public class PageDrawer extends PDFGraph
             BlendMode blendMode = extGState.getBlendMode();
             if (blendMode != BlendMode.NORMAL)
             {
-                blendModeMap.put(group.getCOSObject(), true);
+                blendModeMap.put(groupCOSStream, true);
                 return true;
             }
         }
@@ -2084,12 +2086,12 @@ public class PageDrawer extends PDFGraph
             if (xObject instanceof PDTransparencyGroup &&
                 hasBlendMode((PDTransparencyGroup)xObject, groupsDone))
             {
-                blendModeMap.put(group.getCOSObject(), true);
+                blendModeMap.put(groupCOSStream, true);
                 return true;
             }
         }
 
-        blendModeMap.put(group.getCOSObject(), false);
+        blendModeMap.put(groupCOSStream, false);
         return false;
     }