Author: tilman
Date: Wed Dec 10 12:02:08 2025
New Revision: 1930427
Log:
PDFBOX-5660: optimize, as suggested by Valery Bokov, closes #367
Modified:
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
Modified:
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
==============================================================================
---
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
Wed Dec 10 11:29:52 2025 (r1930426)
+++
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
Wed Dec 10 12:02:08 2025 (r1930427)
@@ -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;
@@ -2036,14 +2037,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;
@@ -2052,7 +2054,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())
@@ -2065,7 +2067,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;
}
}
@@ -2085,12 +2087,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;
}