From 350e21d1759e2f4538991e66b8d5e5c8ee1c1ea2 Mon Sep 17 00:00:00 2001 From: kitfox Date: Tue, 17 Jul 2007 15:43:53 +0000 Subject: Partially added inflationi of zipped files. git-svn-id: https://svn.java.net/svn/svgsalamander~svn/trunk/svg-core@40 7dc7fa77-23fb-e6ad-8e2e-c86bd48ed22b --- src/main/java/com/kitfox/svg/SVGUniverse.java | 70 ++++++++++++++++++++++----- 1 file changed, 57 insertions(+), 13 deletions(-) (limited to 'src/main/java/com/kitfox/svg/SVGUniverse.java') diff --git a/src/main/java/com/kitfox/svg/SVGUniverse.java b/src/main/java/com/kitfox/svg/SVGUniverse.java index 48d0f3a..ac285dd 100644 --- a/src/main/java/com/kitfox/svg/SVGUniverse.java +++ b/src/main/java/com/kitfox/svg/SVGUniverse.java @@ -29,19 +29,35 @@ package com.kitfox.svg; import com.kitfox.svg.app.beans.SVGIcon; import java.awt.Graphics2D; -import java.net.*; -import java.awt.image.*; -import javax.imageio.*; -import java.beans.*; -import java.lang.ref.*; -//import java.util.*; -//import java.util.regex.*; +import java.awt.image.BufferedImage; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; +import java.io.BufferedInputStream; +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Reader; +import java.io.Serializable; +import java.lang.ref.SoftReference; +import java.net.URI; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLStreamHandler; +import java.util.HashMap; +import java.util.Iterator; -import java.util.*; -import java.io.*; -import org.xml.sax.*; +import java.util.zip.InflaterInputStream; +import javax.imageio.ImageIO; import javax.xml.parsers.SAXParserFactory; -import javax.xml.parsers.SAXParser; +import org.xml.sax.EntityResolver; +import org.xml.sax.InputSource; +import org.xml.sax.SAXParseException; +import org.xml.sax.XMLReader; import org.xml.sax.helpers.XMLReaderFactory; /** @@ -302,6 +318,34 @@ public class SVGUniverse implements Serializable return null; } + + private InputStreamReader createDocumentReader(InputStream is) + { + BufferedInputStream bin = new BufferedInputStream(is); + bin.mark(4); + + byte[] buf = new byte[4]; + try + { + bin.read(buf, 0, buf.length); + bin.reset(); + } catch (IOException ex) + { + ex.printStackTrace(); + } + + + if (buf[0] == 0x1f) + { + InflaterInputStream iis = new InflaterInputStream(bin); + return new InputStreamReader(iis); + } + else + { + return new InputStreamReader(bin); + } + } + public URI loadSVG(URL docRoot) { return loadSVG(docRoot, false); @@ -323,7 +367,7 @@ public class SVGUniverse implements Serializable if (loadedDocs.containsKey(uri) && !forceLoad) return uri; InputStream is = docRoot.openStream(); - return loadSVG(uri, new InputStreamReader(is)); + return loadSVG(uri, createDocumentReader(is)); } catch (Throwable t) { @@ -341,7 +385,7 @@ public class SVGUniverse implements Serializable public URI loadSVG(InputStream is, String name, boolean forceLoad) { - return loadSVG(new InputStreamReader(is), name, forceLoad); + return loadSVG(createDocumentReader(is), name, forceLoad); } public URI loadSVG(Reader reader, String name) -- cgit v1.2.3-55-g7522