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 2014/06/21 21:29:52 UTC

svn commit: r1604450 - in /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading: AxialShadingContext.java GouraudShadingContext.java RadialShadingContext.java

Author: tilman
Date: Sat Jun 21 19:29:51 2014
New Revision: 1604450

URL: http://svn.apache.org/r1604450
Log:
PDFBOX-2156: apply java graphics AffineTransform properly if ctm is null in radial / axial shading

Modified:
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java?rev=1604450&r1=1604449&r2=1604450&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java Sat Jun 21 19:29:51 2014
@@ -81,17 +81,15 @@ public class AxialShadingContext impleme
     {
         shadingType = shadingType2;
         coords = shadingType2.getCoords().toFloatArray();
+        
         if (ctm != null)
         {
             // the shading is used in combination with the sh-operator
-            float[] coordsTemp = new float[coords.length]; 
             // transform the coords from shading to user space
-            ctm.createAffineTransform().transform(coords, 0, coordsTemp, 0, 2);
+            ctm.createAffineTransform().transform(coords, 0, coords, 0, 2);
             // move the 0,0-reference
-            coordsTemp[1] = pageHeight - coordsTemp[1];
-            coordsTemp[3] = pageHeight - coordsTemp[3];
-            // transform the coords from user to device space
-            xform.transform(coordsTemp, 0, coords, 0, 2);
+            coords[1] = pageHeight - coords[1];
+            coords[3] = pageHeight - coords[3];
         }
         else
         {
@@ -102,6 +100,9 @@ public class AxialShadingContext impleme
             coords[1] = pageHeight + translateY - coords[1];
             coords[3] = pageHeight + translateY - coords[3];
         }
+        // transform the coords from user to device space
+        xform.transform(coords, 0, coords, 0, 2);
+        
         // get the shading colorSpace
         try
         {

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java?rev=1604450&r1=1604449&r2=1604450&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java Sat Jun 21 19:29:51 2014
@@ -170,7 +170,7 @@ public abstract class GouraudShadingCont
             int color = (int) input.readBits(bitsPerColorComponent);
             colorComponentTab[n] = interpolate(color, maxSrcColor, colRangeTab[n].getMin(), colRangeTab[n].getMax());
             LOG.debug("color[" + n + "]: " + color + "/" + String.format("%02x", color)
-                    + "-> color[" + n + "]: " + colorComponentTab[n]);
+                    + " -> color[" + n + "]: " + colorComponentTab[n]);
         }
         return new Vertex(flag, new Point2D.Double(dstX, dstY), colorComponentTab);
     }

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java?rev=1604450&r1=1604449&r2=1604450&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java Sat Jun 21 19:29:51 2014
@@ -90,22 +90,16 @@ public class RadialShadingContext implem
         if (ctm != null)
         {
             // the shading is used in combination with the sh-operator
-            float[] coordsTemp = new float[coords.length]; 
             // transform the coords from shading to user space
-            ctm.createAffineTransform().transform(coords, 0, coordsTemp, 0, 1);
-            ctm.createAffineTransform().transform(coords, 3, coordsTemp, 3, 1);
+            ctm.createAffineTransform().transform(coords, 0, coords, 0, 1);
+            ctm.createAffineTransform().transform(coords, 3, coords, 3, 1);
             // scale radius to user space
             coords[2] *= ctm.getXScale();
             coords[5] *= ctm.getXScale();
+
             // move the 0,0-reference
-            coordsTemp[1] = pageHeight - coordsTemp[1];
-            coordsTemp[4] = pageHeight - coordsTemp[4];
-            // transform the coords from user to device space
-            xform.transform(coordsTemp, 0, coords, 0, 1);
-            xform.transform(coordsTemp, 3, coords, 3, 1);
-            // scale radius to device space
-            coords[2] *= xform.getScaleX();
-            coords[5] *= xform.getScaleX();
+            coords[1] = pageHeight - coords[1];
+            coords[4] = pageHeight - coords[4];
         }
         else
         {
@@ -116,6 +110,15 @@ public class RadialShadingContext implem
             coords[1] = pageHeight + translateY - coords[1];
             coords[4] = pageHeight + translateY - coords[4];
         }
+
+        // transform the coords from user to device space
+        xform.transform(coords, 0, coords, 0, 1);
+        xform.transform(coords, 3, coords, 3, 1);
+
+        // scale radius to device space
+        coords[2] *= xform.getScaleX();
+        coords[5] *= xform.getScaleX();
+
         // get the shading colorSpace
         try
         {