aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/java/org/apache/fop/render/gradient/Function.java31
-rw-r--r--test/java/org/apache/fop/render/gradient/GradientTestCase.java12
2 files changed, 30 insertions, 13 deletions
diff --git a/src/java/org/apache/fop/render/gradient/Function.java b/src/java/org/apache/fop/render/gradient/Function.java
index 2baa87820..e0dc210d0 100644
--- a/src/java/org/apache/fop/render/gradient/Function.java
+++ b/src/java/org/apache/fop/render/gradient/Function.java
@@ -17,6 +17,7 @@
package org.apache.fop.render.gradient;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -214,7 +215,20 @@ public class Function {
this(3, domain, range);
this.functions = functions;
this.bounds = bounds;
- this.encode = encode;
+ this.encode = makeEncode(encode);
+ }
+
+ private List<Double> makeEncode(List<Double> encode) {
+ if (encode != null) {
+ return encode;
+ } else {
+ encode = new ArrayList<Double>(functions.size() * 2);
+ for (int i = 0; i < functions.size(); i++) {
+ encode.add(0.0);
+ encode.add(1.0);
+ }
+ return encode;
+ }
}
private Function(int functionType, List<Double> domain, List<Double> range) {
@@ -432,18 +446,9 @@ public class Function {
}
private void outputEncode(StringBuilder out, DoubleFormatter doubleFormatter) {
- if (encode != null) {
- out.append("/Encode ");
- GradientMaker.outputDoubles(out, doubleFormatter, 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");
- }
+ out.append("/Encode ");
+ GradientMaker.outputDoubles(out, doubleFormatter, encode);
+ out.append("\n");
}
private void outputDecode(StringBuilder out, DoubleFormatter doubleFormatter) {
diff --git a/test/java/org/apache/fop/render/gradient/GradientTestCase.java b/test/java/org/apache/fop/render/gradient/GradientTestCase.java
index a7796ca46..13a1c173d 100644
--- a/test/java/org/apache/fop/render/gradient/GradientTestCase.java
+++ b/test/java/org/apache/fop/render/gradient/GradientTestCase.java
@@ -100,6 +100,16 @@ public class GradientTestCase {
return this;
}
+ FunctionChecker bounds(Double... expectedBounds) {
+ assertArrayEquals(expectedBounds, function.getBounds().toArray());
+ return this;
+ }
+
+ FunctionChecker encode(Double... expectedEncode) {
+ assertArrayEquals(expectedEncode, function.getEncode().toArray());
+ return this;
+ }
+
FunctionChecker cZero(float... expectedCZero) {
assertArrayEquals(expectedCZero, function.getCZero(), 0f);
return this;
@@ -137,6 +147,8 @@ public class GradientTestCase {
FunctionChecker functionChecker = shadingChecker.function()
.functionType(3)
.domain(0.0, 1.0)
+ .bounds()
+ .encode(0.0, 1.0)
.functions(1);
functionChecker.function(0)
.functionType(2)