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/11/02 21:58:59 UTC
svn commit: r1196796 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java
Author: lehmi
Date: Wed Nov 2 20:58:58 2011
New Revision: 1196796
URL: http://svn.apache.org/viewvc?rev=1196796&view=rev
Log:
PDFBOX-1156: added the tint transformation function of a DeviceN color space to calculate color values
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java?rev=1196796&r1=1196795&r2=1196796&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java Wed Nov 2 20:58:58 2011
@@ -58,6 +58,7 @@ import org.apache.pdfbox.pdmodel.common.
import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceCMYK;
import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceGray;
+import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceN;
import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;
import org.apache.pdfbox.pdmodel.graphics.color.PDICCBased;
import org.apache.pdfbox.pdmodel.graphics.color.PDSeparation;
@@ -261,7 +262,14 @@ public class PDJpeg extends PDXObjectIma
else if (cs instanceof PDSeparation)
{
// create BufferedImage based on the converted color values
- bi = processSeparation(readImage(img), cs);
+ bi = processTintTransformation(readImage(img),
+ ((PDSeparation)cs).getTintTransform(), cs.getJavaColorSpace());
+ }
+ else if (cs instanceof PDDeviceN)
+ {
+ // create BufferedImage based on the converted color values
+ bi = processTintTransformation(readImage(img),
+ ((PDDeviceN)cs).getTintTransform(), cs.getJavaColorSpace());
}
else
{
@@ -416,13 +424,12 @@ public class PDJpeg extends PDXObjectIma
return new BufferedImage(cm, writeableRaster, true, null);
}
- // a separation colorspace uses a tint transform function to convert color values
- private BufferedImage processSeparation(Raster raster, PDColorSpace colorspace) throws IOException
+ // Separation and DeviceN colorspaces are using a tint transform function to convert color values
+ private BufferedImage processTintTransformation(Raster raster, PDFunction function, ColorSpace colorspace)
+ throws IOException
{
- PDSeparation csSeparation = (PDSeparation)colorspace;
- PDFunction function = csSeparation.getTintTransform();
int numberOfInputValues = function.getNumberOfInputParameters();
- int numberOfOutputValues = function.getNumberOfInputParameters();
+ int numberOfOutputValues = function.getNumberOfOutputParameters();
int width = raster.getWidth();
int height = raster.getHeight();
byte[] sourceBuffer = new byte[width * height * numberOfOutputValues];
@@ -449,7 +456,7 @@ public class PDJpeg extends PDXObjectIma
}
}
// create a target color model
- ColorModel cm = new ComponentColorModel(colorspace.getJavaColorSpace(),
+ ColorModel cm = new ComponentColorModel(colorspace,
false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
// create the target raster
WritableRaster writeableRaster = cm.createCompatibleWritableRaster(width, height);