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