diff options
author | Jeremias Maerki <jeremias@apache.org> | 2008-09-17 16:41:14 +0000 |
---|---|---|
committer | Jeremias Maerki <jeremias@apache.org> | 2008-09-17 16:41:14 +0000 |
commit | 97771c4e93dc1032bc7e793a0aa18f5137f2f2b4 (patch) | |
tree | d0111b060fc60ee27f60188254b07ce9523adbbb | |
parent | 937b5b3d50ada4cb2f9607810914adb7888fe9ab (diff) | |
download | xmlgraphics-fop-97771c4e93dc1032bc7e793a0aa18f5137f2f2b4.tar.gz xmlgraphics-fop-97771c4e93dc1032bc7e793a0aa18f5137f2f2b4.zip |
Bugzilla #45795:
PDF Output: Added support for handling 16-bit alpha channel. They are currently converted to 8 bits.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@696365 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | src/java/org/apache/fop/pdf/AlphaRasterImage.java | 15 | ||||
-rw-r--r-- | status.xml | 4 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/java/org/apache/fop/pdf/AlphaRasterImage.java b/src/java/org/apache/fop/pdf/AlphaRasterImage.java index ae39cadb7..bd31148be 100644 --- a/src/java/org/apache/fop/pdf/AlphaRasterImage.java +++ b/src/java/org/apache/fop/pdf/AlphaRasterImage.java @@ -48,6 +48,9 @@ public class AlphaRasterImage implements PDFImage { */ public AlphaRasterImage(String k, Raster alpha) { this.key = k; + //Enable the commented line below if 16-bit alpha channels are desired. + //Otherwise, we compress the alpha channel to 8 bit which should be sufficient. + //this.bitsPerComponent = alpha.getSampleModel().getSampleSize(0); this.bitsPerComponent = 8; this.colorSpace = new PDFDeviceColorSpace(PDFDeviceColorSpace.DEVICE_GRAY); if (alpha == null) { @@ -148,6 +151,18 @@ public class AlphaRasterImage implements PDFImage { alpha.getDataElements(0, y, w, 1, line); out.write(line); } + } else if (dataType == DataBuffer.TYPE_USHORT) { + short[] sline = new short[nbands * w]; + byte[] line = new byte[nbands * w]; + for (int y = 0; y < h; y++) { + alpha.getDataElements(0, y, w, 1, sline); + for (int i = 0; i < w; i++) { + //this compresses a 16-bit alpha channel to 8 bits! + //we probably don't ever need a 16-bit channel + line[i] = (byte)(sline[i] >> 8); + } + out.write(line); + } } else if (dataType == DataBuffer.TYPE_INT) { //Is there an better way to get a 8bit raster from a TYPE_INT raster? int shift = 24; diff --git a/status.xml b/status.xml index 637445cfa..50fc66b0a 100644 --- a/status.xml +++ b/status.xml @@ -53,6 +53,10 @@ <changes> <release version="FOP Trunk" date="TBD"> + <action context="Renderers" dev="JM" type="add" fixes-bug="45795"> + PDF Output: Added support for handling 16-bit alpha channel. They are currently + converted to 8 bits. + </action> <action context="Renderers" dev="JM" type="fix"> PDF Output: Made sure the XMP Metadata stream is never compressed. </action> |