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/30 19:47:18 UTC
svn commit: r929199 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject:
PDPixelMap.java PDXObjectImage.java
Author: lehmi
Date: Tue Mar 30 17:47:18 2010
New Revision: 929199
URL: http://svn.apache.org/viewvc?rev=929199&view=rev
Log:
PDFBOX-672: take the decode array of an XObjectImage into amount when calculating the color model.
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMap.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.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=929199&r1=929198&r2=929199&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 Tue Mar 30 17:47:18 2010
@@ -135,7 +135,6 @@ public class PDPixelMap extends PDXObjec
int bpc = getBitsPerComponent();
int predictor = getPredictor();
List filters = getPDStream().getFilters();
- ColorModel cm;
byte[] array = getPDStream().getByteArray();
@@ -147,12 +146,23 @@ public class PDPixelMap extends PDXObjec
return null;
}
+ ColorModel cm = null;
if (bpc == 1)
{
byte[] map = null;
if (colorspace instanceof PDDeviceGray)
{
- map = new byte[] {(byte)0xff};
+ COSArray decode = getDecode();
+ // we have to invert the b/w-values,
+ // if the Decode array exists and consists of (1,0)
+ if (decode != null && decode.getInt(0) == 1)
+ {
+ map = new byte[] {(byte)0xff};
+ }
+ else
+ {
+ map = new byte[] {(byte)0x00, (byte)0xff};
+ }
}
else if (colorspace instanceof PDICCBased)
{
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java?rev=929199&r1=929198&r2=929199&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java Tue Mar 30 17:47:18 2010
@@ -24,6 +24,7 @@ import java.io.File;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.pdfbox.cos.COSArray;
import org.apache.pdfbox.cos.COSBase;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDDocument;
@@ -158,7 +159,7 @@ file.
*/
public int getHeight()
{
- return getCOSStream().getInt( "Height", -1 );
+ return getCOSStream().getInt( COSName.HEIGHT, -1 );
}
/**
@@ -168,7 +169,7 @@ file.
*/
public void setHeight( int height )
{
- getCOSStream().setInt( "Height", height );
+ getCOSStream().setInt( COSName.HEIGHT, height );
}
/**
@@ -178,7 +179,7 @@ file.
*/
public int getWidth()
{
- return getCOSStream().getInt( "Width", -1 );
+ return getCOSStream().getInt( COSName.WIDTH, -1 );
}
/**
@@ -188,7 +189,7 @@ file.
*/
public void setWidth( int width )
{
- getCOSStream().setInt( "Width", width );
+ getCOSStream().setInt( COSName.WIDTH, width );
}
/**
@@ -294,7 +295,7 @@ file.
*/
public boolean getImageMask()
{
- return getCOSStream().getBoolean( "ImageMask", false );
+ return getCOSStream().getBoolean( COSName.IMAGE_MASK, false );
}
/**
@@ -306,4 +307,17 @@ file.
{
graphicsState = newGS;
}
+
+ /**
+ * Returns the Decode Array of an XObjectImage.
+ * @return the decode array
+ */
+ public COSArray getDecode() {
+ COSBase decode = getCOSStream().getDictionaryObject( COSName.DECODE );
+ if (decode != null && decode instanceof COSArray)
+ {
+ return (COSArray)decode;
+ }
+ return null;
+ }
}