You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by je...@apache.org on 2010/10/04 09:42:03 UTC

svn commit: r1004135 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDGraphicsState.java

Author: jeremias
Date: Mon Oct  4 07:42:02 2010
New Revision: 1004135

URL: http://svn.apache.org/viewvc?rev=1004135&view=rev
Log:
PDFBOX-848: Take offset from CropBox into account when painting a page.

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDGraphicsState.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDGraphicsState.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDGraphicsState.java?rev=1004135&r1=1004134&r2=1004135&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDGraphicsState.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDGraphicsState.java Mon Oct  4 07:42:02 2010
@@ -16,7 +16,6 @@
  */
 package org.apache.pdfbox.pdmodel.graphics;
 
-import java.awt.Dimension;
 import java.awt.Rectangle;
 import java.awt.Shape;
 import java.awt.geom.GeneralPath;
@@ -70,18 +69,25 @@ public class PDGraphicsState implements 
     /**
      * Default constructor.
      */
-    public PDGraphicsState() 
+    public PDGraphicsState()
     {
-    }    
+    }
 
     /**
      * Constructor with a given pagesize to initialize the clipping path.
      * @param page the size of the page
      */
-    public PDGraphicsState(PDRectangle page) 
+    public PDGraphicsState(PDRectangle page)
     {
         currentClippingPath = new GeneralPath(new Rectangle(page.createDimension()));
+        if (page.getLowerLeftX() != 0 || page.getLowerLeftY() != 0)
+        {
+            //Compensate for offset
+            this.currentTransformationMatrix = this.currentTransformationMatrix.multiply(
+                    Matrix.getTranslatingInstance(-page.getLowerLeftX(), -page.getLowerLeftY()));
+        }
     }
+
     /**
      * Get the value of the CTM.
      *
@@ -401,7 +407,7 @@ public class PDGraphicsState implements 
             {
                 clone.setLineDashPattern( (PDLineDashPattern)lineDashPattern.clone() );
             }
-            if (currentClippingPath != null) 
+            if (currentClippingPath != null)
             {
                 clone.setCurrentClippingPath((GeneralPath)currentClippingPath.clone());
             }
@@ -437,9 +443,9 @@ public class PDGraphicsState implements 
      * This will set the current clipping path.
      *
      * @param pCurrentClippingPath The current clipping path.
-     * 
+     *
      */
-    public void setCurrentClippingPath(Shape pCurrentClippingPath) 
+    public void setCurrentClippingPath(Shape pCurrentClippingPath)
     {
         if (pCurrentClippingPath != null)
         {
@@ -464,7 +470,7 @@ public class PDGraphicsState implements 
      *
      * @return The current clipping path.
      */
-    public Shape getCurrentClippingPath() 
+    public Shape getCurrentClippingPath()
     {
         return currentClippingPath;
     }