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