[prev in list] [next in list] [prev in thread] [next in thread] 

List:       fop-cvs
Subject:    svn commit: r1739053 - /xmlgraphics/fop-pdf-images/branches/Temp_PDFBox2/src/java/org/apache/fop/ren
From:       ssteiner () apache ! org
Date:       2016-04-14 11:08:09
Message-ID: 20160414110810.2169F3A0216 () svn01-us-west ! apache ! org
[Download RAW message or body]

Author: ssteiner
Date: Thu Apr 14 11:08:09 2016
New Revision: 1739053

URL: http://svn.apache.org/viewvc?rev=1739053&view=rev
Log:
FOP-2562: Fix gradients

Modified:
    xmlgraphics/fop-pdf-images/branches/Temp_PDFBox2/src/java/org/apache/fop/render/pdf/pdfbox/PSPDFGraphics2D.java


Modified: xmlgraphics/fop-pdf-images/branches/Temp_PDFBox2/src/java/org/apache/fop/render/pdf/pdfbox/PSPDFGraphics2D.java
                
URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/branches/Temp_PDFBox2/src \
/java/org/apache/fop/render/pdf/pdfbox/PSPDFGraphics2D.java?rev=1739053&r1=1739052&r2=1739053&view=diff
 ==============================================================================
--- xmlgraphics/fop-pdf-images/branches/Temp_PDFBox2/src/java/org/apache/fop/render/pdf/pdfbox/PSPDFGraphics2D.java \
                (original)
+++ xmlgraphics/fop-pdf-images/branches/Temp_PDFBox2/src/java/org/apache/fop/render/pdf/pdfbox/PSPDFGraphics2D.java \
Thu Apr 14 11:08:09 2016 @@ -35,6 +35,7 @@ import java.io.BufferedOutputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.DataOutputStream;
 import java.io.IOException;
+import java.lang.reflect.Field;
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -51,12 +52,11 @@ import org.apache.pdfbox.pdmodel.common.
 import org.apache.pdfbox.pdmodel.common.function.PDFunctionType0;
 import org.apache.pdfbox.pdmodel.common.function.PDFunctionType2;
 import org.apache.pdfbox.pdmodel.common.function.PDFunctionType3;
-import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
 import org.apache.pdfbox.pdmodel.graphics.shading.AxialShadingContext;
 import org.apache.pdfbox.pdmodel.graphics.shading.AxialShadingPaint;
 import org.apache.pdfbox.pdmodel.graphics.shading.RadialShadingContext;
 import org.apache.pdfbox.pdmodel.graphics.shading.RadialShadingPaint;
-
+import org.apache.pdfbox.util.Matrix;
 
 import org.apache.xmlgraphics.image.loader.ImageInfo;
 import org.apache.xmlgraphics.image.loader.ImageSize;
@@ -109,12 +109,12 @@ public class PSPDFGraphics2D extends PSG
         if (paint instanceof AxialShadingPaint || paint instanceof \
                RadialShadingPaint) {
             PaintContext paintContext = paint.createContext(null, new Rectangle(), \
null, new AffineTransform(),  getRenderingHints());
-            PDColorSpace pdcs;
             int deviceColorSpace = PDFDeviceColorSpace.DEVICE_RGB;
             if (paint instanceof AxialShadingPaint) {
                 try {
                     AxialShadingContext asc = (AxialShadingContext) paintContext;
                     float[] fCoords = asc.getCoords();
+                    transformCoords(fCoords, paint, true);
                     PDFunction function = asc.getFunction();
                     Function targetFT = getFunction(function);
                     if (targetFT != null) {
@@ -135,6 +135,7 @@ public class PSPDFGraphics2D extends PSG
                 try {
                     RadialShadingContext rsc = (RadialShadingContext) paintContext;
                     float[] fCoords = rsc.getCoords();
+                    transformCoords(fCoords, paint, false);
                     PDFunction function = rsc.getFunction();
                     Function targetFT3 = getFunction(function);
                     List<Double> dCoords = floatArrayToDoubleList(fCoords);
@@ -149,6 +150,28 @@ public class PSPDFGraphics2D extends PSG
         }
     }
 
+    private void transformCoords(float[] coords, Paint paint, boolean axialShading) \
{ +        try {
+            Field f = paint.getClass().getDeclaredField("matrix");
+            f.setAccessible(true);
+            Matrix ctm = (Matrix) f.get(paint);
+            AffineTransform at = ctm.createAffineTransform();
+            if (axialShading) {
+                at.transform(coords, 0, coords, 0, 2);
+            } else {
+                at.transform(coords, 0, coords, 0, 1);
+                at.transform(coords, 3, coords, 3, 1);
+                coords[2] *= ctm.getScalingFactorX();
+                coords[5] *= ctm.getScalingFactorX();
+            }
+
+        } catch (NoSuchFieldException e) {
+            throw new RuntimeException(e);
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
     private static Function getFunction(PDFunction f) throws IOException {
         if (f instanceof PDFunctionType3) {
             PDFunctionType3 sourceFT3 = (PDFunctionType3) f;



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic