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