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/10/31 07:47:28 UTC
svn commit: r1635700 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox:
contentstream/PDFStreamEngine.java pdmodel/common/PDRectangle.java
pdmodel/graphics/state/PDGraphicsState.java rendering/PageDrawer.java
util/Matrix.java
Author: jahewson
Date: Fri Oct 31 06:47:27 2014
New Revision: 1635700
URL: http://svn.apache.org/r1635700
Log:
PDFBOX-2423: Use GeneralPath rather than Rectangle2D
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDRectangle.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDGraphicsState.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/Matrix.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java?rev=1635700&r1=1635699&r2=1635700&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java Fri Oct 31 06:47:27 2014
@@ -514,7 +514,7 @@ public class PDFStreamEngine
if (rectangle != null)
{
PDRectangle clip = rectangle.transform(getGraphicsState().getCurrentTransformationMatrix());
- getGraphicsState().intersectClippingPath(new Area(clip.toRectangle2D()));
+ getGraphicsState().intersectClippingPath(new Area(clip.toGeneralPath()));
}
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDRectangle.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDRectangle.java?rev=1635700&r1=1635699&r2=1635700&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDRectangle.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDRectangle.java Fri Oct 31 06:47:27 2014
@@ -16,8 +16,8 @@
*/
package org.apache.pdfbox.pdmodel.common;
+import java.awt.geom.GeneralPath;
import java.awt.geom.Point2D;
-import java.awt.geom.Rectangle2D;
import org.apache.pdfbox.cos.COSArray;
import org.apache.pdfbox.cos.COSBase;
import org.apache.pdfbox.cos.COSFloat;
@@ -25,7 +25,6 @@ import org.apache.pdfbox.cos.COSNumber;
import org.apache.fontbox.util.BoundingBox;
-import java.awt.Dimension;
import org.apache.pdfbox.util.Matrix;
/**
@@ -307,11 +306,22 @@ public class PDRectangle implements COSO
}
/**
- * Returns a new Rectangle2D which is equivalent to this PDRectangle.
+ * Returns a general path equivalent to this rectangle. This method avoids the problems
+ * caused by Rectangle2D not working well with -ve rectangles.
*/
- public Rectangle2D toRectangle2D()
+ public GeneralPath toGeneralPath()
{
- return new Rectangle2D.Float(getLowerLeftX(), getLowerLeftY(), getWidth(), getHeight());
+ float x1 = getLowerLeftX();
+ float y1 = getLowerLeftY();
+ float x2 = getUpperRightX();
+ float y2 = getUpperRightY();
+ GeneralPath path = new GeneralPath();
+ path.moveTo(x1, y1);
+ path.lineTo(x2, y1);
+ path.lineTo(x2, y2);
+ path.lineTo(x1, y2);
+ path.closePath();
+ return path;
}
/**
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDGraphicsState.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDGraphicsState.java?rev=1635700&r1=1635699&r2=1635700&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDGraphicsState.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDGraphicsState.java Fri Oct 31 06:47:27 2014
@@ -74,7 +74,7 @@ public class PDGraphicsState implements
*/
public PDGraphicsState(PDRectangle page)
{
- clippingPath = new Area(new GeneralPath(page.toRectangle2D()));
+ clippingPath = new Area(page.toGeneralPath());
}
/**
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java?rev=1635700&r1=1635699&r2=1635700&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java Fri Oct 31 06:47:27 2014
@@ -826,7 +826,7 @@ public class PageDrawer extends PDFGraph
// check underlying g2d
Area groupClip = new Area(getGraphicsState().getCurrentClippingPath());
- Area clippingPath = new Area(new GeneralPath(form.getBBox().toRectangle2D()));
+ Area clippingPath = new Area(form.getBBox().toGeneralPath());
Area newArea = new Area(clippingPath);
groupClip.intersect(newArea);
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/Matrix.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/Matrix.java?rev=1635700&r1=1635699&r2=1635700&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/Matrix.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/Matrix.java Fri Oct 31 06:47:27 2014
@@ -436,28 +436,6 @@ public class Matrix implements Cloneable
}
/**
- * This will return a string representation of the matrix.
- *
- * @return The matrix as a string.
- */
- public String toString()
- {
- StringBuffer result = new StringBuffer( "" );
- result.append( "[[" );
- result.append( single[0] + "," );
- result.append( single[1] + "," );
- result.append( single[2] + "][");
- result.append( single[3] + "," );
- result.append( single[4] + "," );
- result.append( single[5] + "][");
- result.append( single[6] + "," );
- result.append( single[7] + "," );
- result.append( single[8] + "]]");
-
- return result.toString();
- }
-
- /**
* Get the xscaling factor of this matrix.
* @return The x-scale.
*/
@@ -537,4 +515,18 @@ public class Matrix implements Cloneable
array.add(new COSFloat(7));
return array;
}
+
+ @Override
+ public String toString()
+ {
+ StringBuffer sb = new StringBuffer( "" );
+ sb.append("[");
+ sb.append(single[0] + ",");
+ sb.append(single[1] + ",");
+ sb.append(single[3] + ",");
+ sb.append(single[4] + ",");
+ sb.append(single[6] + ",");
+ sb.append(single[7] + "]");
+ return sb.toString();
+ }
}