Author: vhennebert
Date: Mon Jul 14 21:08:42 2014
New Revision: 1610528
URL: http://svn.apache.org/r1610528
Log:
Moved content of FunctionPattern into Function
Removed:
xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/render/shading/FunctionPattern.java
Modified:
xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/pdf/PDFFunction.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/Function.java
Modified:
xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/pdf/PDFFunction.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/pdf/PDFFunction.java?rev=1610528&r1=1610527&r2=1610528&view=diff
==============================================================================
---
xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/pdf/PDFFunction.java
(original)
+++
xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/pdf/PDFFunction.java
Mon Jul 14 21:08:42 2014
@@ -25,7 +25,6 @@ import java.util.Collections;
import java.util.List;
import org.apache.fop.render.shading.Function;
-import org.apache.fop.render.shading.FunctionPattern;
/**
* class representing a PDF Function.
@@ -108,12 +107,11 @@ public class PDFFunction extends PDFObje
public byte[] toByteString() {
- FunctionPattern pattern = new FunctionPattern(function);
List<String> functionsStrings = new
ArrayList<String>(function.getFunctions().size());
for (PDFFunction f : pdfFunctions) {
functionsStrings.add(f.referencePDF());
}
- return encode(pattern.toWriteableString(functionsStrings));
+ return encode(function.toWriteableString(functionsStrings));
}
/** {@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=1610528&r1=1610527&r2=1610528&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
Mon Jul 14 21:08:42 2014
@@ -23,7 +23,6 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.fop.render.shading.Function;
-import org.apache.fop.render.shading.FunctionPattern;
import org.apache.fop.render.shading.Pattern;
import org.apache.fop.render.shading.Shading;
@@ -119,24 +118,22 @@ public class PSPattern implements Patter
Shading.FunctionRenderer functionRenderer = new
Shading.FunctionRenderer() {
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(function.toWriteableString(functionsStrings));
}
};
shading.output(p, functionRenderer);
}
private String functionToString(Function function) {
- FunctionPattern pattern = new FunctionPattern(function);
List<String> functionsStrings = new
ArrayList<String>(function.getFunctions().size());
for (Function f : function.getFunctions()) {
functionsStrings.add(functionToString(f));
}
- return pattern.toWriteableString(functionsStrings);
+ return function.toWriteableString(functionsStrings);
}
}
Modified:
xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/render/shading/Function.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/render/shading/Function.java?rev=1610528&r1=1610527&r2=1610528&view=diff
==============================================================================
---
xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/render/shading/Function.java
(original)
+++
xmlgraphics/fop/branches/FOP-2393_gradient-rendering/src/java/org/apache/fop/render/shading/Function.java
Mon Jul 14 21:08:42 2014
@@ -20,6 +20,8 @@ package org.apache.fop.render.shading;
import java.util.Collections;
import java.util.List;
+import org.apache.fop.pdf.PDFNumber;
+
public class Function {
/**
@@ -331,4 +333,183 @@ public class Function {
return cOne;
}
+ public String toWriteableString(List<String> functionsStrings) {
+ StringBuilder out = new StringBuilder(256);
+ out.append("<<\n/FunctionType " + functionType + "\n");
+ outputDomain(out);
+ if (this.functionType == 0) {
+ outputSize(out);
+ outputEncode(out);
+ outputBitsPerSample(out);
+ outputOrder(out);
+ outputRange(out);
+ outputDecode(out);
+ if (functionDataStream != null) {
+ out.append("/Length " + (functionDataStream.length() + 1) +
"\n");
+ }
+ outputFilter(out);
+ out.append(">>");
+ if (functionDataStream != null) {
+ out.append("\nstream\n" + functionDataStream + "\nendstream");
+ }
+ } else if (functionType == 2) {
+ outputRange(out);
+ outputCZero(out);
+ outputCOne(out);
+ outputInterpolationExponentN(out);
+ out.append(">>");
+ } else if (functionType == 3) {
+ outputRange(out);
+ if (!functions.isEmpty()) {
+ out.append("/Functions [ ");
+ for (String f : functionsStrings) {
+ out.append(f);
+ out.append(' ');
+ }
+ out.append("]\n");
+ }
+ outputEncode(out);
+ out.append("/Bounds ");
+ if (bounds != null) {
+ outputDoubles(out, bounds);
+ } else if (!functions.isEmpty()) {
+ // if there are n functions,
+ // there must be n-1 bounds.
+ // so let each function handle an equal portion
+ // of the whole. e.g. if there are 4, then [ 0.25 0.25 0.25 ]
+ int numberOfFunctions = functions.size();
+ String functionsFraction =
PDFNumber.doubleOut(Double.valueOf(1.0 / (numberOfFunctions)));
+ out.append("[ ");
+ for (int i = 0; i + 1 < numberOfFunctions; i++) {
+ out.append(functionsFraction);
+ out.append(" ");
+ }
+ out.append("]");
+ }
+ out.append("\n>>");
+ } else if (functionType == 4) {
+ outputRange(out);
+ if (functionDataStream != null) {
+ out.append("/Length " + (functionDataStream.length() + 1) +
"\n");
+ }
+ out.append(">>");
+ if (functionDataStream != null) {
+ out.append("\nstream\n{ " + functionDataStream + "
}\nendstream");
+ }
+ }
+ return out.toString();
+ }
+
+ private void outputDomain(StringBuilder p) {
+ if (domain != null) {
+ p.append("/Domain ");
+ outputDoubles(p, domain);
+ p.append("\n");
+ } else {
+ p.append("/Domain [ 0 1 ]\n");
+ }
+ }
+
+ private void outputSize(StringBuilder out) {
+ if (size != null) {
+ out.append("/Size ");
+ outputDoubles(out, size);
+ out.append("\n");
+ }
+ }
+
+ private void outputBitsPerSample(StringBuilder out) {
+ out.append("/BitsPerSample " + bitsPerSample + "\n");
+ }
+
+ private void outputOrder(StringBuilder out) {
+ if (order == 1 || order == 3) {
+ out.append("\n/Order " + order + "\n");
+ }
+ }
+
+ private void outputRange(StringBuilder out) {
+ if (range != null) {
+ out.append("/Range ");
+ outputDoubles(out, range);
+ out.append("\n");
+ }
+ }
+
+ private void outputEncode(StringBuilder out) {
+ if (encode != null) {
+ out.append("/Encode ");
+ outputDoubles(out, encode);
+ out.append("\n");
+ } else {
+ out.append("/Encode [ ");
+ int size = functions.size();
+ for (int i = 0; i < size; i++) {
+ out.append("0 1 ");
+ }
+ out.append("]\n");
+ }
+ }
+
+ private void outputDecode(StringBuilder out) {
+ if (decode != null) {
+ out.append("/Decode ");
+ outputDoubles(out, decode);
+ out.append("\n");
+ }
+ }
+
+ private void outputFilter(StringBuilder out) {
+ if (filter != null) {
+ int size = filter.size();
+ out.append("/Filter ");
+ if (size == 1) {
+ out.append("/" + filter.get(0) + "\n");
+ } else {
+ out.append("[ ");
+ for (int i = 0; i < size; i++) {
+ out.append("/" + filter.get(0) + " ");
+ }
+ out.append("]\n");
+ }
+ }
+ }
+
+ private void outputCZero(StringBuilder out) {
+ if (cZero != null) {
+ out.append("/C0 [ ");
+ for (float c : cZero) {
+ out.append(PDFNumber.doubleOut(c));
+ out.append(" ");
+ }
+ out.append("]\n");
+ }
+ }
+
+ private void outputCOne(StringBuilder out) {
+ if (cOne != null) {
+ out.append("/C1 [ ");
+ for (float c : cOne) {
+ out.append(PDFNumber.doubleOut(c));
+ out.append(" ");
+ }
+ out.append("]\n");
+ }
+ }
+
+ private void outputInterpolationExponentN(StringBuilder out) {
+ out.append("/N ");
+
out.append(PDFNumber.doubleOut(Double.valueOf(interpolationExponentN)));
+ out.append("\n");
+ }
+
+ private void outputDoubles(StringBuilder out, List<Double> doubles) {
+ out.append("[ ");
+ for (Double d : doubles) {
+ out.append(PDFNumber.doubleOut(d));
+ out.append(" ");
+ }
+ out.append("]");
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]