You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2014/04/24 17:25:39 UTC

svn commit: r1589767 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java

Author: tilman
Date: Thu Apr 24 15:25:38 2014
New Revision: 1589767

URL: http://svn.apache.org/r1589767
Log:
PDFBOX-2042: fix ICC color spaces with empty range array

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java?rev=1589767&r1=1589766&r2=1589767&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java Thu Apr 24 15:25:38 2014
@@ -269,18 +269,29 @@ public final class PDICCBased extends PD
         return list;
     }
 
-    private COSArray getRangeArray(int n)
+    /**
+     * Get the range array, create and fill it with default values (0, 1) if
+     * needed so that it has enough value pairs for the position.
+     *
+     * @param pos The zero-based position that should exist after this call is
+     * completed.
+     * @return A valid range array.
+     */
+    private COSArray getRangeArray(int pos)
     {
+        //TODO per "clean code", a method should either 
+        // return something or modify something, but not both.
         COSArray rangeArray = (COSArray)stream.getStream().getDictionaryObject(COSName.RANGE);
         if(rangeArray == null)
         {
             rangeArray = new COSArray();
             stream.getStream().setItem(COSName.RANGE, rangeArray);
-            while(rangeArray.size() < n*2)
-            {
-                rangeArray.add(new COSFloat(-100));
-                rangeArray.add(new COSFloat(100));
-            }
+        }
+        // extend range array with default values if needed
+        while (rangeArray.size() < (pos + 1) * 2)
+        {
+            rangeArray.add(new COSFloat(0));
+            rangeArray.add(new COSFloat(1));
         }
         return rangeArray;
     }