diff options
-rw-r--r-- | src/java/org/apache/fop/render/gradient/Function.java | 31 | ||||
-rw-r--r-- | test/java/org/apache/fop/render/gradient/GradientTestCase.java | 12 |
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) |