]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Bugzilla #45795:
authorJeremias Maerki <jeremias@apache.org>
Wed, 17 Sep 2008 16:41:14 +0000 (16:41 +0000)
committerJeremias Maerki <jeremias@apache.org>
Wed, 17 Sep 2008 16:41:14 +0000 (16:41 +0000)
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

src/java/org/apache/fop/pdf/AlphaRasterImage.java
status.xml

index ae39cadb7151cc085e16ffbd8981c2695ff05a05..bd31148be853e18a1081175cb60ebd7b3d701113 100644 (file)
@@ -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;
index 637445cfa06c629ef44619657e9abf8afb928ca9..50fc66b0a37848837d16a5197c8b520dd87e31a2 100644 (file)
 
   <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>