From d8c9af01d3bdf2943d226e67e987d9e140e43b58 Mon Sep 17 00:00:00 2001 From: Jeremias Maerki Date: Sat, 3 Feb 2007 22:22:26 +0000 Subject: [PATCH] Support for soft masks (transparency) with ImageIO image adapter. Should help with transparent PNGs. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@503323 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/fop/image/ImageIOImage.java | 38 ++++++++++++------- status.xml | 3 ++ 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/java-1.4/org/apache/fop/image/ImageIOImage.java b/src/java-1.4/org/apache/fop/image/ImageIOImage.java index 463331530..ebb4a09eb 100644 --- a/src/java-1.4/org/apache/fop/image/ImageIOImage.java +++ b/src/java-1.4/org/apache/fop/image/ImageIOImage.java @@ -46,6 +46,8 @@ import org.w3c.dom.NodeList; */ public class ImageIOImage extends AbstractFopImage { + private byte[] softMask = null; + /** * Creates a new ImageIOImage. * @param info the image info from the ImageReader @@ -163,22 +165,14 @@ public class ImageIOImage extends AbstractFopImage { } } } else { - // TRANSLUCENT - /* - * this.isTransparent = false; - * for (int i = 0; i < this.width * this.height; i++) { - * if (cm.getAlpha(tmpMap[i]) == 0) { - * this.isTransparent = true; - * this.transparentColor = new PDFColor(cm.getRed(tmpMap[i]), - * cm.getGreen(tmpMap[i]), cm.getBlue(tmpMap[i])); - * break; - * } - * } - * // or use special API... - */ + //TODO Is there another case? this.isTransparent = false; } } else { + // TRANSLUCENT + this.softMask = new byte[width * height]; + imageData.getAlphaRaster().getDataElements( + 0, 0, width, height, this.softMask); this.isTransparent = false; } } else { @@ -217,5 +211,23 @@ public class ImageIOImage extends AbstractFopImage { return loadDefaultOriginalData(); } + /** @see org.apache.fop.image.FopImage#hasSoftMask() */ + public boolean hasSoftMask() { + if (this.bitmaps == null && this.raw == null) { + loadBitmap(); + } + + return (this.softMask != null); + } + + /** @see org.apache.fop.image.FopImage#getSoftMask() */ + public byte[] getSoftMask() { + if (this.bitmaps == null) { + loadBitmap(); + } + + return this.softMask; + } + } diff --git a/status.xml b/status.xml index 8b2ab8127..5e11e4247 100644 --- a/status.xml +++ b/status.xml @@ -28,6 +28,9 @@ + + Support for soft masks (transparency) with ImageIO image adapter. + Fix incorrect behaviour of the BreakingAlgorithm when some inline content is wider than the available ipd, causing a restart. -- 2.39.5