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();