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 2015/07/17 02:42:12 UTC
svn commit: r1691467 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java
Author: jahewson
Date: Fri Jul 17 00:42:12 2015
New Revision: 1691467
URL: http://svn.apache.org/r1691467
Log:
PDFBOX-2881: Simplistic computation of axial shading bounds
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java?rev=1691467&r1=1691466&r2=1691467&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java Fri Jul 17 00:42:12 2015
@@ -20,7 +20,6 @@ import java.awt.PaintContext;
import java.awt.Rectangle;
import java.awt.geom.AffineTransform;
import java.awt.geom.NoninvertibleTransformException;
-import java.awt.geom.Point2D;
import java.awt.image.ColorModel;
import java.awt.image.Raster;
import java.awt.image.WritableRaster;
@@ -119,15 +118,11 @@ public class AxialShadingContext extends
// shading space -> device space
AffineTransform shadingToDevice = (AffineTransform)xform.clone();
shadingToDevice.concatenate(matrix.createAffineTransform());
-
- // convert the start and end coordinates to device space
- Point2D p0 = new Point2D.Double(coords[0], coords[1]);
- Point2D p1 = new Point2D.Double(coords[2], coords[3]);
- shadingToDevice.transform(p0, p0);
- shadingToDevice.transform(p1, p1);
-
- // the distance between them is number of steps
- factor = (int)Math.round(p0.distance(p1));
+
+ // worst case for the number of steps is opposite diagonal corners, so use that
+ double dist = Math.sqrt(Math.pow(deviceBounds.getMaxX() - deviceBounds.getMinX(), 2) +
+ Math.pow(deviceBounds.getMaxY() - deviceBounds.getMinX(), 2));
+ factor = (int) Math.ceil(dist);
// build the color table for the given number of steps
colorTable = calcColorTable();