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;
}