Author: lehmi
Date: Sun Oct 23 14:52:18 2011
New Revision: 1187899

URL: http://svn.apache.org/viewvc?rev=1187899&view=rev
Log:
PDFBOX-1075: use the correct size for the indexed color model within an indexed 
color space

Modified:
    
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMap.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMap.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMap.java?rev=1187899&r1=1187898&r2=1187899&view=diff
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMap.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMap.java
 Sun Oct 23 14:52:18 2011
@@ -159,7 +159,13 @@ public class PDPixelMap extends PDXObjec
             {
                 PDIndexed csIndexed = (PDIndexed)colorspace;
                 ColorModel baseColorModel = 
csIndexed.getBaseColorSpace().createColorModel(bpc);
-                int size = Math.min(csIndexed.getHighValue(), 1 << (bpc-1));  
//suggested in PDFBOX-1075
+                // number of possible color values in the target color space
+                int numberOfColorValues = 1 << bpc;
+                // number of indexed color values
+                int highValue = csIndexed.getHighValue();
+                // choose the correct size, sometimes there are more indexed 
values than needed
+                // and sometimes there are fewer indexed value than possible
+                int size = Math.min(numberOfColorValues-1, highValue);
                 byte[] index = csIndexed.getLookupData();
                 boolean hasAlpha = baseColorModel.hasAlpha();
                 COSArray maskArray = getMask();


Reply via email to