From a1e5851e19b3b2f0b3224a4e9dd084515b280f72 Mon Sep 17 00:00:00 2001 From: Vincent Hennebert Date: Fri, 18 Jul 2014 13:48:43 +0000 Subject: [PATCH] Check bounds and encode git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/FOP-2393_gradient-rendering@1611652 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/fop/render/gradient/Function.java | 31 +++++++++++-------- .../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 makeEncode(List encode) { + if (encode != null) { + return encode; + } else { + encode = new ArrayList(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 domain, List 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) -- 2.39.5