]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Restored PNG support for RTF output and fixed two bugs related to image handling...
authorJeremias Maerki <jeremias@apache.org>
Tue, 13 Dec 2005 20:41:28 +0000 (20:41 +0000)
committerJeremias Maerki <jeremias@apache.org>
Tue, 13 Dec 2005 20:41:28 +0000 (20:41 +0000)
Added a default implementation for loading the raw image. Used by most FopImage implementations.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@356612 13f79535-47bb-0310-9956-ffa450edef68

src/java-1.4/org/apache/fop/image/ImageIOImage.java
src/java/org/apache/fop/image/AbstractFopImage.java
src/java/org/apache/fop/image/EmfImage.java
src/java/org/apache/fop/image/GifImage.java
src/java/org/apache/fop/image/JAIImage.java
src/java/org/apache/fop/image/JimiImage.java
src/java/org/apache/fop/image/PNGImage.java
src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfExternalGraphic.java

index 111011918f4989b15c178d5f3b1b8ec726d7bedc..3dddc05ad3d8abc8269bfb374bcfc9a04452c8bf 100644 (file)
@@ -153,5 +153,10 @@ public class ImageIOImage extends AbstractFopImage {
         return true;
     }
 
+    /** @see org.apache.fop.image.AbstractFopImage#loadOriginalData() */
+    protected boolean loadOriginalData() {
+        return loadDefaultOriginalData();
+    }
+    
 }
 
index 461b474eaebde02c27c6c2e7a381b53dce43c437..e8189c95c4dc2d6238ad6cb3600f4daf4f8b563c 100644 (file)
@@ -24,6 +24,7 @@ import java.awt.color.ICC_Profile;
 import java.io.InputStream;
 import java.awt.Color;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -204,6 +205,25 @@ public abstract class AbstractFopImage implements FopImage {
         return false;
     }
 
+    /**
+     * Load the original image data. This is generic code for use by any
+     * subclass that wants to use this from a loadOriginalData() implementation.
+     *
+     * @return true if the loading was successful
+     */
+    protected boolean loadDefaultOriginalData() {
+        try {
+            this.raw = IOUtils.toByteArray(inputStream);
+        } catch (java.io.IOException ex) {
+            log.error("Error while loading image (EMF): " + ex.getMessage(), ex);
+            return false;
+        } finally {
+            IOUtils.closeQuietly(inputStream);
+            inputStream = null;
+        }
+        return true;
+    }
+    
     /**
      * @return the image width (in pixels)
      */
index 0954e97d76205947538c91df476975a868819e20..23c393749328f0b32a6ef1d48494b7faa90c299c 100644 (file)
@@ -47,17 +47,7 @@ public class EmfImage extends AbstractFopImage {
      * @return true if loaded false for any error\r
      */\r
     protected boolean loadOriginalData() {\r
-        try {\r
-            this.raw = IOUtils.toByteArray(inputStream);\r
-        } catch (java.io.IOException ex) {\r
-            log.error("Error while loading image (EMF): " + ex.getMessage(), ex);\r
-            return false;\r
-        } finally {\r
-            IOUtils.closeQuietly(inputStream);\r
-            inputStream = null;\r
-        }\r
-\r
-        return true;\r
+        return loadDefaultOriginalData();\r
     }\r
 }\r
 \r
index 10a3d6328d066ad6d81a6d7eabe085afdf3b463a..c00689f237812b412042965e89c23ecd845d9f9c 100644 (file)
@@ -165,6 +165,11 @@ public class GifImage extends AbstractFopImage {
         return true;
     }
 
+    /** @see org.apache.fop.image.AbstractFopImage#loadOriginalData() */
+    protected boolean loadOriginalData() {
+        return loadDefaultOriginalData();
+    }
+    
     /**
      * A dummy url connection for a gif image in an input stream.
      */
index 5e71f9902f7f111050fb0baea425435d79c68fc1..a7eac59f82c4b4127593dd30aa0e214bed316906 100644 (file)
@@ -177,5 +177,10 @@ public class JAIImage extends AbstractFopImage {
         }
     }
 
+    /** @see org.apache.fop.image.AbstractFopImage#loadOriginalData() */
+    protected boolean loadOriginalData() {
+        return loadDefaultOriginalData();
+    }
+    
 }
 
index 35db0bbc1dd76b026ab83ceb7609370d602a2d36..2d11440e1bb421da1639917daf02b34cf1cc64d1 100644 (file)
@@ -176,5 +176,10 @@ public class JimiImage extends AbstractFopImage {
         }
     }
 
+    /** @see org.apache.fop.image.AbstractFopImage#loadOriginalData() */
+    protected boolean loadOriginalData() {
+        return loadDefaultOriginalData();
+    }
+    
 }
 
index 6235b9720f083f3331c4adf4ec9480910cc94398..6cf50d47c9fde26d91b507242eef561e6bb746cd 100644 (file)
 
 package org.apache.fop.image;
 
+import java.awt.color.ColorSpace;
+import java.awt.color.ICC_Profile;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 
 import org.apache.batik.ext.awt.image.codec.PNGRed;
 import org.apache.batik.ext.awt.image.codec.PNGDecodeParam;
 import org.apache.batik.ext.awt.image.codec.SeekableStream;
 import org.apache.batik.ext.awt.image.rendered.CachableRed;
+import org.apache.commons.io.IOUtils;
+import org.apache.fop.util.CMYKColorSpace;
 
 /**
  * FopImage object using PNG
@@ -60,4 +65,26 @@ public class PNGImage extends BatikImage {
         return red;
     }
     
+    /**
+     * Load the original PNG data.
+     * This loads the original PNG data as is into memory.
+     *
+     * @return true if loaded false for any error
+     */
+    protected boolean loadOriginalData() {
+        try {
+            seekableInput.seek(0);
+            this.raw = IOUtils.toByteArray(seekableInput);
+        
+        } catch (java.io.IOException ex) {
+            log.error("Error while loading raw image: " + ex.getMessage(), ex);
+            return false;
+        } finally {
+            IOUtils.closeQuietly(inputStream);
+            inputStream = null;
+        }
+
+        return true;
+    }
+    
 }
index ad1ee18851d41f50566fcc7986c8464f302de177..db97d1943a04d18286ae5381bab2b09f4e754f9d 100644 (file)
@@ -382,10 +382,13 @@ public class RtfExternalGraphic extends RtfElement {
         // Determine image file format
         String file = url.getFile ();
         imageformat = FormatBase.determineFormat(imagedata);
-        imageformat = imageformat.convert(imageformat, imagedata);
+        if (imageformat != null) {
+            imageformat = imageformat.convert(imageformat, imagedata);
+        }
         
-        if (imageformat.getType() == ImageConstants.I_NOT_SUPPORTED
-                | imageformat.getRtfTag() == "") {
+        if (imageformat == null 
+                || imageformat.getType() == ImageConstants.I_NOT_SUPPORTED
+                || "".equals(imageformat.getRtfTag())) {
             throw new ExternalGraphicException("The tag <fo:external-graphic> "
                     + "does not support "
                     + file.substring(file.lastIndexOf(".") + 1)