keiron 2002/11/08 02:48:01
Modified: src/org/apache/fop/fo FOUserAgent.java
src/org/apache/fop/image AbstractFopImage.java BmpImage.java
EPSImage.java FopImage.java FopImageConsumer.java
GifImage.java ImageFactory.java JAIImage.java
JimiImage.java JpegImage.java XMLImage.java
src/org/apache/fop/image/analyser BMPReader.java
EPSReader.java GIFReader.java ImageReader.java
ImageReaderFactory.java JPEGReader.java
PNGReader.java SVGReader.java TIFFReader.java
XMLReader.java
src/org/apache/fop/svg PDFGraphics2D.java
Log:
handle image stream better, try to make sure only
opened once and properly closed
gif image broken until it can be loaded from a stream
Revision Changes Path
1.11 +12 -3 xml-fop/src/org/apache/fop/fo/FOUserAgent.java
Index: FOUserAgent.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/FOUserAgent.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- FOUserAgent.java 2 Sep 2002 14:47:28 -0000 1.10
+++ FOUserAgent.java 8 Nov 2002 10:47:58 -0000 1.11
@@ -13,9 +13,10 @@
import org.apache.avalon.framework.logger.LogEnabled;
import org.apache.avalon.framework.logger.Logger;
-import org.w3c.dom.*;
-
import java.util.HashMap;
+import java.io.InputStream;
+
+import org.w3c.dom.Document;
/**
* The User Agent for fo.
@@ -52,6 +53,14 @@
public String getBaseURL() {
return base;
+ }
+
+ /**
+ * Get an input stream for a reference.
+ * Temporary solution until API better.
+ */
+ public InputStream getStream(String uri) {
+ return null;
}
public float getPixelUnitToMillimeter() {
1.14 +10 -14 xml-fop/src/org/apache/fop/image/AbstractFopImage.java
Index: AbstractFopImage.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/AbstractFopImage.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- AbstractFopImage.java 25 Oct 2002 09:29:44 -0000 1.13
+++ AbstractFopImage.java 8 Nov 2002 10:47:58 -0000 1.14
@@ -11,6 +11,7 @@
import java.net.URL;
import java.awt.color.ColorSpace;
import java.awt.color.ICC_Profile;
+import java.io.InputStream;
// FOP
import org.apache.fop.pdf.PDFColor;
@@ -38,9 +39,9 @@
protected int m_height = 0;
/**
- * Image URL.
+ * Image input stream.
*/
- protected URL m_href = null;
+ protected InputStream inputStream = null;
/**
* ImageReader object (to obtain image header informations).
@@ -85,12 +86,12 @@
* <LI>image height
* </UL>
* The image data isn't kept in memory.
- * @param href image URL
+ * @param input input stream
* imgReader ImageReader object
* @return a new FopImage object
*/
- public AbstractFopImage(URL href, FopImage.ImageInfo info) {
- this.m_href = href;
+ public AbstractFopImage(FopImage.ImageInfo info) {
+ this.inputStream = info.inputStream;
this.imageInfo = info;
if(this.imageInfo.width != -1) {
m_width = imageInfo.width;
@@ -147,14 +148,6 @@
}
/**
- * Return the image URL.
- * @return the image URL (as String)
- */
- public String getURL() {
- return this.m_href.toString();
- }
-
- /**
* Return the image width.
* @return the image width
*/
@@ -178,6 +171,9 @@
return this.m_colorSpace;
}
+ /**
+ * Get ICC profile for this image.
+ */
public ICC_Profile getICCProfile() {
return null;
}
1.8 +12 -13 xml-fop/src/org/apache/fop/image/BmpImage.java
Index: BmpImage.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/BmpImage.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- BmpImage.java 25 Oct 2002 09:29:44 -0000 1.7
+++ BmpImage.java 8 Nov 2002 10:47:59 -0000 1.8
@@ -25,8 +25,8 @@
import org.apache.fop.fo.FOUserAgent;
public class BmpImage extends AbstractFopImage {
- public BmpImage(URL href, FopImage.ImageInfo imgReader) {
- super(href, imgReader);
+ public BmpImage(FopImage.ImageInfo imgReader) {
+ super(imgReader);
}
protected boolean loadBitmap(FOUserAgent ua) {
@@ -34,13 +34,11 @@
int hpos = 22; // offset positioning for w and height in bmp files
int[] headermap = new int[54];
int filepos = 0;
- InputStream file = null;
byte palette[] = null;
try {
- file = this.m_href.openStream();
boolean eof = false;
while ((!eof) && (filepos < 54)) {
- int input = file.read();
+ int input = inputStream.read();
if (input == -1)
eof = true;
else
@@ -54,7 +52,7 @@
while (!eof && countr < palettesize) {
int count2 = 2;
while (!eof && count2 >= -1) {
- int input = file.read();
+ int input = inputStream.read();
if (input == -1)
eof = true;
else if (count2 >= 0) {
@@ -69,7 +67,7 @@
}
} catch (IOException e) {
ua.getLogger().error("Error while loading image "
- + this.m_href.toString() + " : "
+ + "" + " : "
+ e.getClass() + " - "
+ e.getMessage(), e);
return false;
@@ -94,7 +92,7 @@
else if (this.m_bitsPerPixel == 4 || this.m_bitsPerPixel == 8)
bytes = this.m_width / (8 / this.m_bitsPerPixel);
else {
- ua.getLogger().error("Image (" + this.m_href.toString()
+ ua.getLogger().error("Image (" + ""
+ ") has " + this.m_bitsPerPixel
+ " which is not a supported BMP format.");
return false;
@@ -112,13 +110,14 @@
try {
int input;
int count = 0;
- file.skip((long)(imagestart - filepos));
- while ((input = file.read()) != -1)
+ inputStream.skip((long)(imagestart - filepos));
+ while ((input = inputStream.read()) != -1)
temp[count++] = input;
- file.close();
+ inputStream.close();
+ inputStream = null;
} catch (IOException e) {
ua.getLogger().error("Error while loading image "
- + this.m_href.toString() + " : "
+ + "" + " : "
+ e.getClass() + " - "
+ e.getMessage(), e);
return false;
1.9 +6 -6 xml-fop/src/org/apache/fop/image/EPSImage.java
Index: EPSImage.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/EPSImage.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- EPSImage.java 25 Oct 2002 09:29:44 -0000 1.8
+++ EPSImage.java 8 Nov 2002 10:47:59 -0000 1.9
@@ -35,14 +35,14 @@
/**
* Initialize docName and bounding box
*/
- private void init(URL href) {
+ private void init(String name) {
bbox = new int[4];
bbox[0] = 0;
bbox[1] = 0;
bbox[2] = 0;
bbox[3] = 0;
- docName = href.toString();
+ docName = name;
}
/**
@@ -59,9 +59,9 @@
return bbox;
}
- public EPSImage(URL href, FopImage.ImageInfo imgInfo) {
- super(href, imgInfo);
- init(href);
+ public EPSImage(FopImage.ImageInfo imgInfo) {
+ super(imgInfo);
+ init("");
if (imgInfo.data instanceof EPSData) {
epsData = (EPSData) imgInfo.data;
bbox = new int[4];
1.13 +2 -5 xml-fop/src/org/apache/fop/image/FopImage.java
Index: FopImage.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/FopImage.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- FopImage.java 27 Jun 2002 11:45:54 -0000 1.12
+++ FopImage.java 8 Nov 2002 10:47:59 -0000 1.13
@@ -32,9 +32,6 @@
*/
public boolean load(int type, FOUserAgent ua);
- // Ressource location
- public String getURL();
-
// image size
public int getWidth();
public int getHeight();
@@ -65,7 +62,7 @@
public int getRessourceBytesSize();
public static class ImageInfo {
- public InputStream stream;
+ public InputStream inputStream;
public int width;
public int height;
public Object data;
1.7 +2 -1 xml-fop/src/org/apache/fop/image/FopImageConsumer.java
Index: FopImageConsumer.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/FopImageConsumer.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- FopImageConsumer.java 21 Feb 2002 09:54:27 -0000 1.6
+++ FopImageConsumer.java 8 Nov 2002 10:47:59 -0000 1.7
@@ -134,3 +134,4 @@
}
}
+
1.5 +21 -18 xml-fop/src/org/apache/fop/image/GifImage.java
Index: GifImage.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/GifImage.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- GifImage.java 27 Jun 2002 11:45:54 -0000 1.4
+++ GifImage.java 8 Nov 2002 10:47:59 -0000 1.5
@@ -13,6 +13,7 @@
import java.awt.image.ColorModel;
import java.awt.image.IndexColorModel;
import java.awt.color.ColorSpace;
+import java.io.InputStream;
// FOP
import org.apache.fop.pdf.PDFColor;
@@ -27,14 +28,19 @@
* @see FopImage
*/
public class GifImage extends AbstractFopImage {
- public GifImage(URL href, FopImage.ImageInfo imgReader) {
- super(href, imgReader);
+ public GifImage(FopImage.ImageInfo imgReader) {
+ super(imgReader);
}
protected boolean loadBitmap(FOUserAgent ua) {
int[] tmpMap = null;
+
try {
- ImageProducer ip = (ImageProducer) this.m_href.getContent();
+ ImageProducer ip = null;
+ // todo: how to load gif image from stream
+ //ip = (ImageProducer) inputStream.getContent();
+ inputStream.close();
+ inputStream = null;
FopImageConsumer consumer = new FopImageConsumer(ip);
ip.startProduction(consumer);
@@ -66,21 +72,18 @@
} else if (transparencyType ==
java.awt.Transparency.BITMASK) {
if (cm instanceof IndexColorModel) {
+ IndexColorModel indexcm = (IndexColorModel) cm;
this.m_isTransparent = false;
- byte[] alphas = new byte[
- ((IndexColorModel) cm).getMapSize()];
- byte[] reds = new byte[
- ((IndexColorModel) cm).getMapSize()];
- byte[] greens = new byte[
- ((IndexColorModel) cm).getMapSize()];
- byte[] blues = new byte[
- ((IndexColorModel) cm).getMapSize()];
- ((IndexColorModel) cm).getAlphas(alphas);
- ((IndexColorModel) cm).getReds(reds);
- ((IndexColorModel) cm).getGreens(greens);
- ((IndexColorModel) cm).getBlues(blues);
+ byte[] alphas = new byte[indexcm.getMapSize()];
+ byte[] reds = new byte[indexcm.getMapSize()];
+ byte[] greens = new byte[indexcm.getMapSize()];
+ byte[] blues = new byte[indexcm.getMapSize()];
+ indexcm.getAlphas(alphas);
+ indexcm.getReds(reds);
+ indexcm.getGreens(greens);
+ indexcm.getBlues(blues);
for (int i = 0;
- i < ((IndexColorModel) cm).getMapSize();
+ i < indexcm.getMapSize();
i++) {
if ((alphas[i] & 0xFF) == 0) {
this.m_isTransparent = true;
@@ -114,7 +117,7 @@
}
} catch (Exception ex) {
ua.getLogger().error("Error while loading image "
- + this.m_href.toString() + " : "
+ + "" + " : "
+ ex.getClass() + " - "
+ ex.getMessage(), ex);
return false;
1.9 +95 -66 xml-fop/src/org/apache/fop/image/ImageFactory.java
Index: ImageFactory.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/ImageFactory.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ImageFactory.java 4 Jul 2002 07:30:57 -0000 1.8
+++ ImageFactory.java 8 Nov 2002 10:47:59 -0000 1.9
@@ -10,6 +10,7 @@
// Java
import java.io.IOException;
import java.io.InputStream;
+import java.io.BufferedInputStream;
import java.io.File;
import java.net.URL;
import java.net.MalformedURLException;
@@ -59,7 +60,6 @@
*/
// Get the absolute URL
URL absoluteURL = null;
- InputStream imgIS = null;
href = href.trim();
if (href.startsWith("url(") && (href.indexOf(")") != -1)) {
href = href.substring(4, href.indexOf(")")).trim();
@@ -102,9 +102,92 @@
protected static FopImage loadImage(String href, String baseURL,
FOUserAgent ua) {
Logger log = ua.getLogger();
+
+ InputStream imgIS = openStream(href, baseURL, ua);
+
+ // If not, check image type
+ FopImage.ImageInfo imgInfo = null;
+ try {
+ imgInfo = ImageReaderFactory.make(
+ href, imgIS, ua);
+ } catch (Exception e) {
+ log.error("Error while recovering Image Informations (" +
+ href + ") : " + e.getMessage(), e);
+ return null;
+ }
+ if (imgInfo == null) {
+ try {
+ imgIS.close();
+ imgIS = null;
+ } catch (Exception e) {
+ }
+ log.error("No ImageReader for this type of image (" +
+ href + ")");
+ return null;
+ }
+ // Associate mime-type to FopImage class
+ String imgMimeType = imgInfo.mimeType;
+ String imgClassName = getImageClassName(imgMimeType);
+ if (imgClassName == null) {
+ log.error("Unsupported image type (" +
+ href + ") : " + imgMimeType);
+ return null;
+ }
+
+ // load the right image class
+ // return new <FopImage implementing class>
+ Object imageInstance = null;
+ Class imageClass = null;
+ try {
+ imageClass = Class.forName(imgClassName);
+ Class[] imageConstructorParameters = new Class[1];
+ imageConstructorParameters[0] =
org.apache.fop.image.FopImage.ImageInfo.class;
+ Constructor imageConstructor =
+ imageClass.getDeclaredConstructor(
+ imageConstructorParameters);
+ Object[] initArgs = new Object[1];
+ initArgs[0] = imgInfo;
+ imageInstance = imageConstructor.newInstance(initArgs);
+ } catch (java.lang.reflect.InvocationTargetException ex) {
+ Throwable t = ex.getTargetException();
+ String msg;
+ if (t != null) {
+ msg = t.getMessage();
+ } else {
+ msg = ex.getMessage();
+ }
+ log.error("Error creating FopImage object (" +
+ href + ") : " + msg, (t == null) ? ex:t);
+ return null;
+ }
+ catch (Exception ex) {
+ log.error("Error creating FopImage object (" +
+ href + ") : " + ex.getMessage(), ex);
+ return null;
+ }
+ if (!(imageInstance instanceof org.apache.fop.image.FopImage)) {
+ log.error("Error creating FopImage object (" +
+ href + ") : " + "class " +
+ imageClass.getName() + " doesn't implement
org.apache.fop.image.FopImage interface");
+ return null;
+ }
+ return (FopImage) imageInstance;
+ }
+
+ /**
+ * create an FopImage objects.
+ * @param href image URL as a String
+ * @return a new FopImage object
+ */
+ protected static InputStream openStream(String href, String baseURL,
+ FOUserAgent ua) {
+ Logger log = ua.getLogger();
// Get the absolute URL
URL absoluteURL = null;
- InputStream imgIS = null;
+ InputStream imgIS = ua.getStream(href);
+ if(imgIS != null) {
+ return imgIS;
+ }
try {
// try url as complete first, this can cause
// a problem with relative uri's if there is an
@@ -138,31 +221,23 @@
}
}
+ BufferedInputStream bis = null;
// If not, check image type
FopImage.ImageInfo imgInfo = null;
try {
if (imgIS == null) {
imgIS = absoluteURL.openStream();
}
- imgInfo = ImageReaderFactory.make(
- absoluteURL.toExternalForm(), imgIS, ua);
+ bis = new BufferedInputStream(imgIS);
} catch (Exception e) {
- log.error("Error while recovering Image Informations (" +
- absoluteURL.toString() + ") : " + e.getMessage(), e);
+ log.error("Error while opening stream for (" +
+ href + ") : " + e.getMessage(), e);
return null;
}
- finally { if (imgIS != null) {
- try {
- imgIS.close();
- } catch (IOException e) {}
- }
- } if (imgInfo == null) {
- log.error("No ImageReader for this type of image (" +
- absoluteURL.toString() + ")");
- return null;
- }
- // Associate mime-type to FopImage class
- String imgMimeType = imgInfo.mimeType;
+ return bis;
+ }
+
+ private static String getImageClassName(String imgMimeType) {
String imgClassName = null;
if ("image/gif".equals(imgMimeType)) {
imgClassName = "org.apache.fop.image.GifImage";
@@ -189,54 +264,8 @@
} else if ("text/xml".equals(imgMimeType)) {
imgClassName = "org.apache.fop.image.XMLImage";
}
- if (imgClassName == null) {
- log.error("Unsupported image type (" +
- absoluteURL.toString() + ") : " + imgMimeType);
- return null;
- }
-
- // load the right image class
- // return new <FopImage implementing class>
- Object imageInstance = null;
- Class imageClass = null;
- try {
- imageClass = Class.forName(imgClassName);
- Class[] imageConstructorParameters = new Class[2];
- imageConstructorParameters[0] = java.net.URL.class;
- imageConstructorParameters[1] =
org.apache.fop.image.FopImage.ImageInfo.class;
- Constructor imageConstructor =
- imageClass.getDeclaredConstructor(
- imageConstructorParameters);
- Object[] initArgs = new Object[2];
- initArgs[0] = absoluteURL;
- initArgs[1] = imgInfo;
- imageInstance = imageConstructor.newInstance(initArgs);
- } catch (java.lang.reflect.InvocationTargetException ex) {
- Throwable t = ex.getTargetException();
- String msg;
- if (t != null) {
- msg = t.getMessage();
- } else {
- msg = ex.getMessage();
- }
- log.error("Error creating FopImage object (" +
- absoluteURL.toString() + ") : " + msg, (t == null) ? ex:t);
- return null;
- }
- catch (Exception ex) {
- log.error("Error creating FopImage object (" +
- absoluteURL.toString() + ") : " + ex.getMessage(), ex);
- return null;
- }
- if (!(imageInstance instanceof org.apache.fop.image.FopImage)) {
- log.error("Error creating FopImage object (" +
- absoluteURL.toString() + ") : " + "class " +
- imageClass.getName() + " doesn't implement
org.apache.fop.image.FopImage interface");
- return null;
- }
- return (FopImage) imageInstance;
+ return imgClassName;
}
-
}
class BasicImageCache implements ImageCache {
1.8 +7 -10 xml-fop/src/org/apache/fop/image/JAIImage.java
Index: JAIImage.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/JAIImage.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- JAIImage.java 19 Jul 2002 12:13:43 -0000 1.7
+++ JAIImage.java 8 Nov 2002 10:47:59 -0000 1.8
@@ -10,7 +10,7 @@
// Java
import java.net.URL;
import java.io.InputStream;
-import java.io.BufferedInputStream;
+import java.io.InputStream;
// AWT
import java.awt.image.ColorModel;
@@ -36,20 +36,17 @@
*/
public class JAIImage extends AbstractFopImage {
- public JAIImage(URL href, FopImage.ImageInfo imgReader) {
- super(href, imgReader);
+ public JAIImage(FopImage.ImageInfo imgReader) {
+ super(imgReader);
}
protected void loadImage() {
try {
- InputStream inputStream = this.m_href.openStream();
- /*
- * BufferedInputStream inputStream =
this.m_imageReader.getInputStream();
- * inputStream.reset();
- */
com.sun.media.jai.codec.FileCacheSeekableStream seekableInput =
new FileCacheSeekableStream(inputStream);
RenderedOp imageOp = JAI.create("stream", seekableInput);
+ inputStream.close();
+ inputStream = null;
this.m_height = imageOp.getHeight();
this.m_width = imageOp.getWidth();
@@ -138,7 +135,7 @@
}
catch (Exception ex) {
/*throw new FopImageException("Error while loading image "
- + this.m_href.toString() + " : "
+ + "" + " : "
+ ex.getClass() + " - "
+ ex.getMessage());
*/}
1.16 +9 -5 xml-fop/src/org/apache/fop/image/JimiImage.java
Index: JimiImage.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/JimiImage.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- JimiImage.java 25 Oct 2002 09:29:44 -0000 1.15
+++ JimiImage.java 8 Nov 2002 10:47:59 -0000 1.16
@@ -13,6 +13,7 @@
import java.awt.image.ColorModel;
import java.awt.image.IndexColorModel;
import java.awt.color.ColorSpace;
+import java.io.InputStream;
// Jimi
import com.sun.jimi.core.*;
@@ -32,8 +33,8 @@
* @see FopImage
*/
public class JimiImage extends AbstractFopImage {
- public JimiImage(URL href, FopImage.ImageInfo imgReader) {
- super(href, imgReader);
+ public JimiImage(FopImage.ImageInfo imgReader) {
+ super(imgReader);
try {
Class c = Class.forName("com.sun.jimi.core.Jimi");
} catch (ClassNotFoundException e) {
@@ -61,7 +62,7 @@
int[] tmpMap = null;
try {
ImageProducer ip =
- Jimi.getImageProducer(this.m_href.openStream(),
+ Jimi.getImageProducer(inputStream,
Jimi.SYNCHRONOUS | Jimi.IN_MEMORY);
FopImageConsumer consumer = new FopImageConsumer(ip);
ip.startProduction(consumer);
@@ -72,6 +73,9 @@
this.m_height = consumer.getHeight();
this.m_width = consumer.getWidth();
+ inputStream.close();
+ inputStream = null;
+
try {
tmpMap = consumer.getImage();
} catch (Exception ex) {
@@ -139,7 +143,7 @@
}
} catch (Throwable ex) {
log.error("Error while loading image "
- + this.m_href.toString(), ex);
+ + "", ex);
return;
}
1.9 +11 -9 xml-fop/src/org/apache/fop/image/JpegImage.java
Index: JpegImage.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/JpegImage.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- JpegImage.java 25 Oct 2002 09:29:44 -0000 1.8
+++ JpegImage.java 8 Nov 2002 10:47:59 -0000 1.9
@@ -33,8 +33,8 @@
boolean found_icc_profile = false;
boolean found_dimensions = false;
- public JpegImage(URL href, FopImage.ImageInfo imgReader) {
- super(href, imgReader);
+ public JpegImage(FopImage.ImageInfo imgReader) {
+ super(imgReader);
}
protected boolean loadOriginalData(FOUserAgent ua) {
@@ -47,14 +47,16 @@
boolean cont = true;
try {
- inStream = this.m_href.openStream();
+ inStream = inputStream;
while ((bytes_read = inStream.read(readBuf)) != -1) {
baos.write(readBuf, 0, bytes_read);
}
+ inputStream.close();
+ inputStream = null;
} catch (java.io.IOException ex) {
ua.getLogger().error("Error while loading image " +
- this.m_href.toString() + " : " +
ex.getClass() +
+ "" + " : " + ex.getClass() +
" - " + ex.getMessage(), ex);
return false;
}
@@ -94,7 +96,7 @@
ColorSpace.CS_CIEXYZ);
} else {
ua.getLogger().error("Unknown ColorSpace for image: "
- + this.m_href.toString());
+ + "");
return false;
}
@@ -140,7 +142,7 @@
}
} else {
ua.getLogger().error( "1 Error while loading image " +
- this.m_href.toString() +
+ "" +
" : JpegImage - Invalid JPEG Header.");
return false;
}
@@ -150,14 +152,14 @@
iccStream.write(align);
} catch (Exception e) {
ua.getLogger().error( "1 Error while loading image " +
- this.m_href.toString() + " : " +
+ "" + " : " +
e.getMessage(), e);
return false;
}
iccProfile = ICC_Profile.getInstance(iccStream.toByteArray());
} else if(this.m_colorSpace == null) {
ua.getLogger().error("ColorSpace not specified for image: "
- + this.m_href.toString());
+ + "");
return false;
}
return true;
1.3 +4 -3 xml-fop/src/org/apache/fop/image/XMLImage.java
Index: XMLImage.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/XMLImage.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- XMLImage.java 19 Aug 2002 11:54:53 -0000 1.2
+++ XMLImage.java 8 Nov 2002 10:47:59 -0000 1.3
@@ -10,6 +10,7 @@
// Java
import java.net.URL;
import org.w3c.dom.Document;
+import java.io.InputStream;
// FOP
import org.apache.fop.apps.Driver;
@@ -25,8 +26,8 @@
Document doc;
String ns = "";
- public XMLImage(URL href, FopImage.ImageInfo imgInfo) {
- super(href, imgInfo);
+ public XMLImage(FopImage.ImageInfo imgInfo) {
+ super(imgInfo);
if(imgInfo.data instanceof Document) {
doc = (Document)imgInfo.data;
loaded = loaded | ORIGINAL_DATA;
1.7 +9 -7 xml-fop/src/org/apache/fop/image/analyser/BMPReader.java
Index: BMPReader.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/analyser/BMPReader.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- BMPReader.java 10 Sep 2002 11:21:32 -0000 1.6
+++ BMPReader.java 8 Nov 2002 10:48:00 -0000 1.7
@@ -7,7 +7,7 @@
package org.apache.fop.image.analyser;
// Java
-import java.io.BufferedInputStream;
+import java.io.InputStream;
import java.io.IOException;
// FOP
@@ -26,13 +26,15 @@
protected static final int BMP_SIG_LENGTH = 26;
/** @see org.apache.fop.image.analyser.ImageReader */
- public FopImage.ImageInfo verifySignature(String uri, BufferedInputStream bis,
+ public FopImage.ImageInfo verifySignature(String uri, InputStream bis,
FOUserAgent ua) throws IOException {
byte[] header = getDefaultHeader(bis);
boolean supported = ((header[0] == (byte) 0x42)
&& (header[1] == (byte) 0x4d));
if (supported) {
- return getDimension(header);
+ FopImage.ImageInfo info = getDimension(header);
+ info.inputStream = bis;
+ return info;
} else {
return null;
}
@@ -69,7 +71,7 @@
return info;
}
- private byte[] getDefaultHeader(BufferedInputStream imageStream)
+ private byte[] getDefaultHeader(InputStream imageStream)
throws IOException {
byte[] header = new byte[BMP_SIG_LENGTH];
try {
@@ -87,4 +89,4 @@
return header;
}
-}
\ No newline at end of file
+}
1.8 +10 -5 xml-fop/src/org/apache/fop/image/analyser/EPSReader.java
Index: EPSReader.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/analyser/EPSReader.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- EPSReader.java 10 Sep 2002 11:21:32 -0000 1.7
+++ EPSReader.java 8 Nov 2002 10:48:00 -0000 1.8
@@ -7,7 +7,7 @@
package org.apache.fop.image.analyser;
// Java
-import java.io.BufferedInputStream;
+import java.io.InputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -27,7 +27,7 @@
private static final byte[] BOUNDINGBOX = "%%BoundingBox: ".getBytes();
/** @see org.apache.fop.image.analyser.ImageReader */
- public FopImage.ImageInfo verifySignature(String uri, BufferedInputStream bis,
+ public FopImage.ImageInfo verifySignature(String uri, InputStream bis,
FOUserAgent ua) throws IOException {
boolean isEPS = false;
@@ -73,6 +73,11 @@
if (data.bbox != null) {
info.width = (int) (data.bbox[2] - data.bbox[0]);
info.height = (int) (data.bbox[3] - data.bbox[1]);
+
+ // image data read
+ bis.close();
+ info.inputStream = null;
+
return info;
} else {
// Ain't eps if no BoundingBox
@@ -108,7 +113,7 @@
* @param data EPSData object to write the results to
* @exception IOException If an I/O error occurs
*/
- private void readEPSImage(BufferedInputStream bis, EPSImage.EPSData data)
+ private void readEPSImage(InputStream bis, EPSImage.EPSData data)
throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] file;
1.7 +8 -6 xml-fop/src/org/apache/fop/image/analyser/GIFReader.java
Index: GIFReader.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/analyser/GIFReader.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- GIFReader.java 10 Sep 2002 11:21:32 -0000 1.6
+++ GIFReader.java 8 Nov 2002 10:48:00 -0000 1.7
@@ -7,7 +7,7 @@
package org.apache.fop.image.analyser;
// Java
-import java.io.BufferedInputStream;
+import java.io.InputStream;
import java.io.IOException;
// FOP
@@ -25,7 +25,7 @@
private static final int GIF_SIG_LENGTH = 10;
/** @see org.apache.fop.image.analyser.ImageReader */
- public FopImage.ImageInfo verifySignature(String uri, BufferedInputStream bis,
+ public FopImage.ImageInfo verifySignature(String uri, InputStream bis,
FOUserAgent ua) throws IOException {
byte[] header = getDefaultHeader(bis);
boolean supported = ((header[0] == 'G')
@@ -37,6 +37,7 @@
if (supported) {
FopImage.ImageInfo info = getDimension(header);
info.mimeType = getMimeType();
+ info.inputStream = bis;
return info;
} else {
return null;
@@ -65,7 +66,7 @@
return info;
}
- private byte[] getDefaultHeader(BufferedInputStream imageStream)
+ private byte[] getDefaultHeader(InputStream imageStream)
throws IOException {
byte[] header = new byte[GIF_SIG_LENGTH];
try {
@@ -83,4 +84,5 @@
return header;
}
-}
\ No newline at end of file
+}
+
1.8 +4 -4 xml-fop/src/org/apache/fop/image/analyser/ImageReader.java
Index: ImageReader.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/analyser/ImageReader.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- ImageReader.java 10 Sep 2002 11:21:32 -0000 1.7
+++ ImageReader.java 8 Nov 2002 10:48:00 -0000 1.8
@@ -7,7 +7,7 @@
package org.apache.fop.image.analyser;
// Java
-import java.io.BufferedInputStream;
+import java.io.InputStream;
import java.io.IOException;
// FOP
@@ -35,7 +35,7 @@
* @return <code>true</code> if image type is the handled one
* @exception IOException if an I/O error occurs
*/
- FopImage.ImageInfo verifySignature(String uri, BufferedInputStream bis,
+ FopImage.ImageInfo verifySignature(String uri, InputStream bis,
FOUserAgent ua)
throws IOException;
1.12 +3 -5
xml-fop/src/org/apache/fop/image/analyser/ImageReaderFactory.java
Index: ImageReaderFactory.java
===================================================================
RCS file:
/home/cvs/xml-fop/src/org/apache/fop/image/analyser/ImageReaderFactory.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- ImageReaderFactory.java 10 Sep 2002 11:21:32 -0000 1.11
+++ ImageReaderFactory.java 8 Nov 2002 10:48:00 -0000 1.12
@@ -8,7 +8,6 @@
// Java
import java.io.InputStream;
-import java.io.BufferedInputStream;
import java.io.IOException;
import java.util.ArrayList;
@@ -60,11 +59,10 @@
FOUserAgent ua) {
ImageReader reader;
- BufferedInputStream bis = new BufferedInputStream(in);
try {
for (int count = 0; count < formats.size(); count++) {
reader = (ImageReader) formats.get(count);
- FopImage.ImageInfo info = reader.verifySignature(uri, bis, ua);
+ FopImage.ImageInfo info = reader.verifySignature(uri, in, ua);
if (info != null) {
return info;
}
1.7 +14 -10 xml-fop/src/org/apache/fop/image/analyser/JPEGReader.java
Index: JPEGReader.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/analyser/JPEGReader.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- JPEGReader.java 10 Sep 2002 11:21:32 -0000 1.6
+++ JPEGReader.java 8 Nov 2002 10:48:00 -0000 1.7
@@ -7,7 +7,7 @@
package org.apache.fop.image.analyser;
// Java
-import java.io.BufferedInputStream;
+import java.io.InputStream;
import java.io.IOException;
// FOP
@@ -42,7 +42,7 @@
private static final int JPG_SIG_LENGTH = 2;
/** @see org.apache.fop.image.analyser.ImageReader */
- public FopImage.ImageInfo verifySignature(String uri, BufferedInputStream fis,
+ public FopImage.ImageInfo verifySignature(String uri, InputStream fis,
FOUserAgent ua) throws IOException {
byte[] header = getDefaultHeader(fis);
boolean supported = ((header[0] == (byte) 0xff)
@@ -50,6 +50,7 @@
if (supported) {
FopImage.ImageInfo info = getDimension(fis);
info.mimeType = getMimeType();
+ info.inputStream = fis;
return info;
} else {
return null;
@@ -65,7 +66,7 @@
return "image/jpeg";
}
- private byte[] getDefaultHeader(BufferedInputStream imageStream) throws
IOException {
+ private byte[] getDefaultHeader(InputStream imageStream) throws IOException {
byte[] header = new byte[JPG_SIG_LENGTH];
try {
imageStream.mark(JPG_SIG_LENGTH + 1);
@@ -82,12 +83,13 @@
return header;
}
- private FopImage.ImageInfo getDimension(BufferedInputStream imageStream) throws
IOException {
+ private FopImage.ImageInfo getDimension(InputStream imageStream) throws
IOException {
FopImage.ImageInfo info = new FopImage.ImageInfo();
try {
+ imageStream.mark(imageStream.available());
int marker = NULL;
long length, skipped;
- outer:
+outer:
while (imageStream.available() > 0) {
while ((marker = imageStream.read()) != MARK) {
//nop, simply skip
@@ -118,6 +120,7 @@
}
}
}
+ imageStream.reset();
} catch (IOException ioe) {
try {
imageStream.reset();
@@ -129,13 +132,13 @@
return info;
}
- private int read2bytes(BufferedInputStream imageStream) throws IOException {
+ private int read2bytes(InputStream imageStream) throws IOException {
int byte1 = imageStream.read();
int byte2 = imageStream.read();
return (int) ((byte1 << 8) | byte2);
}
- private long skip(BufferedInputStream imageStream, long n) throws IOException {
+ private long skip(InputStream imageStream, long n) throws IOException {
long discarded = 0;
while (discarded != n) {
imageStream.read();
@@ -144,4 +147,5 @@
return discarded; // scope for exception
}
-}
\ No newline at end of file
+}
+
1.7 +7 -6 xml-fop/src/org/apache/fop/image/analyser/PNGReader.java
Index: PNGReader.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/analyser/PNGReader.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- PNGReader.java 10 Sep 2002 11:21:32 -0000 1.6
+++ PNGReader.java 8 Nov 2002 10:48:00 -0000 1.7
@@ -7,7 +7,7 @@
package org.apache.fop.image.analyser;
// Java
-import java.io.BufferedInputStream;
+import java.io.InputStream;
import java.io.IOException;
// FOP
@@ -25,7 +25,7 @@
private static final int PNG_SIG_LENGTH = 24;
/** @see org.apache.fop.image.analyser.ImageReader */
- public FopImage.ImageInfo verifySignature(String uri, BufferedInputStream bis,
+ public FopImage.ImageInfo verifySignature(String uri, InputStream bis,
FOUserAgent ua) throws IOException {
byte[] header = getDefaultHeader(bis);
boolean supported = ((header[0] == (byte) 0x89)
@@ -40,6 +40,7 @@
if (supported) {
FopImage.ImageInfo info = getDimension(header);
info.mimeType = getMimeType();
+ info.inputStream = bis;
return info;
} else {
return null;
@@ -78,7 +79,7 @@
return info;
}
- private byte[] getDefaultHeader(BufferedInputStream imageStream)
+ private byte[] getDefaultHeader(InputStream imageStream)
throws IOException {
byte[] header = new byte[PNG_SIG_LENGTH];
try {
@@ -96,4 +97,4 @@
return header;
}
-}
\ No newline at end of file
+}
1.25 +12 -5 xml-fop/src/org/apache/fop/image/analyser/SVGReader.java
Index: SVGReader.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/analyser/SVGReader.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- SVGReader.java 10 Sep 2002 11:21:32 -0000 1.24
+++ SVGReader.java 8 Nov 2002 10:48:00 -0000 1.25
@@ -7,7 +7,7 @@
package org.apache.fop.image.analyser;
// Java
-import java.io.BufferedInputStream;
+import java.io.InputStream;
import java.io.IOException;
import java.io.InputStream;
import java.awt.geom.AffineTransform;
@@ -37,10 +37,17 @@
private boolean batik = true;
/** @see org.apache.fop.image.analyser.ImageReader */
- public FopImage.ImageInfo verifySignature(String uri, BufferedInputStream fis,
+ public FopImage.ImageInfo verifySignature(String uri, InputStream fis,
FOUserAgent ua)
throws IOException {
- return loadImage(uri, fis, ua);
+ FopImage.ImageInfo info = loadImage(uri, fis, ua);
+ if (info != null) {
+ try {
+ fis.close();
+ } catch (Exception e) {
+ }
+ }
+ return info;
}
/**
@@ -61,7 +68,7 @@
* @param ua @todo Description of the Parameter
* @return @todo Description of the Return Value
*/
- private FopImage.ImageInfo loadImage(String uri, BufferedInputStream bis,
+ private FopImage.ImageInfo loadImage(String uri, InputStream bis,
FOUserAgent ua) {
if (batik) {
try {
1.8 +6 -5 xml-fop/src/org/apache/fop/image/analyser/TIFFReader.java
Index: TIFFReader.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/analyser/TIFFReader.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- TIFFReader.java 10 Sep 2002 11:21:32 -0000 1.7
+++ TIFFReader.java 8 Nov 2002 10:48:00 -0000 1.8
@@ -7,7 +7,7 @@
package org.apache.fop.image.analyser;
// Java
-import java.io.BufferedInputStream;
+import java.io.InputStream;
import java.io.IOException;
// FOP
@@ -25,7 +25,7 @@
private static final int TIFF_SIG_LENGTH = 8;
/** @see org.apache.fop.image.analyser.ImageReader */
- public FopImage.ImageInfo verifySignature(String uri, BufferedInputStream bis,
+ public FopImage.ImageInfo verifySignature(String uri, InputStream bis,
FOUserAgent ua) throws IOException {
byte[] header = getDefaultHeader(bis);
boolean supported = false;
@@ -51,6 +51,7 @@
if (supported) {
FopImage.ImageInfo info = getDimension(header);
info.mimeType = getMimeType();
+ info.inputStream = bis;
return info;
} else {
return null;
@@ -95,7 +96,7 @@
return info;
}
- private byte[] getDefaultHeader(BufferedInputStream imageStream)
+ private byte[] getDefaultHeader(InputStream imageStream)
throws IOException {
byte[] header = new byte[TIFF_SIG_LENGTH];
try {
1.5 +13 -6 xml-fop/src/org/apache/fop/image/analyser/XMLReader.java
Index: XMLReader.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/analyser/XMLReader.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- XMLReader.java 10 Sep 2002 11:29:03 -0000 1.4
+++ XMLReader.java 8 Nov 2002 10:48:00 -0000 1.5
@@ -7,7 +7,7 @@
package org.apache.fop.image.analyser;
// Java
-import java.io.BufferedInputStream;
+import java.io.InputStream;
import java.io.IOException;
import java.util.Map;
@@ -36,10 +36,17 @@
}
/** @see org.apache.fop.image.analyser.ImageReader */
- public FopImage.ImageInfo verifySignature(String uri, BufferedInputStream fis,
+ public FopImage.ImageInfo verifySignature(String uri, InputStream fis,
FOUserAgent ua)
throws IOException {
- return loadImage(uri, fis, ua);
+ FopImage.ImageInfo info = loadImage(uri, fis, ua);
+ if (info != null) {
+ try {
+ fis.close();
+ } catch (Exception e) {
+ }
+ }
+ return info;
}
/**
@@ -62,7 +69,7 @@
* @param ua The user agent
* @return An ImageInfo object describing the image
*/
- protected FopImage.ImageInfo loadImage(String uri, BufferedInputStream bis,
+ protected FopImage.ImageInfo loadImage(String uri, InputStream bis,
FOUserAgent ua) {
return createDocument(bis, ua);
}
@@ -74,7 +81,7 @@
* @param ua The user agent
* @return An ImageInfo object describing the image
*/
- public FopImage.ImageInfo createDocument(BufferedInputStream is, FOUserAgent
ua) {
+ public FopImage.ImageInfo createDocument(InputStream is, FOUserAgent ua) {
Document doc = null;
FopImage.ImageInfo info = new FopImage.ImageInfo();
info.mimeType = getMimeType();
1.44 +3 -3 xml-fop/src/org/apache/fop/svg/PDFGraphics2D.java
Index: PDFGraphics2D.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/svg/PDFGraphics2D.java,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- PDFGraphics2D.java 3 Nov 2002 16:24:22 -0000 1.43
+++ PDFGraphics2D.java 8 Nov 2002 10:48:00 -0000 1.44
@@ -294,7 +294,7 @@
* @param height the height to draw the image
*/
public void addJpegImage(JpegImage jpeg, float x, float y, float width, float
height) {
- FopPDFImage fopimage = new FopPDFImage(jpeg, jpeg.getURL());
+ FopPDFImage fopimage = new FopPDFImage(jpeg, "");
int xObjectNum = this.pdfDoc.addImage(resourceContext,
fopimage).getXNumber();
AffineTransform at = getTransform();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]