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