You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2019/01/31 16:27:23 UTC
svn commit: r1852614 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
Author: tilman
Date: Thu Jan 31 16:27:23 2019
New Revision: 1852614
URL: http://svn.apache.org/viewvc?rev=1852614&view=rev
Log:
PDFBOX-4449: refactor double code; avoid conversion from float to double and back; fix typo
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
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=1852614&r1=1852613&r2=1852614&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 Thu Jan 31 16:27:23 2019
@@ -567,8 +567,8 @@ public class PageDrawer extends PDFGraph
private void adjustRectangle(Rectangle2D r)
{
Matrix m = new Matrix(xform);
- double scaleX = Math.abs(m.getScalingFactorX());
- double scaleY = Math.abs(m.getScalingFactorY());
+ float scaleX = Math.abs(m.getScalingFactorX());
+ float scaleY = Math.abs(m.getScalingFactorY());
AffineTransform adjustedTransform = new AffineTransform(xform);
adjustedTransform.scale(1.0 / scaleX, 1.0 / scaleY);
@@ -1353,6 +1353,8 @@ public class PageDrawer extends PDFGraph
private final int maxY;
private final int width;
private final int height;
+ private final float scaleX;
+ private final float scaleY;
/**
* Creates a buffered image for a transparency group result.
@@ -1382,6 +1384,9 @@ public class PageDrawer extends PDFGraph
Area clip = (Area)getGraphicsState().getCurrentClippingPath().clone();
clip.intersect(new Area(transformedBox));
Rectangle2D clipRect = clip.getBounds2D();
+ Matrix m = new Matrix(xform);
+ scaleX = Math.abs(m.getScalingFactorX());
+ scaleY = Math.abs(m.getScalingFactorY());
if (clipRect.isEmpty())
{
image = null;
@@ -1398,8 +1403,7 @@ public class PageDrawer extends PDFGraph
(float)clipRect.getWidth(), (float)clipRect.getHeight());
// apply the underlying Graphics2D device's DPI transform
- Matrix m = new Matrix(xform);
- AffineTransform dpiTransform = AffineTransform.getScaleInstance(Math.abs(m.getScalingFactorX()), Math.abs(m.getScalingFactorY()));
+ AffineTransform dpiTransform = AffineTransform.getScaleInstance(scaleX, scaleY);
Rectangle2D bounds = dpiTransform.createTransformedShape(clip.getBounds2D()).getBounds2D();
minX = (int) Math.floor(bounds.getMinX());
@@ -1474,12 +1478,12 @@ public class PageDrawer extends PDFGraph
g.transform(dpiTransform);
AffineTransform xformOriginal = xform;
- xform = AffineTransform.getScaleInstance(Math.abs(m.getScalingFactorX()), Math.abs(m.getScalingFactorY()));
+ xform = AffineTransform.getScaleInstance(scaleX, scaleY);
PDRectangle pageSizeOriginal = pageSize;
- pageSize = new PDRectangle(minX / Math.abs(m.getScalingFactorX()),
- minY / Math.abs(m.getScalingFactorY()),
- (float) bounds.getWidth() / Math.abs(m.getScalingFactorX()),
- (float) bounds.getHeight() / Math.abs(m.getScalingFactorY()));
+ pageSize = new PDRectangle(minX / scaleX,
+ minY / scaleY,
+ (float) bounds.getWidth() / scaleX,
+ (float) bounds.getHeight() / scaleY);
int clipWindingRuleOriginal = clipWindingRule;
clipWindingRule = -1;
GeneralPath linePathOriginal = linePath;
@@ -1532,9 +1536,9 @@ public class PageDrawer extends PDFGraph
*/
int[] bandOffsets = new int[] {1, 0};
int bands = bandOffsets.length;
-
+
/**
- * Color Model usesd for raw GRAY + ALPHA
+ * Color Model used for raw GRAY + ALPHA
*/
final ColorModel CM_GRAY_ALPHA
= new ComponentColorModel(
@@ -1589,11 +1593,11 @@ public class PageDrawer extends PDFGraph
Point2D size = new Point2D.Double(pageSize.getWidth(), pageSize.getHeight());
// apply the underlying Graphics2D device's DPI transform and y-axis flip
Matrix m = new Matrix(xform);
- AffineTransform dpiTransform = AffineTransform.getScaleInstance(Math.abs(m.getScalingFactorX()), Math.abs(m.getScalingFactorY()));
+ AffineTransform dpiTransform = AffineTransform.getScaleInstance(scaleX, scaleY);
size = dpiTransform.transform(size, size);
// Flip y
- return new Rectangle2D.Double(minX - pageSize.getLowerLeftX() * Math.abs(m.getScalingFactorX()),
- size.getY() - minY - height + pageSize.getLowerLeftY() * Math.abs(m.getScalingFactorY()),
+ return new Rectangle2D.Double(minX - pageSize.getLowerLeftX() * scaleX,
+ size.getY() - minY - height + pageSize.getLowerLeftY() * scaleY,
width, height);
}
}