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 2010/03/28 16:29:27 UTC
svn commit: r928408 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMap.java
Author: lehmi
Date: Sun Mar 28 14:29:27 2010
New Revision: 928408
URL: http://svn.apache.org/viewvc?rev=928408&view=rev
Log:
PDFBOX-584: create the correct colormodel to avoid inverted colors
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=928408&r1=928407&r2=928408&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 Mar 28 14:29:27 2010
@@ -16,6 +16,7 @@
*/
package org.apache.pdfbox.pdmodel.graphics.xobject;
+import java.awt.Transparency;
import java.awt.image.DataBufferByte;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
@@ -36,6 +37,8 @@ import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.common.PDStream;
import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
+import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceGray;
+import org.apache.pdfbox.pdmodel.graphics.color.PDICCBased;
import org.apache.pdfbox.pdmodel.graphics.predictor.PredictorAlgorithm;
@@ -146,12 +149,42 @@ public class PDPixelMap extends PDXObjec
if (bpc == 1)
{
- byte[] map = new byte[] {(byte)0x00, (byte)0xff};
- cm = new IndexColorModel(1, 2, map, map, map, 1);
+ byte[] map = null;
+ if (colorspace instanceof PDDeviceGray)
+ {
+ map = new byte[] {(byte)0xff};
+ }
+ else if (colorspace instanceof PDICCBased)
+ {
+ if ( ((PDICCBased)colorspace).getNumberOfComponents() == 1)
+ {
+ map = new byte[] {(byte)0xff};
+ }
+ else
+ {
+ map = new byte[] {(byte)0x00, (byte)0xff};
+ }
+ }
+ else
+ {
+ map = new byte[] {(byte)0x00, (byte)0xff};
+ }
+ cm = new IndexColorModel(bpc, map.length, map, map, map, Transparency.OPAQUE);
}
else
{
- cm = colorspace.createColorModel( bpc );
+ if (colorspace instanceof PDICCBased)
+ {
+ if (((PDICCBased)colorspace).getNumberOfComponents() == 1)
+ {
+ byte[] map = new byte[] {(byte)0xff};
+ cm = new IndexColorModel(bpc, 1, map, map, map, Transparency.OPAQUE);
+ }
+ else
+ cm = colorspace.createColorModel( bpc );
+ }
+ else
+ cm = colorspace.createColorModel( bpc );
}
log.info("ColorModel: " + cm.toString());