You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2014/02/25 00:05:21 UTC

svn commit: r1571482 - in /pdfbox/trunk: pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/gra...

Author: jahewson
Date: Mon Feb 24 23:05:20 2014
New Revision: 1571482

URL: http://svn.apache.org/r1571482
Log:
Overhaul to support uncolored patterns for PDFBOX-1094

Added:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDPatternDictionary.java
      - copied, changed from r1571090, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDPatternResources.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPattern.java
      - copied, changed from r1571090, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPatternResources.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDTilingPattern.java
      - copied, changed from r1571090, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDTilingPatternResources.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/tiling/TilingPaint.java
      - copied, changed from r1571090, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/tiling/ColoredTilingPaint.java
Removed:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDPatternResources.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPatternResources.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDTilingPatternResources.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/tiling/ColoredTilingContext.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/tiling/ColoredTilingPaint.java
Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColor.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDPattern.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/TilingPatternValidationProcess.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java?rev=1571482&r1=1571481&r2=1571482&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java Mon Feb 24 23:05:20 2014
@@ -66,6 +66,9 @@ import org.apache.pdfbox.pdmodel.font.PD
 import org.apache.pdfbox.pdmodel.font.PDType3Font;
 import org.apache.pdfbox.pdmodel.graphics.PDGraphicsState;
 import org.apache.pdfbox.pdmodel.graphics.PDShading;
+import org.apache.pdfbox.pdmodel.graphics.color.PDColor;
+import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
+import org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPattern;
 import org.apache.pdfbox.pdmodel.graphics.shading.AxialShadingPaint;
 import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingResources;
 import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingType2;
@@ -178,25 +181,39 @@ public class PageDrawer extends PDFStrea
                 }
             }
         }
+        graphics = null;
     }
 
     /**
-     * This will draw the page to the requested context.
+     * This will draw the pattern stream to the requested context.
      *
      * @param g The graphics context to draw onto.
-     * @param stream The stream to be used.
-     * @param resources resources to be used when drawing the stream
+     * @param pattern The tiling pattern to be used.
      * @param pageDimension The size of the page to draw.
-     *
      * @throws IOException If there is an IO error while drawing the page.
      */
-    public void drawStream(Graphics g, COSStream stream, PDResources resources, PDRectangle pageDimension)
-            throws IOException
+    public void drawTilingPattern(Graphics2D g, PDTilingPattern pattern, PDRectangle pageDimension,
+                                  Matrix matrix, PDColorSpace colorSpace, PDColor color)
+                                  throws IOException
     {
-        graphics = (Graphics2D) g;
+        graphics = g;
         graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
         graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
-        processStream(resources, stream, pageDimension, 0);
+
+        initStream(pageDimension, 0);
+
+        // transform ctm
+        Matrix concat = getGraphicsState().getCurrentTransformationMatrix().multiply(matrix);
+        getGraphicsState().setCurrentTransformationMatrix(concat);
+
+        // color
+        if (colorSpace != null)
+        {
+            getGraphicsState().setNonStrokingColorSpace(colorSpace);
+            getGraphicsState().setNonStrokingColor(color);
+        }
+
+        processSubStream(pattern.getResources(), (COSStream)pattern.getCOSObject());
     }
 
     /**

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=1571482&r1=1571481&r2=1571482&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 Mon Feb 24 23:05:20 2014
@@ -32,7 +32,7 @@ import org.apache.pdfbox.pdmodel.font.PD
 import org.apache.pdfbox.pdmodel.font.PDFontFactory;
 import org.apache.pdfbox.pdmodel.graphics.PDExtendedGraphicsState;
 import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
-import org.apache.pdfbox.pdmodel.graphics.pattern.PDPatternResources;
+import org.apache.pdfbox.pdmodel.graphics.pattern.PDPatternDictionary;
 import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingResources;
 import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
 import org.apache.pdfbox.pdmodel.graphics.PDXObject;
@@ -55,7 +55,7 @@ public class PDResources implements COSO
     private Map<PDXObject, String> xobjectMappings = null;
     private HashMap<String, PDImageXObject> images = null;
     private Map<String, PDExtendedGraphicsState> graphicsStates = null;
-    private Map<String, PDPatternResources> patterns = null;
+    private Map<String, PDPatternDictionary> patterns = null;
     private Map<String, PDShadingResources> shadings = null;
 
     /**
@@ -465,24 +465,24 @@ public class PDResources implements COSO
 
     /**
      * This will get the map of patterns. This will return null if the underlying resources dictionary does not have a
-     * patterns dictionary. The keys are the pattern name as a String and the values are PDPatternResources objects.
+     * patterns dictionary. The keys are the pattern name as a String and the values are PDPatternDictionary objects.
      * 
      * @return The map of pattern resources objects.
      * 
      * @throws IOException If there is an error getting the pattern resources.
      */
-    public Map<String, PDPatternResources> getPatterns() throws IOException
+    public Map<String, PDPatternDictionary> getPatterns() throws IOException
     {
         if (patterns == null)
         {
             COSDictionary patternsDictionary = (COSDictionary) resources.getDictionaryObject(COSName.PATTERN);
             if (patternsDictionary != null)
             {
-                patterns = new HashMap<String, PDPatternResources>();
+                patterns = new HashMap<String, PDPatternDictionary>();
                 for (COSName name : patternsDictionary.keySet())
                 {
                     COSDictionary dictionary = (COSDictionary) patternsDictionary.getDictionaryObject(name);
-                    patterns.put(name.getName(), PDPatternResources.create(dictionary));
+                    patterns.put(name.getName(), PDPatternDictionary.create(dictionary));
                 }
             }
         }
@@ -494,7 +494,7 @@ public class PDResources implements COSO
      * 
      * @param patternsValue The new map of patterns.
      */
-    public void setPatterns(Map<String, PDPatternResources> patternsValue)
+    public void setPatterns(Map<String, PDPatternDictionary> patternsValue)
     {
         patterns = patternsValue;
         if (patternsValue != null)
@@ -504,7 +504,7 @@ public class PDResources implements COSO
             while (iter.hasNext())
             {
                 String name = iter.next();
-                PDPatternResources pattern = patternsValue.get(name);
+                PDPatternDictionary pattern = patternsValue.get(name);
                 dic.setItem(COSName.getPDFName(name), pattern.getCOSObject());
             }
             resources.setItem(COSName.PATTERN, dic);

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColor.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColor.java?rev=1571482&r1=1571481&r2=1571482&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColor.java Mon Feb 24 23:05:20 2014
@@ -20,12 +20,8 @@ import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSNumber;
 import org.apache.pdfbox.cos.COSString;
-import org.apache.pdfbox.pdmodel.graphics.pattern.PDPatternResources;
 
-import java.awt.Paint;
-import java.io.IOException;
 import java.util.Arrays;
-import java.util.Map;
 
 /**
  * A color value, consisting of one or more color components, or for pattern color spaces,

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java?rev=1571482&r1=1571481&r2=1571482&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java Mon Feb 24 23:05:20 2014
@@ -21,7 +21,7 @@ import org.apache.pdfbox.cos.COSArray;
 
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.common.COSObjectable;
-import org.apache.pdfbox.pdmodel.graphics.pattern.PDPatternResources;
+import org.apache.pdfbox.pdmodel.graphics.pattern.PDPatternDictionary;
 
 import java.awt.Color;
 import java.awt.Paint;
@@ -66,7 +66,7 @@ public abstract class PDColorSpace imple
      */
     public static PDColorSpace create(COSBase colorSpace,
                                       Map<String, PDColorSpace> colorSpaces,
-                                      Map<String, PDPatternResources> patterns)
+                                      Map<String, PDPatternDictionary> patterns)
                                       throws IOException
     {
         if (colorSpace instanceof COSName)
@@ -137,7 +137,7 @@ public abstract class PDColorSpace imple
             }
             else if (name == COSName.PATTERN)
             {
-                return new PDPattern(patterns);
+                return new PDPattern(patterns, PDColorSpace.create(array.get(1)));
             }
             else
             {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDPattern.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDPattern.java?rev=1571482&r1=1571481&r2=1571482&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDPattern.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDPattern.java Mon Feb 24 23:05:20 2014
@@ -19,10 +19,10 @@ package org.apache.pdfbox.pdmodel.graphi
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.pdmodel.graphics.pattern.PDPatternResources;
-import org.apache.pdfbox.pdmodel.graphics.pattern.PDShadingPatternResources;
-import org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPatternResources;
-import org.apache.pdfbox.pdmodel.graphics.pattern.tiling.ColoredTilingPaint;
+import org.apache.pdfbox.pdmodel.graphics.pattern.PDPatternDictionary;
+import org.apache.pdfbox.pdmodel.graphics.pattern.PDShadingPattern;
+import org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPattern;
+import org.apache.pdfbox.pdmodel.graphics.pattern.tiling.TilingPaint;
 import org.apache.pdfbox.pdmodel.graphics.shading.AxialShadingPaint;
 import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingResources;
 import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingType1;
@@ -53,16 +53,26 @@ public final class PDPattern extends PDS
 {
     private static final Log LOG = LogFactory.getLog(PDPattern.class);
 
-    private Map<String, PDPatternResources> patterns;
+    private Map<String, PDPatternDictionary> patterns;
+    private PDColorSpace underlyingColorSpace;
 
     /**
-     * Creates a new Pattern color space.
+     * Creates a new pattern color space.
      */
-    public PDPattern(Map<String, PDPatternResources> patterns)
+    public PDPattern(Map<String, PDPatternDictionary> patterns)
     {
         this.patterns = patterns;
     }
 
+    /**
+     * Creates a new uncolored tiling pattern color space.
+     */
+    public PDPattern(Map<String, PDPatternDictionary> patterns, PDColorSpace colorSpace)
+    {
+        this.patterns = patterns;
+        this.underlyingColorSpace = colorSpace;
+    }
+
     @Override
     public String getName()
     {
@@ -113,35 +123,32 @@ public final class PDPattern extends PDS
             throw new IOException("pattern " + color.getPatternName() + " was not found");
         }
 
-        PDPatternResources pattern = patterns.get(color.getPatternName());
-        if (pattern instanceof PDTilingPatternResources)
+        PDPatternDictionary pattern = patterns.get(color.getPatternName());
+        if (pattern instanceof PDTilingPattern)
         {
-            return toTilingPaint((PDTilingPatternResources)pattern, color);
+            return toTilingPaint((PDTilingPattern)pattern, color);
         }
         else
         {
-            return toShadingPaint((PDShadingPatternResources)pattern, pageHeight);
+            return toShadingPaint((PDShadingPattern)pattern, pageHeight);
         }
     }
 
-    public Paint toTilingPaint(PDTilingPatternResources tilingPattern, PDColor color)
+    public Paint toTilingPaint(PDTilingPattern tilingPattern, PDColor color)
             throws IOException
     {
-        if (tilingPattern.getPatternType() == PDTilingPatternResources.COLORED_TILING_PATTERN)
+        if (tilingPattern.getPaintType() == PDTilingPattern.PAINT_COLORED)
         {
             // colored tiling pattern
-            // TODO we should be passing the color to ColoredTilingPaint
-            return new ColoredTilingPaint(tilingPattern);
+            return new TilingPaint(tilingPattern);
         }
         else
         {
             // uncolored tiling pattern
-            // TODO ...
-            LOG.debug("Not implemented: uncoloured tiling patterns");
-            return new Color(0, 0, 0, 0); // transparent
+            return new TilingPaint(tilingPattern, underlyingColorSpace, color);
         }
     }
-    public Paint toShadingPaint(PDShadingPatternResources shadingPattern, int pageHeight)
+    public Paint toShadingPaint(PDShadingPattern shadingPattern, int pageHeight)
             throws IOException
     {
         PDShadingResources shadingResources = shadingPattern.getShading();

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDPatternDictionary.java (from r1571090, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDPatternResources.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDPatternDictionary.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDPatternDictionary.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDPatternResources.java&r1=1571090&r2=1571482&rev=1571482&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDPatternResources.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDPatternDictionary.java Mon Feb 24 23:05:20 2014
@@ -16,7 +16,6 @@
  */
 package org.apache.pdfbox.pdmodel.graphics.pattern;
 
-
 import java.io.IOException;
 
 import org.apache.pdfbox.cos.COSBase;
@@ -25,37 +24,63 @@ import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.common.COSObjectable;
 
 /**
- * This represents the resources for a pattern color space.
+ * A Pattern dictionary from a page's resources.
+ * @author Andreas Lehmkühler
  */
-public abstract class PDPatternResources implements COSObjectable
+public abstract class PDPatternDictionary implements COSObjectable
 {
+    /** Tiling pattern type. */
+    public static final int TYPE_TILING_PATTERN = 1;
+
+    /** Shading pattern type. */
+    public static final int TYPE_SHADING_PATTERN = 2;
+
+    /**
+     * Create the correct PD Model pattern based on the COS base pattern.
+     * @param resourceDictionary the COS pattern dictionary
+     * @return the newly created pattern resources object
+     * @throws IOException If we are unable to create the PDPattern object.
+     */
+    public static PDPatternDictionary create(COSDictionary resourceDictionary) throws IOException
+    {
+        PDPatternDictionary pattern;
+        int patternType = resourceDictionary.getInt(COSName.PATTERN_TYPE, 0);
+        switch (patternType)
+        {
+            case TYPE_TILING_PATTERN:
+                pattern = new PDTilingPattern(resourceDictionary);
+                break;
+            case TYPE_SHADING_PATTERN:
+                pattern = new PDShadingPattern(resourceDictionary);
+                break;
+            default:
+                throw new IOException("Error: Unknown pattern type " + patternType);
+        }
+        return pattern;
+    }
+
     private COSDictionary patternDictionary;
 
-    public static final int TILING_PATTERN = 1;
-    public static final int SHADING_PATTERN = 2;
-    
     /**
-     * Default constructor.
+     * Creates a new Pattern dictionary.
      */
-    public PDPatternResources()
+    public PDPatternDictionary()
     {
         patternDictionary = new COSDictionary();
         patternDictionary.setName(COSName.TYPE, COSName.PATTERN.getName());
     }
 
     /**
-     * Prepopulated pattern resources.
-     *
+     * Creates a new Pattern dictionary from the given COS dictionary.
      * @param resourceDictionary The COSDictionary for this pattern resource.
      */
-    public PDPatternResources( COSDictionary resourceDictionary )
+    public PDPatternDictionary(COSDictionary resourceDictionary)
     {
         patternDictionary = resourceDictionary;
     }
 
     /**
      * This will get the underlying dictionary.
-     *
      * @return The dictionary for these pattern resources.
      */
     public COSDictionary getCOSDictionary()
@@ -65,7 +90,6 @@ public abstract class PDPatternResources
 
     /**
      * Convert this standard java object to a COS object.
-     *
      * @return The cos object that matches this Java object.
      */
     public COSBase getCOSObject()
@@ -75,27 +99,24 @@ public abstract class PDPatternResources
 
     /**
      * Sets the filter entry of the encryption dictionary.
-     *
      * @param filter The filter name.
      */
     public void setFilter(String filter)
     {
-        patternDictionary.setItem( COSName.FILTER, COSName.getPDFName( filter ) );
+        patternDictionary.setItem(COSName.FILTER, COSName.getPDFName(filter));
     }
 
     /**
      * Get the name of the filter.
-     *
      * @return The filter name contained in this encryption dictionary.
      */
     public String getFilter()
     {
-        return patternDictionary.getNameAsString( COSName.FILTER );
+        return patternDictionary.getNameAsString(COSName.FILTER);
     }
 
     /**
      * This will set the length of the content stream.
-     *
      * @param length The new stream length.
      */
     public void setLength(int length)
@@ -105,17 +126,15 @@ public abstract class PDPatternResources
 
     /**
      * This will return the length of the content stream.
-     *
      * @return The length of the content stream
      */
     public int getLength()
     {
-        return patternDictionary.getInt( COSName.LENGTH, 0 );
+        return patternDictionary.getInt(COSName.LENGTH, 0);
     }
 
     /**
      * This will set the paint type.
-     *
      * @param paintType The new paint type.
      */
     public void setPaintType(int paintType)
@@ -125,7 +144,6 @@ public abstract class PDPatternResources
 
     /**
      * This will return the paint type.
-     *
      * @return The type of object that this is.
      */
     public String getType()
@@ -135,7 +153,6 @@ public abstract class PDPatternResources
 
     /**
      * This will set the pattern type.
-     *
      * @param patternType The new pattern type.
      */
     public void setPatternType(int patternType)
@@ -145,35 +162,7 @@ public abstract class PDPatternResources
 
     /**
      * This will return the pattern type.
-     *
      * @return The pattern type
      */
     public abstract int getPatternType();
-    
-    /**
-     * Create the correct PD Model pattern based on the COS base pattern.
-     * 
-     * @param resourceDictionary the COS pattern dictionary
-     * 
-     * @return the newly created pattern resources object
-     * 
-     * @throws IOException If we are unable to create the PDPattern object.
-     */
-    public static PDPatternResources create(COSDictionary resourceDictionary) throws IOException
-    {
-        PDPatternResources pattern = null;
-        int patternType = resourceDictionary.getInt( COSName.PATTERN_TYPE, 0 );
-        switch (patternType) 
-        {
-            case TILING_PATTERN: 
-                pattern = new PDTilingPatternResources(resourceDictionary);
-                break;
-            case SHADING_PATTERN: 
-                pattern = new PDShadingPatternResources(resourceDictionary);
-                break;
-            default:
-                throw new IOException( "Error: Unknown pattern type " + patternType );
-        }
-        return pattern;
-    }
 }

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPattern.java (from r1571090, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPatternResources.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPattern.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPattern.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPatternResources.java&r1=1571090&r2=1571482&rev=1571482&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPatternResources.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPattern.java Mon Feb 24 23:05:20 2014
@@ -29,45 +29,42 @@ import org.apache.pdfbox.pdmodel.graphic
 import org.apache.pdfbox.util.Matrix;
 
 /**
- * This represents the resources for a shading pattern.
- *
+ * A shading pattern dictionary.
+ * @author Andreas Lehmkühler
  */
-public class PDShadingPatternResources extends PDPatternResources
+public class PDShadingPattern extends PDPatternDictionary
 {
     private PDExtendedGraphicsState extendedGraphicsState;
     private PDShadingResources shading;
     private COSArray matrix = null;
 
     /**
-     * Default constructor.
+     * Creates a new shading pattern.
      */
-    public PDShadingPatternResources()
+    public PDShadingPattern()
     {
         super();
-        getCOSDictionary().setInt(COSName.PATTERN_TYPE, PDPatternResources.SHADING_PATTERN);
+        getCOSDictionary().setInt(COSName.PATTERN_TYPE, PDPatternDictionary.TYPE_SHADING_PATTERN);
     }
 
     /**
-     * Prepopulated pattern resources.
-     *
+     * Creates a new shading pattern from the given COS dictionary.
      * @param resourceDictionary The COSDictionary for this pattern resource.
      */
-    public PDShadingPatternResources( COSDictionary resourceDictionary )
+    public PDShadingPattern(COSDictionary resourceDictionary)
     {
         super(resourceDictionary);
     }
 
-    /**
-     * {@inheritDoc}
-     */
+    @Override
     public int getPatternType()
     {
-        return PDPatternResources.SHADING_PATTERN;
+        return PDPatternDictionary.TYPE_SHADING_PATTERN;
     }
 
     /**
      * This will get the optional Matrix of a Pattern.
-     * It maps the form space into the user space
+     * It maps the form space into the user space.
      * @return the form matrix
      */
     public Matrix getMatrix()
@@ -108,7 +105,6 @@ public class PDShadingPatternResources e
 
     /**
      * This will get the extended graphics state for this pattern.
-     *
      * @return The extended graphics state for this pattern.
      */
     public PDExtendedGraphicsState getExtendedGraphicsState()
@@ -126,7 +122,6 @@ public class PDShadingPatternResources e
 
     /**
      * This will set the extended graphics state for this pattern.
-     *
      * @param extendedGraphicsState The new extended graphics state for this pattern.
      */
     public void setExtendedGraphicsState( PDExtendedGraphicsState extendedGraphicsState )
@@ -144,9 +139,7 @@ public class PDShadingPatternResources e
 
     /**
      * This will get the shading resources for this pattern.
-     *
-     * @return The shading resourcesfor this pattern.
-     * 
+     * @return The shading resources for this pattern.
      * @throws IOException if something went wrong
      */
     public PDShadingResources getShading() throws IOException
@@ -164,7 +157,6 @@ public class PDShadingPatternResources e
 
     /**
      * This will set the shading resources for this pattern.
-     *
      * @param shadingResources The new shading resources for this pattern.
      */
     public void setShading( PDShadingResources shadingResources )

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDTilingPattern.java (from r1571090, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDTilingPatternResources.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDTilingPattern.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDTilingPattern.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDTilingPatternResources.java&r1=1571090&r2=1571482&rev=1571482&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDTilingPatternResources.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDTilingPattern.java Mon Feb 24 23:05:20 2014
@@ -28,62 +28,52 @@ import org.apache.pdfbox.pdmodel.common.
 import org.apache.pdfbox.util.Matrix;
 
 /**
- * This represents the resources for a tiling pattern.
+ * A tiling pattern dictionary.
+ * @author Andreas Lehmkühler
  */
-public class PDTilingPatternResources extends PDPatternResources
+public class PDTilingPattern extends PDPatternDictionary
 {
-    /**
-     * paint type 1 = colored tiling pattern.
-     */
-    public static final int COLORED_TILING_PATTERN = 1;
-    /**
-     * paint type 2 = uncolored tiling pattern.
-     */
-    public static final int UNCOLORED_TILING_PATTERN = 2;
+    /** paint type 1 = colored tiling pattern. */
+    public static final int PAINT_COLORED = 1;
 
-    /**
-     * tiling type 1 = constant spacing.
-     */
+    /** paint type 2 = uncolored tiling pattern. */
+    public static final int PAINT_UNCOLORED = 2;
+
+    /** tiling type 1 = constant spacing.*/
     public static final int TILING_CONSTANT_SPACING = 1;
-    /**
-     * tiling type 2 = no distortion.
-     */
+
+    /**  tiling type 2 = no distortion. */
     public static final int TILING_NO_DISTORTION = 2;
-    /**
-     * tiling type 3 = constant spacing and faster tiling.
-     */
+
+    /** tiling type 3 = constant spacing and faster tiling. */
     public static final int TILING_CONSTANT_SPACING_FASTER_TILING = 3;
 
     /**
-     * Default constructor.
+     * Creates a new tiling pattern.
      */
-    public PDTilingPatternResources()
+    public PDTilingPattern()
     {
         super();
-        getCOSDictionary().setInt(COSName.PATTERN_TYPE, PDPatternResources.TILING_PATTERN);
+        getCOSDictionary().setInt(COSName.PATTERN_TYPE, PDPatternDictionary.TYPE_TILING_PATTERN);
     }
 
     /**
-     * Prepopulated pattern resources.
-     *
+     * Creates a new tiling pattern from the given COS dictionary.
      * @param resourceDictionary The COSDictionary for this pattern resource.
      */
-    public PDTilingPatternResources( COSDictionary resourceDictionary )
+    public PDTilingPattern(COSDictionary resourceDictionary)
     {
         super(resourceDictionary);
     }
 
-    /**
-     * {@inheritDoc}
-     */
+    @Override
     public int getPatternType()
     {
-        return PDPatternResources.TILING_PATTERN;
+        return PDPatternDictionary.TYPE_TILING_PATTERN;
     }
 
     /**
      * This will set the length of the content stream.
-     *
      * @param length The new stream length.
      */
     public void setLength(int length)
@@ -93,7 +83,6 @@ public class PDTilingPatternResources ex
 
     /**
      * This will return the length of the content stream.
-     *
      * @return The length of the content stream
      */
     public int getLength()
@@ -103,7 +92,6 @@ public class PDTilingPatternResources ex
 
     /**
      * This will set the paint type.
-     *
      * @param paintType The new paint type.
      */
     public void setPaintType(int paintType)
@@ -113,7 +101,6 @@ public class PDTilingPatternResources ex
 
     /**
      * This will return the paint type.
-     *
      * @return The paint type
      */
     public int getPaintType()
@@ -123,7 +110,6 @@ public class PDTilingPatternResources ex
 
     /**
      * This will set the tiling type.
-     *
      * @param tilingType The new tiling type.
      */
     public void setTilingType(int tilingType)
@@ -133,7 +119,6 @@ public class PDTilingPatternResources ex
 
     /**
      * This will return the tiling type.
-     *
      * @return The tiling type
      */
     public int getTilingType()
@@ -143,7 +128,6 @@ public class PDTilingPatternResources ex
 
     /**
      * This will set the XStep value.
-     *
      * @param xStep The new XStep value.
      */
     public void setXStep(int xStep)
@@ -153,7 +137,6 @@ public class PDTilingPatternResources ex
 
     /**
      * This will return the XStep value.
-     *
      * @return The XStep value
      */
     public int getXStep()
@@ -163,7 +146,6 @@ public class PDTilingPatternResources ex
 
     /**
      * This will set the YStep value.
-     *
      * @param yStep The new YStep value.
      */
     public void setYStep(int yStep)
@@ -173,7 +155,6 @@ public class PDTilingPatternResources ex
 
     /**
      * This will return the YStep value.
-     *
      * @return The YStep value
      */
     public int getYStep()
@@ -184,13 +165,13 @@ public class PDTilingPatternResources ex
     /**
      * This will get the resources for this pattern.
      * This will return null if no resources are available at this level.
-     *
      * @return The resources for this pattern.
      */
     public PDResources getResources()
     {
         PDResources retval = null;
-        COSDictionary resources = (COSDictionary)getCOSDictionary().getDictionaryObject( COSName.RESOURCES );
+        COSDictionary resources = (COSDictionary)getCOSDictionary()
+                .getDictionaryObject( COSName.RESOURCES );
         if( resources != null )
         {
             retval = new PDResources( resources );
@@ -200,7 +181,6 @@ public class PDTilingPatternResources ex
 
     /**
      * This will set the resources for this pattern.
-     *
      * @param resources The new resources for this pattern.
      */
     public void setResources( PDResources resources )
@@ -235,7 +215,6 @@ public class PDTilingPatternResources ex
 
     /**
      * This will set the BBox (bounding box) for this Pattern.
-     *
      * @param bbox The new BBox for this Pattern.
      */
     public void setBBox(PDRectangle bbox)
@@ -252,24 +231,24 @@ public class PDTilingPatternResources ex
 
     /**
      * This will get the optional Matrix of a Pattern.
-     * It maps the form space into the user space
+     * It maps the form space into the user space.
      * @return the form matrix
      */
     public Matrix getMatrix()
     {
-        Matrix retval = null;
-        COSArray array = (COSArray)getCOSDictionary().getDictionaryObject( COSName.MATRIX );
-        if( array != null )
-        {
-            retval = new Matrix();
-            retval.setValue(0, 0, ((COSNumber) array.get(0)).floatValue());
-            retval.setValue(0, 1, ((COSNumber) array.get(1)).floatValue());
-            retval.setValue(1, 0, ((COSNumber) array.get(2)).floatValue());
-            retval.setValue(1, 1, ((COSNumber) array.get(3)).floatValue());
-            retval.setValue(2, 0, ((COSNumber) array.get(4)).floatValue());
-            retval.setValue(2, 1, ((COSNumber) array.get(5)).floatValue());
+        Matrix matrix = null;
+        COSArray array = (COSArray)getCOSDictionary().getDictionaryObject(COSName.MATRIX);
+        if (array != null)
+        {
+            matrix = new Matrix();
+            matrix.setValue(0, 0, ((COSNumber) array.get(0)).floatValue());
+            matrix.setValue(0, 1, ((COSNumber) array.get(1)).floatValue());
+            matrix.setValue(1, 0, ((COSNumber) array.get(2)).floatValue());
+            matrix.setValue(1, 1, ((COSNumber) array.get(3)).floatValue());
+            matrix.setValue(2, 0, ((COSNumber) array.get(4)).floatValue());
+            matrix.setValue(2, 1, ((COSNumber) array.get(5)).floatValue());
         }
-        return retval;
+        return matrix;
     }
 
     /**

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/tiling/TilingPaint.java (from r1571090, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/tiling/ColoredTilingPaint.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/tiling/TilingPaint.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/tiling/TilingPaint.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/tiling/ColoredTilingPaint.java&r1=1571090&r2=1571482&rev=1571482&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/tiling/ColoredTilingPaint.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/tiling/TilingPaint.java Mon Feb 24 23:05:20 2014
@@ -16,15 +16,12 @@
  */
 package org.apache.pdfbox.pdmodel.graphics.pattern.tiling;
 
-import java.awt.Paint;
-import java.awt.PaintContext;
+import java.awt.Graphics2D;
 import java.awt.Rectangle;
-import java.awt.RenderingHints;
+import java.awt.TexturePaint;
 import java.awt.Transparency;
 import java.awt.color.ColorSpace;
 import java.awt.geom.AffineTransform;
-import java.awt.geom.Rectangle2D;
-import java.awt.image.AffineTransformOp;
 import java.awt.image.BufferedImage;
 import java.awt.image.ColorModel;
 import java.awt.image.ComponentColorModel;
@@ -32,111 +29,88 @@ import java.awt.image.DataBuffer;
 import java.awt.image.WritableRaster;
 import java.io.IOException;
 
-import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.pdfviewer.PageDrawer;
 import org.apache.pdfbox.pdmodel.common.PDRectangle;
-import org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPatternResources;
+import org.apache.pdfbox.pdmodel.graphics.color.PDColor;
+import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
+import org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPattern;
 import org.apache.pdfbox.util.Matrix;
 
 /**
- * This represents the Paint of an axial shading.
- * 
+ * AWT Paint for a tiling pattern, which consists of a small repeating graphical figure.
+ * @author Andreas Lehmkühler
+ * @author John Hewson
  */
-public class ColoredTilingPaint implements Paint
+public class TilingPaint extends TexturePaint
 {
-    private PDTilingPatternResources patternResources;
-    private ColorModel outputColorModel;
-
     /**
-     * Constructor.
-     * 
-     * @param resources tiling pattern resources
-     * 
+     * Creates a new colored tiling Paint.
+     * @param pattern tiling pattern dictionary
      */
-    public ColoredTilingPaint(PDTilingPatternResources resources)
+    public TilingPaint(PDTilingPattern pattern) throws IOException
     {
-        patternResources = resources;
+        super(getTilingImage(pattern, null ,null), getTransformedRect(pattern));
     }
 
     /**
-     * {@inheritDoc}
+     * Creates a new uncolored tiling Paint.
+     * @param pattern tiling pattern dictionary
+     * @param colorSpace color space for this tiling
+     * @param color color for this tiling
      */
-    public int getTransparency()
+    public TilingPaint(PDTilingPattern pattern, PDColorSpace colorSpace, PDColor color)
+            throws IOException
     {
-        return Transparency.TRANSLUCENT;
+        super(getTilingImage(pattern, colorSpace, color), getTransformedRect(pattern));
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    public PaintContext createContext(ColorModel cm, Rectangle deviceBounds, Rectangle2D userBounds,
-            AffineTransform xform, RenderingHints hints)
+    //  gets rect in parent content stream coordinates
+    private static Rectangle getTransformedRect(PDTilingPattern pattern)
     {
-        // get the pattern matrix
-        Matrix patternMatrix = patternResources.getMatrix();
-        AffineTransform patternAT = patternMatrix != null ? patternMatrix.createAffineTransform() : null;
-
-        // get the bounding box
-        PDRectangle box = patternResources.getBBox();
-        Rectangle2D rect = new Rectangle((int) box.getLowerLeftX(), (int) box.getLowerLeftY(),
-                (int) box.getWidth(), (int) box.getHeight());
-        
-        rect = xform.createTransformedShape(rect).getBounds2D();
-        int width = (int) rect.getWidth();
-        int height = (int) rect.getHeight();
-        
-        if (patternAT != null)
-        {
-            rect = patternAT.createTransformedShape(rect).getBounds2D();
-        }
-        PDRectangle bBox = new PDRectangle((float) rect.getMinX(), (float) rect.getMinY(), (float) rect.getMaxX(),
-                (float) rect.getMaxY());
-
-        // xStep + yStep
-        double[] steps = new double[] { patternResources.getXStep(), patternResources.getYStep() };
-        xform.deltaTransform(steps, 0, steps, 0, 1);
-        if (patternAT != null)
-        {
-            patternAT.deltaTransform(steps, 0, steps, 0, 1);
-        }
-        int xStep = (int) (steps[0]);
-        int yStep = (int) (steps[1]);
+        AffineTransform at = pattern.getMatrix().createAffineTransform();
+        Rectangle rect = new Rectangle(pattern.getBBox().createDimension());
+        return at.createTransformedShape(rect).getBounds();
+    }
 
+    // gets image in parent stream coordinates
+    private static BufferedImage getTilingImage(PDTilingPattern pattern, PDColorSpace colorSpace,
+                                                PDColor color) throws IOException
+    {
         ColorSpace outputCS = ColorSpace.getInstance(ColorSpace.CS_sRGB);
-        outputColorModel = new ComponentColorModel(outputCS, true, false, Transparency.TRANSLUCENT,
-                DataBuffer.TYPE_BYTE);
-        WritableRaster raster = outputColorModel.createCompatibleWritableRaster(width, height);
-
-        BufferedImage image = new BufferedImage(outputColorModel, raster, false, null);
-        BufferedImage tilingImage = null;
-        try
-        {
-            PageDrawer drawer = new PageDrawer();
-            drawer.drawStream(image.getGraphics(), (COSStream) patternResources.getCOSObject(),
-                    patternResources.getResources(), box);
-            drawer.dispose();
-        }
-        catch (IOException e)
-        {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-
-        AffineTransform imageTransform = null;
-        if (patternAT != null && !patternAT.isIdentity())
-        {
-            // get the scaling factor for each dimension
-            imageTransform = AffineTransform.getScaleInstance(patternMatrix.getXScale(), patternMatrix.getYScale());
-        }
-        else
-        {
-            imageTransform = new AffineTransform();
-        }
-        imageTransform.scale(1.0, -1.0);
-        imageTransform.translate(0, -height);
-        AffineTransformOp scaleOP = new AffineTransformOp(imageTransform, AffineTransformOp.TYPE_BILINEAR);
-        tilingImage = scaleOP.filter(image, null);
+        ColorModel cm = new ComponentColorModel(outputCS, true, false,
+                Transparency.TRANSLUCENT, DataBuffer.TYPE_BYTE);
+
+        Rectangle rect = getTransformedRect(pattern);
+
+        // create raster
+        WritableRaster raster = cm.createCompatibleWritableRaster((int)rect.getWidth(),
+                                                                  (int)rect.getHeight());
+        BufferedImage image = new BufferedImage(cm, raster, false, null);
+
+        // TODO xStep and yStep
 
-        return new ColoredTilingContext(outputColorModel, tilingImage.getData(), xStep, yStep, bBox);
+        // undo translation
+        Matrix matrix = (Matrix)pattern.getMatrix().clone();
+        matrix.setValue(2, 0, matrix.getValue(2, 0) - (float)rect.getX()); // tx
+        matrix.setValue(2, 1, matrix.getValue(2, 1) - (float)rect.getY()); // ty
+
+        int width = (int)rect.getWidth();
+        int height = (int)rect.getHeight();
+
+        PageDrawer drawer = new PageDrawer();
+        PDRectangle pdRect = new PDRectangle(0, 0, width, height);
+
+        Graphics2D graphics = image.createGraphics();
+        drawer.drawTilingPattern(graphics, pattern, pdRect, matrix, colorSpace, color);
+        drawer.dispose();
+        graphics.dispose();
+
+        return image;
+    }
+
+    @Override
+    public int getTransparency()
+    {
+        return Transparency.TRANSLUCENT;
     }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java?rev=1571482&r1=1571481&r2=1571482&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java Mon Feb 24 23:05:20 2014
@@ -57,10 +57,6 @@ import org.apache.pdfbox.util.operator.O
  */
 public class PDFStreamEngine
 {
-
-    /**
-     * Log instance.
-     */
     private static final Log LOG = LogFactory.getLog(PDFStreamEngine.class);
 
     /**
@@ -187,17 +183,12 @@ public class PDFStreamEngine
     }
 
     /**
-     * This will process the contents of the stream.
-     * 
-     * @param resources The location to retrieve resources.
-     * @param cosStream the Stream to execute.
+     * Initialises a stream for processing.
+     *
      * @param drawingSize the size of the page
      * @param rotation the page rotation
-     * 
-     * @throws IOException if there is an error accessing the stream.
      */
-    public void processStream(PDResources resources, COSStream cosStream, PDRectangle drawingSize, int rotation)
-            throws IOException
+    protected void initStream(PDRectangle drawingSize, int rotation)
     {
         drawingRectangle = drawingSize;
         pageRotation = rotation;
@@ -206,6 +197,22 @@ public class PDFStreamEngine
         textLineMatrix = null;
         graphicsStack.clear();
         streamResourcesStack.clear();
+    }
+
+    /**
+     * This will initialise and process the contents of the stream.
+     * 
+     * @param resources The location to retrieve resources.
+     * @param cosStream the Stream to execute.
+     * @param drawingSize the size of the page
+     * @param rotation the page rotation
+     * 
+     * @throws IOException if there is an error accessing the stream.
+     */
+    public void processStream(PDResources resources, COSStream cosStream, PDRectangle drawingSize, int rotation)
+            throws IOException
+    {
+        initStream(drawingSize, rotation);
         processSubStream(resources, cosStream);
     }
 

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java?rev=1571482&r1=1571481&r2=1571482&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java Mon Feb 24 23:05:20 2014
@@ -40,8 +40,8 @@ import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.pdmodel.PDResources;
 import org.apache.pdfbox.pdmodel.font.PDFont;
-import org.apache.pdfbox.pdmodel.graphics.pattern.PDPatternResources;
-import org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPatternResources;
+import org.apache.pdfbox.pdmodel.graphics.pattern.PDPatternDictionary;
+import org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPattern;
 import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingResources;
 import org.apache.pdfbox.pdmodel.graphics.PDXObject;
 import org.apache.pdfbox.preflight.PreflightConstants;
@@ -152,12 +152,12 @@ public class ResourcesValidationProcess 
     {
         try
         {
-            Map<String, PDPatternResources> patternResources = resources.getPatterns();
+            Map<String, PDPatternDictionary> patternResources = resources.getPatterns();
             if (patternResources != null)
             {
-                for (Entry<String, PDPatternResources> entry : patternResources.entrySet())
+                for (Entry<String, PDPatternDictionary> entry : patternResources.entrySet())
                 {
-                    if (entry.getValue() instanceof PDTilingPatternResources)
+                    if (entry.getValue() instanceof PDTilingPattern)
                     {
                         ContextHelper.validateElement(context, entry.getValue(), TILING_PATTERN_PROCESS);
                     }

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/TilingPatternValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/TilingPatternValidationProcess.java?rev=1571482&r1=1571481&r2=1571482&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/TilingPatternValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/TilingPatternValidationProcess.java Mon Feb 24 23:05:20 2014
@@ -29,7 +29,7 @@ import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.pdmodel.PDPage;
 import org.apache.pdfbox.pdmodel.PDResources;
-import org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPatternResources;
+import org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPattern;
 import org.apache.pdfbox.preflight.PreflightConstants;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.PreflightPath;
@@ -48,13 +48,13 @@ public class TilingPatternValidationProc
         if (vPath.isEmpty()) {
             return;
         }
-        else if (!vPath.isExpectedType(PDTilingPatternResources.class))
+        else if (!vPath.isExpectedType(PDTilingPattern.class))
         {
             context.addValidationError(new ValidationError(PreflightConstants.ERROR_GRAPHIC_MISSING_OBJECT, "Tiling pattern validation required at least a PDPage"));
         }
         else
         {
-            PDTilingPatternResources tilingPattern = (PDTilingPatternResources) vPath.peek();
+            PDTilingPattern tilingPattern = (PDTilingPattern) vPath.peek();
             PDPage page = vPath.getClosestPathElement(PDPage.class);
 
             checkMandatoryFields(context, page, tilingPattern);
@@ -63,7 +63,7 @@ public class TilingPatternValidationProc
         }
     }
 
-    protected void parseResources(PreflightContext context, PDPage page, PDTilingPatternResources pattern)
+    protected void parseResources(PreflightContext context, PDPage page, PDTilingPattern pattern)
             throws ValidationException
             {
         PDResources resources = pattern.getResources();
@@ -76,7 +76,7 @@ public class TilingPatternValidationProc
     /**
      * Validate the Pattern content like Color and Show Text Operators using an instance of ContentStreamWrapper.
      */
-    protected void parsePatternContent(PreflightContext context, PDPage page, PDTilingPatternResources pattern)
+    protected void parsePatternContent(PreflightContext context, PDPage page, PDTilingPattern pattern)
             throws ValidationException
             {
         ContentStreamWrapper csWrapper = new ContentStreamWrapper(context, page);
@@ -86,7 +86,7 @@ public class TilingPatternValidationProc
     /**
      * This method checks if required fields are present.
      */
-    protected void checkMandatoryFields(PreflightContext context, PDPage page, PDTilingPatternResources pattern)
+    protected void checkMandatoryFields(PreflightContext context, PDPage page, PDTilingPattern pattern)
     {
         COSDictionary dictionary = pattern.getCOSDictionary();
         boolean res = dictionary.getItem(COSName.RESOURCES) != null;