summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkitfox2007-04-12 18:21:34 +0200
committerkitfox2007-04-12 18:21:34 +0200
commit705a06dea7d4d77ef9239ea61185f823a451977f (patch)
tree0a5ce839ced97a6ac1c0e335c7786bd1492b9f1b
parentAdding NB build file (diff)
downloadsvg-salamander-core-705a06dea7d4d77ef9239ea61185f823a451977f.tar.gz
svg-salamander-core-705a06dea7d4d77ef9239ea61185f823a451977f.tar.xz
svg-salamander-core-705a06dea7d4d77ef9239ea61185f823a451977f.zip
Pseudocode for main rendering logic.
git-svn-id: https://svn.java.net/svn/svgsalamander~svn/trunk/svg-core@9 7dc7fa77-23fb-e6ad-8e2e-c86bd48ed22b
-rwxr-xr-xmanifest.mf2
-rwxr-xr-xnbproject/project.xml109
-rwxr-xr-xsrc/main/java/com/kitfox/salamander/parser/SVGParser.java42
3 files changed, 147 insertions, 6 deletions
diff --git a/manifest.mf b/manifest.mf
index b8c9199..10cc22d 100755
--- a/manifest.mf
+++ b/manifest.mf
@@ -9,6 +9,6 @@ Specification-Title: SVG Salamander
Specification-Version: 1
Specification-Vendor: Kitfox
Implementation-Title: svg-salamander-core
-Implementation-Version: Version 1, Date April 11 2007
+Implementation-Version: Version 1, Date April 12 2007
Implementation-Vendor: Mark McKay, mark@kitfox.com
diff --git a/nbproject/project.xml b/nbproject/project.xml
index 5a6fefc..5b57d8a 100755
--- a/nbproject/project.xml
+++ b/nbproject/project.xml
@@ -5,7 +5,10 @@
<general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
<!-- Do not use Project Properties customizer when editing this file manually. -->
<name>svg-salamander-core</name>
- <properties/>
+ <properties>
+ <property name="src.main.dir">C:/dev/svn.dev.java.net/svgsalamander/trunk/svg-core/src/main/java</property>
+ <property name="src.test.dir">C:/dev/svn.dev.java.net/svgsalamander/trunk/svg-core/src/test/java</property>
+ </properties>
<folders>
<source-folder>
<label>src\main\java</label>
@@ -48,6 +51,105 @@
<target>clean</target>
<target>build</target>
</action>
+ <action name="debug">
+ <target>debug</target>
+ </action>
+ <action name="compile.single">
+ <target>compile-selected-files</target>
+ <context>
+ <property>files</property>
+ <folder>${src.main.dir}</folder>
+ <pattern>\.java$</pattern>
+ <format>relative-path</format>
+ <arity>
+ <separated-files>,</separated-files>
+ </arity>
+ </context>
+ </action>
+ <action name="compile.single">
+ <target>compile-selected-files-test</target>
+ <context>
+ <property>files</property>
+ <folder>${src.test.dir}</folder>
+ <pattern>\.java$</pattern>
+ <format>relative-path</format>
+ <arity>
+ <separated-files>,</separated-files>
+ </arity>
+ </context>
+ </action>
+ <action name="run.single">
+ <target>run-selected-files</target>
+ <context>
+ <property>classname</property>
+ <folder>${src.main.dir}</folder>
+ <pattern>\.java$</pattern>
+ <format>java-name</format>
+ <arity>
+ <one-file-only/>
+ </arity>
+ </context>
+ </action>
+ <action name="run.single">
+ <target>run-selected-files-test</target>
+ <context>
+ <property>classname</property>
+ <folder>${src.test.dir}</folder>
+ <pattern>\.java$</pattern>
+ <format>java-name</format>
+ <arity>
+ <one-file-only/>
+ </arity>
+ </context>
+ </action>
+ <action name="debug.single">
+ <target>debug-selected-files</target>
+ <context>
+ <property>classname</property>
+ <folder>${src.main.dir}</folder>
+ <pattern>\.java$</pattern>
+ <format>java-name</format>
+ <arity>
+ <one-file-only/>
+ </arity>
+ </context>
+ </action>
+ <action name="debug.single">
+ <target>debug-selected-files-test</target>
+ <context>
+ <property>classname</property>
+ <folder>${src.test.dir}</folder>
+ <pattern>\.java$</pattern>
+ <format>java-name</format>
+ <arity>
+ <one-file-only/>
+ </arity>
+ </context>
+ </action>
+ <action name="debug.fix">
+ <target>debug-fix</target>
+ <context>
+ <property>fix.file</property>
+ <folder>${src.main.dir}</folder>
+ <pattern>\.java$</pattern>
+ <format>relative-path-noext</format>
+ <arity>
+ <one-file-only/>
+ </arity>
+ </context>
+ </action>
+ <action name="test.single">
+ <target>test-selected-files</target>
+ <context>
+ <property>classname</property>
+ <folder>${src.main.dir}</folder>
+ <pattern>\.java$</pattern>
+ <format>java-name</format>
+ <arity>
+ <one-file-only/>
+ </arity>
+ </context>
+ </action>
</ide-actions>
<export>
<type>jar</type>
@@ -81,6 +183,7 @@
<ide-action name="clean"/>
<ide-action name="javadoc"/>
<ide-action name="run"/>
+ <ide-action name="debug"/>
<ide-action name="test"/>
<ide-action name="rebuild"/>
</context-menu>
@@ -90,7 +193,7 @@
<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
<compilation-unit>
<package-root>src/main/java</package-root>
- <classpath mode="compile">lib/library/ant.jar;lib/library/javacc.jar;lib/library/junit.jar</classpath>
+ <classpath mode="compile">lib/library/javacc.jar;lib/library/junit.jar;../../../../svn.apache.org/ant-core/lib/ant.jar</classpath>
<built-to>build/jar/svg-salamander-core.jar</built-to>
<source-level>1.5</source-level>
</compilation-unit>
@@ -101,7 +204,7 @@
<compilation-unit>
<package-root>src/test/java</package-root>
<unit-tests/>
- <classpath mode="compile">lib/library/ant.jar;lib/library/javacc.jar;lib/library/junit.jar;build/jar/svg-salamander-core.jar</classpath>
+ <classpath mode="compile">lib/library/javacc.jar;lib/library/junit.jar;build/jar/svg-salamander-core.jar;../../../../svn.apache.org/ant-core/lib/ant.jar</classpath>
<source-level>1.5</source-level>
</compilation-unit>
<compilation-unit>
diff --git a/src/main/java/com/kitfox/salamander/parser/SVGParser.java b/src/main/java/com/kitfox/salamander/parser/SVGParser.java
index efdf6b9..d588b08 100755
--- a/src/main/java/com/kitfox/salamander/parser/SVGParser.java
+++ b/src/main/java/com/kitfox/salamander/parser/SVGParser.java
@@ -9,9 +9,15 @@
package com.kitfox.salamander.parser;
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
@@ -33,7 +39,12 @@ public class SVGParser
{
}
- public static void parse(File source, SVGParserListener listener, boolean skipUpToDateFiles)
+ /**
+ * Parse an SVG document. The document may be either uncompressed XML (.svg)
+ * or a zipped document (.svgz). This routine will automatically detect
+ * zipped documents and unzip them.
+ */
+ public static void parse(File source, SVGParserListener listener)
{
try
{
@@ -42,7 +53,34 @@ public class SVGParser
SVGParserHandler handler = new SVGParserHandler(listener);
parser.setContentHandler(handler);
- InputSource is = new InputSource(new FileInputStream(source));
+ FileInputStream fis = new FileInputStream(source);
+ BufferedInputStream bis = new BufferedInputStream(fis);
+ bis.mark(4);
+ //Check for gzip magic number
+ DataInputStream din = new DataInputStream(bis);
+ long magicNumber = din.readLong();
+ bis.reset();
+
+ InputStream svgStream;
+ if ((int)magicNumber == 0x4b50)
+ {
+ //PK Zip file
+ ZipInputStream zin = new ZipInputStream(bis);
+ ZipEntry entry = zin.getNextEntry();
+ byte[] buf = new byte[(int)entry.getSize()];
+ for (int offset = 0; offset < buf.length; offset += zin.read(buf, offset, buf.length - offset));
+ zin.closeEntry();
+ zin.close();
+
+ svgStream = new ByteArrayInputStream(buf);
+ }
+ else
+ {
+ //Treat input as uncompressed XML
+ svgStream = bis;
+ }
+
+ InputSource is = new InputSource(svgStream);
parser.parse(is);
}