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/12/30 23:52:51 UTC

svn commit: r1648626 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/TilingPaint.java

Author: jahewson
Date: Tue Dec 30 22:52:50 2014
New Revision: 1648626

URL: http://svn.apache.org/r1648626
Log:
PDFBOX-1094: Take into account shear/rotation when calculating pattern scale

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/TilingPaint.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/TilingPaint.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/TilingPaint.java?rev=1648626&r1=1648625&r2=1648626&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/TilingPaint.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/TilingPaint.java Tue Dec 30 22:52:50 2014
@@ -97,8 +97,10 @@ class TilingPaint implements Paint
         AffineTransform xformPattern = (AffineTransform)xform.clone();
 
         // applies the pattern matrix with scaling removed
-        AffineTransform patternNoScale = pattern.getMatrix().createAffineTransform();
-        patternNoScale.scale(1 / patternNoScale.getScaleX(), 1 / patternNoScale.getScaleY());
+        Matrix patternMatrix = pattern.getMatrix();
+        AffineTransform patternNoScale = patternMatrix.createAffineTransform();
+        patternNoScale.scale(1 / patternMatrix.getScalingFactorX(),
+                1 / patternMatrix.getScalingFactorY());
         xformPattern.concatenate(patternNoScale);
 
         return paint.createContext(cm, deviceBounds, userBounds, xformPattern, hints);
@@ -152,8 +154,8 @@ class TilingPaint implements Paint
         // apply only the scaling from the pattern transform, doing scaling here improves the
         // image quality and prevents large scale-down factors from creating huge tiling cells.
         Matrix patternMatrix = Matrix.getScaleInstance(
-                Math.abs(pattern.getMatrix().getScaleX()),
-                Math.abs(pattern.getMatrix().getScaleY()));
+                Math.abs(pattern.getMatrix().getScalingFactorX()),
+                Math.abs(pattern.getMatrix().getScalingFactorY()));
 
         // move origin to (0,0)
         patternMatrix.concatenate(
@@ -201,13 +203,13 @@ class TilingPaint implements Paint
             yStep = pattern.getBBox().getHeight();
         }
 
-        float xScale = pattern.getMatrix().getScaleX();
-        float yScale = pattern.getMatrix().getScaleY();
+        float xScale = pattern.getMatrix().getScalingFactorX();
+        float yScale = pattern.getMatrix().getScalingFactorY();
 
         // returns the anchor rect with scaling applied
         PDRectangle anchor = pattern.getBBox();
         return new Rectangle2D.Float(anchor.getLowerLeftX() * xScale,
-                anchor.getLowerLeftY() * yScale,
-                xStep * xScale, yStep * yScale);
+                                     anchor.getLowerLeftY() * yScale,
+                                     xStep * xScale, yStep * yScale);
     }
 }