You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2011/06/08 10:25:42 UTC
svn commit: r1133281 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMap.java
Author: lehmi
Date: Wed Jun 8 08:25:42 2011
New Revision: 1133281
URL: http://svn.apache.org/viewvc?rev=1133281&view=rev
Log:
PDFBOX-1010: fixed the creation of the colormodel for indexed colorspaces
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=1133281&r1=1133280&r2=1133281&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 Wed Jun 8 08:25:42 2011
@@ -145,14 +145,52 @@ public class PDPixelMap extends PDXObjec
}
ColorModel cm = null;
- if (bpc == 1)
+ if (colorspace instanceof PDIndexed)
{
- byte[] map = null;
- if (colorspace instanceof PDIndexed)
+ PDIndexed csIndexed = (PDIndexed)colorspace;
+ ColorModel baseColorModel = csIndexed.getBaseColorSpace().createColorModel(bpc);
+ int size = csIndexed.getHighValue();
+ byte[] index = csIndexed.getLookupData();
+ boolean hasAlpha = baseColorModel.hasAlpha();
+ COSArray maskArray = getMask();
+ if( baseColorModel.getTransferType() != DataBuffer.TYPE_BYTE )
+ {
+ throw new IOException( "Not implemented" );
+ }
+ byte[] r = new byte[size+1];
+ byte[] g = new byte[size+1];
+ byte[] b = new byte[size+1];
+ byte[] a = hasAlpha ? new byte[size+1] : null;
+ byte[] inData = new byte[baseColorModel.getNumComponents()];
+ for( int i = 0; i <= size; i++ )
+ {
+ System.arraycopy(index, i * inData.length, inData, 0, inData.length);
+ r[i] = (byte)baseColorModel.getRed(inData);
+ g[i] = (byte)baseColorModel.getGreen(inData);
+ b[i] = (byte)baseColorModel.getBlue(inData);
+ if( hasAlpha )
+ {
+ a[i] = (byte)baseColorModel.getAlpha(inData);
+ }
+ }
+ if (hasAlpha)
{
- // extract the base colorspace
- colorspace = ((PDIndexed)colorspace).getBaseColorSpace();
+ cm = new IndexColorModel(bpc, size+1, r, g, b, a);
}
+ else {
+ if (maskArray != null)
+ {
+ cm = new IndexColorModel(bpc, size+1, r, g, b, maskArray.getInt(0));
+ }
+ else
+ {
+ cm = new IndexColorModel(bpc, size+1, r, g, b);
+ }
+ }
+ }
+ else if (bpc == 1)
+ {
+ byte[] map = null;
if (colorspace instanceof PDDeviceGray)
{
COSArray decode = getDecode();
@@ -196,49 +234,6 @@ public class PDPixelMap extends PDXObjec
else
cm = colorspace.createColorModel( bpc );
}
- else if (colorspace instanceof PDIndexed)
- {
- PDIndexed csIndexed = (PDIndexed)colorspace;
- ColorModel baseColorModel = csIndexed.getBaseColorSpace().createColorModel(bpc);
- int size = csIndexed.getHighValue();
- byte[] index = csIndexed.getLookupData();
- boolean hasAlpha = baseColorModel.hasAlpha();
- COSArray maskArray = getMask();
- if( baseColorModel.getTransferType() != DataBuffer.TYPE_BYTE )
- {
- throw new IOException( "Not implemented" );
- }
- byte[] r = new byte[size+1];
- byte[] g = new byte[size+1];
- byte[] b = new byte[size+1];
- byte[] a = hasAlpha ? new byte[size+1] : null;
- byte[] inData = new byte[baseColorModel.getNumComponents()];
- for( int i = 0; i <= size; i++ )
- {
- System.arraycopy(index, i * inData.length, inData, 0, inData.length);
- r[i] = (byte)baseColorModel.getRed(inData);
- g[i] = (byte)baseColorModel.getGreen(inData);
- b[i] = (byte)baseColorModel.getBlue(inData);
- if( hasAlpha )
- {
- a[i] = (byte)baseColorModel.getAlpha(inData);
- }
- }
- if (hasAlpha)
- {
- cm = new IndexColorModel(bpc, size+1, r, g, b, a);
- }
- else {
- if (maskArray != null)
- {
- cm = new IndexColorModel(bpc, size+1, r, g, b, maskArray.getInt(0));
- }
- else
- {
- cm = new IndexColorModel(bpc, size+1, r, g, b);
- }
- }
- }
else
cm = colorspace.createColorModel( bpc );
}