]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Check bounds and encode
authorVincent Hennebert <vhennebert@apache.org>
Fri, 18 Jul 2014 13:48:43 +0000 (13:48 +0000)
committerVincent Hennebert <vhennebert@apache.org>
Fri, 18 Jul 2014 13:48:43 +0000 (13:48 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/FOP-2393_gradient-rendering@1611652 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/render/gradient/Function.java
test/java/org/apache/fop/render/gradient/GradientTestCase.java

index 2baa878200088e56f9c4b68b6ab85f72808b3772..e0dc210d01f9f280bdf98c9a61a56fbb344f2312 100644 (file)
@@ -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) {
index a7796ca46c71aa46378765c957a50fe2965214c7..13a1c173d3afe6b3949d3f28ff28aaca743cbc9b 100644 (file)
@@ -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)