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:28:05 UTC

svn commit: r1589769 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java

Author: tilman
Date: Thu Apr 24 15:28:04 2014
New Revision: 1589769

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

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

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java?rev=1589769&r1=1589768&r2=1589769&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java Thu Apr 24 15:28:04 2014
@@ -311,18 +311,29 @@ public class PDICCBased extends PDColorS
         stream.getStream().setItem( COSName.ALTERNATE, altArray );
     }
 
-    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)
     {
-        COSArray rangeArray = (COSArray)stream.getStream().getDictionaryObject( COSName.RANGE);
-        if( rangeArray == null )
+        //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 ) );
-            }
+            stream.getStream().setItem(COSName.RANGE, rangeArray);
+        }
+        // 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;
     }