diff options
-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> |