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 2014/12/21 12:10:29 UTC

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

Author: tilman
Date: Sun Dec 21 11:10:29 2014
New Revision: 1647122

URL: http://svn.apache.org/r1647122
Log:
PDFBOX-2576: move matrix code to abstract class

Modified:
    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/PDShadingPattern.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/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=1647122&r1=1647121&r2=1647122&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 Dec 21 11:10:29 2014
@@ -16,16 +16,21 @@
  */
 package org.apache.pdfbox.pdmodel.graphics.pattern;
 
+import java.awt.geom.AffineTransform;
 import java.io.IOException;
 
+import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSFloat;
 import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.cos.COSNumber;
 import org.apache.pdfbox.pdmodel.common.COSObjectable;
+import org.apache.pdfbox.util.Matrix;
 
 /**
  * A Pattern dictionary from a page's resources.
- * @author Andreas Lehmkühler
+ * @author Andreas Lehmkühler
  */
 public abstract class PDAbstractPattern implements COSObjectable
 {
@@ -59,7 +64,7 @@ public abstract class PDAbstractPattern
         return pattern;
     }
 
-    private COSDictionary patternDictionary;
+    private final COSDictionary patternDictionary;
 
     /**
      * Creates a new Pattern dictionary.
@@ -92,6 +97,7 @@ public abstract class PDAbstractPattern
      * Convert this standard java object to a COS object.
      * @return The cos object that matches this Java object.
      */
+    @Override
     public COSBase getCOSObject()
     {
         return patternDictionary;
@@ -165,4 +171,46 @@ public abstract class PDAbstractPattern
      * @return The pattern type
      */
     public abstract int getPatternType();
+
+    /**
+     * Returns the pattern matrix, or the identity matrix is none is available.
+     */
+    public Matrix getMatrix()
+    {
+        Matrix matrix;
+        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());
+        }
+        else
+        {
+            // default value is the identity matrix
+            matrix = new Matrix();
+        }
+        return matrix;
+    }
+
+    /**
+     * Sets the optional Matrix entry for the Pattern.
+     * @param transform the transformation matrix
+     */
+    public void setMatrix(AffineTransform transform)
+    {
+        COSArray matrix = new COSArray();
+        double[] values = new double[6];
+        transform.getMatrix(values);
+        for (double v : values)
+        {
+            matrix.add(new COSFloat((float)v));
+        }
+        getCOSDictionary().setItem(COSName.MATRIX, matrix);
+    }
+
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPattern.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPattern.java?rev=1647122&r1=1647121&r2=1647122&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPattern.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPattern.java Sun Dec 21 11:10:29 2014
@@ -16,22 +16,17 @@
  */
 package org.apache.pdfbox.pdmodel.graphics.pattern;
 
-import java.awt.geom.AffineTransform;
 import java.io.IOException;
 
-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.cos.COSNumber;
 import org.apache.pdfbox.pdmodel.graphics.state.PDExternalGraphicsState;
 import org.apache.pdfbox.pdmodel.graphics.shading.PDShading;
-import org.apache.pdfbox.util.Matrix;
 
 /**
  * A shading pattern dictionary.
  *
- * @author Andreas Lehmkühler
+ * @author Andreas Lehmkühler
  */
 public class PDShadingPattern extends PDAbstractPattern
 {
@@ -63,47 +58,6 @@ public class PDShadingPattern extends PD
     }
 
     /**
-     * Returns the pattern matrix.
-     */
-    public Matrix getMatrix()
-    {
-        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());
-        }
-        else
-        {
-            // default value is the identity matrix
-            matrix = new Matrix();
-        }
-        return matrix;
-    }
-
-    /**
-     * Sets the optional Matrix entry for the Pattern.
-     * @param transform the transformation matrix
-     */
-    public void setMatrix(AffineTransform transform)
-    {
-        COSArray matrix = new COSArray();
-        double[] values = new double[6];
-        transform.getMatrix(values);
-        for (double v : values)
-        {
-            matrix.add(new COSFloat((float)v));
-        }
-        getCOSDictionary().setItem(COSName.MATRIX, matrix);
-    }
-
-    /**
      * This will get the external graphics state for this pattern.
      * @return The extended graphics state for this pattern.
      */

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=1647122&r1=1647121&r2=1647122&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 Dec 21 11:10:29 2014
@@ -16,12 +16,9 @@
  */
 package org.apache.pdfbox.pdmodel.graphics.pattern;
 
-import java.awt.geom.AffineTransform;
-
 import org.apache.pdfbox.contentstream.PDContentStream;
 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.cos.COSNumber;
 import org.apache.pdfbox.cos.COSStream;
@@ -32,7 +29,7 @@ import org.apache.pdfbox.util.Matrix;
 /**
  * A tiling pattern dictionary.
  *
- * @author Andreas Lehmkühler
+ * @author Andreas Lehmkühler
  */
 public class PDTilingPattern extends PDAbstractPattern implements PDContentStream
 {
@@ -179,6 +176,7 @@ public class PDTilingPattern extends PDA
      * This will return null if no resources are available at this level.
      * @return The resources for this pattern.
      */
+    @Override
     public PDResources getResources()
     {
         PDResources retval = null;
@@ -249,7 +247,8 @@ public class PDTilingPattern extends PDA
     @Override
     public Matrix getMatrix()
     {
-        Matrix matrix = null;
+        //TODO this method can be deleted if the "repair mechanism for invalid matrices" is deleted
+        Matrix matrix;
         COSArray array = (COSArray)getCOSDictionary().getDictionaryObject(COSName.MATRIX);
         if (array != null)
         {
@@ -291,19 +290,4 @@ public class PDTilingPattern extends PDA
         return matrix;
     }
 
-    /**
-     * Sets the optional Matrix entry for the Pattern.
-     * @param transform the transformation matrix
-     */
-    public void setMatrix(AffineTransform transform)
-    {
-        COSArray matrix = new COSArray();
-        double[] values = new double[6];
-        transform.getMatrix(values);
-        for (double v : values)
-        {
-            matrix.add(new COSFloat((float)v));
-        }
-        getCOSDictionary().setItem(COSName.MATRIX, matrix);
-    }
 }