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
{