Author: lehmi
Date: Mon Feb 27 15:29:18 2012
New Revision: 1294185

URL: http://svn.apache.org/viewvc?rev=1294185&view=rev
Log:
PDFBOX-1237: use the correct number of components if the pixelmap uses an 
indexed colorspace

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=1294185&r1=1294184&r2=1294185&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
 Mon Feb 27 15:29:18 2012
@@ -175,7 +175,9 @@ public class PDPixelMap extends PDXObjec
                 {
                     throw new IOException( "Not implemented" );
                 }
-                int numberOfComponents = baseColorModel.getNumComponents() + 
(hasAlpha ? 1 : 0);
+                // the IndexColorModel uses RGB-based color values
+                // which leads to 3 color components and a optional alpha 
channel
+                int numberOfComponents = 3 + (hasAlpha ? 1 : 0);
                 int buffersize = (size+1) * numberOfComponents;
                 byte[] colorValues = new byte[buffersize];
                 byte[] inData = new byte[baseColorModel.getNumComponents()];
@@ -183,6 +185,7 @@ public class PDPixelMap extends PDXObjec
                 for( int i = 0; i <= size; i++ )
                 {
                     System.arraycopy(index, i * inData.length, inData, 0, 
inData.length);
+                    // convert the indexed color values to RGB 
                     colorValues[bufferIndex] = 
(byte)baseColorModel.getRed(inData);
                     colorValues[bufferIndex+1] = 
(byte)baseColorModel.getGreen(inData);
                     colorValues[bufferIndex+2] = 
(byte)baseColorModel.getBlue(inData);


Reply via email to