You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by vh...@apache.org on 2014/07/11 20:05:03 UTC

svn commit: r1609760 - in /xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop: pdf/PDFShading.java render/ps/svg/PSPattern.java render/shading/Shading.java render/shading/ShadingPattern.java

Author: vhennebert
Date: Fri Jul 11 18:05:02 2014
New Revision: 1609760

URL: http://svn.apache.org/r1609760
Log:
Moved content of ShadingPattern into Shading

Removed:
    xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/render/shading/ShadingPattern.java
Modified:
    xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/pdf/PDFShading.java
    xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/render/ps/svg/PSPattern.java
    xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/render/shading/Shading.java

Modified: xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/pdf/PDFShading.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/pdf/PDFShading.java?rev=1609760&r1=1609759&r2=1609760&view=diff
==============================================================================
--- xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/pdf/PDFShading.java (original)
+++ xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/pdf/PDFShading.java Fri Jul 11 18:05:02 2014
@@ -21,10 +21,7 @@ package org.apache.fop.pdf;
 
 import java.util.List;
 
-import org.apache.fop.render.shading.Function;
 import org.apache.fop.render.shading.Shading;
-import org.apache.fop.render.shading.ShadingPattern;
-import org.apache.fop.render.shading.ShadingPattern.ShadingRenderer;
 
 
 /**
@@ -98,19 +95,15 @@ public class PDFShading extends PDFObjec
      * @return the PDF string.
      */
     public String toPDFString() {
-        final ShadingRenderer shadingRenderer = new ShadingRenderer() {
+        Shading.FunctionRenderer functionRenderer = new Shading.FunctionRenderer() {
 
-            public void outputFunction(StringBuffer out) {
-                Function function = shading.getFunction();
-                if (function != null) {
-                    out.append("/Function ");
-                    out.append(pdfFunction.referencePDF() + " \n");
-                }
+            public void outputFunction(StringBuilder out) {
+                out.append(pdfFunction.referencePDF());
             }
         };
-        ShadingPattern pattern = new ShadingPattern(shading, shadingRenderer);
-        return pattern.toString(shading.getColorSpace(), shading.getShadingType(), shading.getBackground(),
-                shading.getBBox(), shading.isAntiAlias());
+        StringBuilder out = new StringBuilder();
+        shading.output(out, functionRenderer);
+        return out.toString();
     }
 
     /** {@inheritDoc} */

Modified: xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/render/ps/svg/PSPattern.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/render/ps/svg/PSPattern.java?rev=1609760&r1=1609759&r2=1609760&view=diff
==============================================================================
--- xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/render/ps/svg/PSPattern.java (original)
+++ xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/render/ps/svg/PSPattern.java Fri Jul 11 18:05:02 2014
@@ -26,8 +26,6 @@ import org.apache.fop.render.shading.Fun
 import org.apache.fop.render.shading.FunctionPattern;
 import org.apache.fop.render.shading.Pattern;
 import org.apache.fop.render.shading.Shading;
-import org.apache.fop.render.shading.ShadingPattern;
-import org.apache.fop.render.shading.ShadingPattern.ShadingRenderer;
 
 public class PSPattern implements Pattern {
 
@@ -79,7 +77,7 @@ public class PSPattern implements Patter
     public String toString() {
         int vectorSize = 0;
         int tempInt = 0;
-        StringBuffer p = new StringBuffer(64);
+        StringBuilder p = new StringBuilder(64);
         p.append("/Pattern setcolorspace\n");
         p.append("<< \n/Type /Pattern \n");
 
@@ -116,24 +114,20 @@ public class PSPattern implements Patter
         return p.toString();
     }
 
-    private void outputShading(StringBuffer out) {
+    private void outputShading(StringBuilder p) {
         final Function function = shading.getFunction();
-        final ShadingRenderer shadingRenderer = new ShadingRenderer() {
+        Shading.FunctionRenderer functionRenderer = new Shading.FunctionRenderer() {
 
-            public void outputFunction(StringBuffer out) {
-                out.append("/Function ");
+            public void outputFunction(StringBuilder out) {
                 FunctionPattern pattern = new FunctionPattern(function);
                 List<String> functionsStrings = new ArrayList<String>(function.getFunctions().size());
                 for (Function f : function.getFunctions()) {
                     functionsStrings.add(functionToString(f));
                 }
                 out.append(pattern.toWriteableString(functionsStrings));
-                out.append("\n");
             }
         };
-        ShadingPattern pattern = new ShadingPattern(shading, shadingRenderer);
-        out.append(pattern.toString(shading.getColorSpace(), shading.getShadingType(), shading.getBackground(),
-                shading.getBBox(), shading.isAntiAlias()));
+        shading.output(p, functionRenderer);
     }
 
     private String functionToString(Function function) {

Modified: xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/render/shading/Shading.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/render/shading/Shading.java?rev=1609760&r1=1609759&r2=1609760&view=diff
==============================================================================
--- xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/render/shading/Shading.java (original)
+++ xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/render/shading/Shading.java Fri Jul 11 18:05:02 2014
@@ -20,10 +20,16 @@ package org.apache.fop.render.shading;
 import java.util.List;
 
 import org.apache.fop.pdf.PDFDeviceColorSpace;
+import org.apache.fop.pdf.PDFNumber;
 
 
 public class Shading {
 
+    public interface FunctionRenderer {
+
+        void outputFunction(StringBuilder out);
+    }
+
     /**
      * Required: The Type of shading (1,2,3,4,5,6,7)
      */
@@ -206,4 +212,165 @@ public class Shading {
         return verticesPerRow;
     }
 
+    public void output(StringBuilder out, FunctionRenderer functionRenderer) {
+        out.append("<<\n/ShadingType " + shadingType + "\n");
+        if (colorSpace != null) {
+            out.append("/ColorSpace /" + colorSpace.getName() + "\n");
+        }
+
+        if (background != null) {
+            out.append("/Background ");
+            outputDoubles(out, background);
+            out.append("\n");
+        }
+
+        if (bbox != null) {
+            out.append("/BBox");
+            outputDoubles(out, bbox);
+            out.append("\n");
+        }
+
+        if (antiAlias) {
+            out.append("/AntiAlias " + antiAlias + "\n");
+        }
+
+        switch (shadingType) {
+        // Function based shading
+        case 1: outputShadingType1(out, functionRenderer); break;
+        // Axial shading
+        case 2:
+        // Radial shading
+        case 3: outputShadingType2or3(out, functionRenderer); break;
+        // Free-form Gouraud-shaded triangle meshes
+        case 4:
+        // Coons patch meshes
+        case 6:
+        // Tensor product patch meshes
+        case 7: outputShadingType4or6or7(out, functionRenderer); break;
+        // Lattice Free form gouraud-shaded triangle mesh
+        case 5: outputShadingType5(out, functionRenderer); break;
+        default: throw new UnsupportedOperationException("Shading type " + shadingType);
+        }
+
+        out.append(">>");
+    }
+
+    private void outputDoubles(StringBuilder out, List<Double> doubles) {
+        out.append("[ ");
+        for (Double d : doubles) {
+            out.append(PDFNumber.doubleOut(d));
+            out.append(" ");
+        }
+        out.append("]");
+    }
+
+    private void outputShadingType1(StringBuilder out, Shading.FunctionRenderer functionRenderer) {
+        if (domain != null) {
+            out.append("/Domain ");
+            outputDoubles(out, domain);
+            out.append("\n");
+        } else {
+            out.append("/Domain [ 0 1 ] \n");
+        }
+
+        if (matrix != null) {
+            out.append("/Matrix ");
+            outputDoubles(out, matrix);
+            out.append("\n");
+        }
+        outputFunction(out, functionRenderer);
+    }
+
+    private void outputShadingType2or3(StringBuilder out, Shading.FunctionRenderer functionRenderer) {
+        if (coords != null) {
+            out.append("/Coords ");
+            outputDoubles(out, coords);
+            out.append("\n");
+        }
+
+        if (domain != null) {
+            out.append("/Domain ");
+            outputDoubles(out, domain);
+            out.append("\n");
+        } else {
+            out.append("/Domain [ 0 1 ] \n");
+        }
+
+        if (extend != null) {
+            out.append("/Extend [");
+            for (Boolean b : extend) {
+                out.append(b);
+                out.append(" ");
+            }
+            out.append("\n");
+        } else {
+            out.append("/Extend [ true true ] \n");
+        }
+
+        outputFunction(out, functionRenderer);
+    }
+
+    private void outputShadingType4or6or7(StringBuilder out, Shading.FunctionRenderer functionRenderer) {
+        if (bitsPerCoordinate > 0) {
+            out.append("/BitsPerCoordinate " + bitsPerCoordinate + "\n");
+        } else {
+            out.append("/BitsPerCoordinate 1 \n");
+        }
+
+        if (bitsPerComponent > 0) {
+            out.append("/BitsPerComponent " + bitsPerComponent + "\n");
+        } else {
+            out.append("/BitsPerComponent 1 \n");
+        }
+
+        if (bitsPerFlag > 0) {
+            out.append("/BitsPerFlag " + bitsPerFlag + "\n");
+        } else {
+            out.append("/BitsPerFlag 2 \n");
+        }
+
+        if (decode != null) {
+            out.append("/Decode ");
+            outputDoubles(out, decode);
+            out.append("\n");
+        }
+
+        outputFunction(out, functionRenderer);
+    }
+
+    private void outputShadingType5(StringBuilder out, Shading.FunctionRenderer functionRenderer) {
+        if (bitsPerCoordinate > 0) {
+            out.append("/BitsPerCoordinate " + bitsPerCoordinate + "\n");
+        } else {
+            out.append("/BitsPerCoordinate 1 \n");
+        }
+
+        if (bitsPerComponent > 0) {
+            out.append("/BitsPerComponent " + bitsPerComponent + "\n");
+        } else {
+            out.append("/BitsPerComponent 1 \n");
+        }
+
+        if (decode != null) {
+            out.append("/Decode ");
+            outputDoubles(out, decode);
+            out.append("\n");
+        }
+
+        outputFunction(out, functionRenderer);
+
+        if (verticesPerRow > 0) {
+            out.append("/VerticesPerRow " + verticesPerRow + "\n");
+        } else {
+            out.append("/VerticesPerRow 2 \n");
+        }
+    }
+
+    private void outputFunction(StringBuilder out, FunctionRenderer functionRenderer) {
+        if (function != null) {
+            out.append("/Function ");
+            functionRenderer.outputFunction(out);
+            out.append("\n");
+        }
+    }
 }



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