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]

Reply via email to