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 2020/05/24 10:06:27 UTC

svn commit: r1878079 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel: PDResources.java graphics/pattern/PDAbstractPattern.java graphics/pattern/PDTilingPattern.java

Author: tilman
Date: Sun May 24 10:06:26 2020
New Revision: 1878079

URL: http://svn.apache.org/viewvc?rev=1878079&view=rev
Log:
PDFBOX-4844: pass resource cache to pattern

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDAbstractPattern.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDTilingPattern.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java?rev=1878079&r1=1878078&r2=1878079&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java Sun May 24 10:06:26 2020
@@ -307,7 +307,7 @@ public final class PDResources implement
         COSBase base = get(COSName.PATTERN, name);
         if (base instanceof COSDictionary)
         {
-            pattern = PDAbstractPattern.create((COSDictionary) base);
+            pattern = PDAbstractPattern.create((COSDictionary) base, getResourceCache());
         }
 
         if (cache != null)

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDAbstractPattern.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDAbstractPattern.java?rev=1878079&r1=1878078&r2=1878079&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDAbstractPattern.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDAbstractPattern.java Sun May 24 10:06:26 2020
@@ -23,6 +23,7 @@ import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSFloat;
 import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.pdmodel.ResourceCache;
 import org.apache.pdfbox.pdmodel.common.COSObjectable;
 import org.apache.pdfbox.util.Matrix;
 
@@ -40,17 +41,18 @@ public abstract class PDAbstractPattern
     /**
      * Create the correct PD Model pattern based on the COS base pattern.
      * @param dictionary the COS pattern dictionary
+     * @param resourceCache the resource cache, may be null, useful for tiling patterns.
      * @return the newly created pattern object
      * @throws IOException If we are unable to create the PDPattern object.
      */
-    public static PDAbstractPattern create(COSDictionary dictionary) throws IOException
+    public static PDAbstractPattern create(COSDictionary dictionary, ResourceCache resourceCache) throws IOException
     {
         PDAbstractPattern pattern;
         int patternType = dictionary.getInt(COSName.PATTERN_TYPE, 0);
         switch (patternType)
         {
             case TYPE_TILING_PATTERN:
-                pattern = new PDTilingPattern(dictionary);
+                pattern = new PDTilingPattern(dictionary, resourceCache);
                 break;
             case TYPE_SHADING_PATTERN:
                 pattern = new PDShadingPattern(dictionary);

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDTilingPattern.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDTilingPattern.java?rev=1878079&r1=1878078&r2=1878079&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDTilingPattern.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDTilingPattern.java Sun May 24 10:06:26 2020
@@ -25,6 +25,7 @@ import org.apache.pdfbox.cos.COSDictiona
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.pdmodel.PDResources;
+import org.apache.pdfbox.pdmodel.ResourceCache;
 import org.apache.pdfbox.pdmodel.common.PDRectangle;
 import org.apache.pdfbox.pdmodel.common.PDStream;
 
@@ -49,6 +50,8 @@ public class PDTilingPattern extends PDA
     /** tiling type 3 = constant spacing and faster tiling. */
     public static final int TILING_CONSTANT_SPACING_FASTER_TILING = 3;
 
+    private final ResourceCache resourceCache;
+
     /**
      * Creates a new tiling pattern.
      */
@@ -60,6 +63,7 @@ public class PDTilingPattern extends PDA
         
         // Resources required per PDF specification; when missing, pattern is not displayed in Adobe Reader
         setResources(new PDResources());
+        resourceCache = null;
     }
 
     /**
@@ -68,7 +72,18 @@ public class PDTilingPattern extends PDA
      */
     public PDTilingPattern(COSDictionary dictionary)
     {
+        this(dictionary, null);
+    }
+
+    /**
+     * Creates a new tiling pattern from the given COS dictionary.
+     * @param dictionary The COSDictionary for this pattern.
+     * @param resourceCache The resource cache, may be null
+     */
+    public PDTilingPattern(COSDictionary dictionary, ResourceCache resourceCache)
+    {
         super(dictionary);
+        this.resourceCache = resourceCache;
     }
 
     @Override
@@ -178,7 +193,7 @@ public class PDTilingPattern extends PDA
         COSBase base = getCOSObject().getDictionaryObject(COSName.RESOURCES);
         if (base instanceof COSDictionary)
         {
-            retval = new PDResources((COSDictionary) base);
+            retval = new PDResources((COSDictionary) base, resourceCache);
         }
         return retval;
     }