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 2024/01/17 10:19:59 UTC
svn commit: r1915284 - /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
Author: tilman
Date: Wed Jan 17 10:19:59 2024
New Revision: 1915284
URL: http://svn.apache.org/viewvc?rev=1915284&view=rev
Log:
PDFBOX-5754: cache hasBlendMode results
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
URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java?rev=1915284&r1=1915283&r2=1915284&view=diff
==============================================================================
--- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java (original)
+++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java Wed Jan 17 10:19:59 2024
@@ -174,6 +174,7 @@ public class PageDrawer extends PDFGraph
private final RenderingHints renderingHints;
private final float imageDownscalingOptimizationThreshold;
private LookupTable invTable = null;
+ private final Map<COSBase,Boolean> blendModeMap = new HashMap<>();
/**
* Default annotations filter, returns all annotations
@@ -1965,14 +1966,21 @@ public class PageDrawer extends PDFGraph
{
if (groupsDone.contains(group.getCOSObject()))
{
- // The group was already processed. Avoid endless recursion.
+ // The group is being processed. Avoid endless recursion.
return false;
}
groupsDone.add(group.getCOSObject());
+ Boolean val = blendModeMap.get(group.getCOSObject());
+ if (val != null)
+ {
+ return val;
+ }
+
PDResources resources = group.getResources();
if (resources == null)
{
+ blendModeMap.put(group.getCOSObject(), false);
return false;
}
for (COSName name : resources.getExtGStateNames())
@@ -1985,6 +1993,7 @@ public class PageDrawer extends PDFGraph
BlendMode blendMode = extGState.getBlendMode();
if (blendMode != BlendMode.NORMAL)
{
+ blendModeMap.put(group.getCOSObject(), true);
return true;
}
}
@@ -2004,10 +2013,12 @@ public class PageDrawer extends PDFGraph
if (xObject instanceof PDTransparencyGroup &&
hasBlendMode((PDTransparencyGroup)xObject, groupsDone))
{
+ blendModeMap.put(group.getCOSObject(), true);
return true;
}
}
+ blendModeMap.put(group.getCOSObject(), false);
return false;
}