From 96af16328a26bc56c31b0253007eee47bbdb5430 Mon Sep 17 00:00:00 2001 From: Keiron Liddle Date: Mon, 21 May 2001 12:05:45 +0000 Subject: [PATCH] no longer needed git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@194259 13f79535-47bb-0310-9956-ffa450edef68 --- src/org/apache/fop/fo/SVGTreeBuilder.java | 293 ---------------------- src/org/apache/fop/svg/SVGDriver.java | 261 ------------------- 2 files changed, 554 deletions(-) delete mode 100644 src/org/apache/fop/fo/SVGTreeBuilder.java delete mode 100644 src/org/apache/fop/svg/SVGDriver.java diff --git a/src/org/apache/fop/fo/SVGTreeBuilder.java b/src/org/apache/fop/fo/SVGTreeBuilder.java deleted file mode 100644 index 2b882abd0..000000000 --- a/src/org/apache/fop/fo/SVGTreeBuilder.java +++ /dev/null @@ -1,293 +0,0 @@ -/* $Id$ - * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. - * For details on use and redistribution please refer to the - * LICENSE file included with these sources." - */ - -package org.apache.fop.fo; - -// FOP -import org.apache.fop.fo.*; -import org.apache.fop.svg.*; -import org.apache.fop.layout.AreaTree; -import org.apache.fop.messaging.MessageHandler; -import org.apache.fop.apps.FOPException; -import org.apache.fop.fo.pagination.Root; - -// SAX -import org.xml.sax.helpers.DefaultHandler; -import org.xml.sax.SAXException; -import org.xml.sax.InputSource; -import org.xml.sax.Attributes; - -import org.apache.batik.dom.svg.*; -import org.w3c.dom.*; -import org.w3c.dom.svg.*; -import org.w3c.dom.svg.SVGLength; - -import org.w3c.dom.DOMImplementation; -import org.apache.batik.dom.svg.SVGDOMImplementation; - -// Java -import java.util.Hashtable; -import java.util.Stack; -import java.io.IOException; -import java.io.File; - -// NOTE: This class is here since a number of FObj methods that -// are called are protected. This should probably be fixed. -/** - * SAX Handler that builds the formatting object tree. - */ -public class SVGTreeBuilder extends DefaultHandler implements TreeBuilder { - - /** - * table mapping element names to the makers of objects - * representing formatting objects - */ - protected Hashtable fobjTable = new Hashtable(); - - /** - * class that builds a property list for each formatting object - */ - protected Hashtable propertylistTable = new Hashtable(); - - /** - * current formatting object being handled - */ - protected FObj currentFObj = null; - - /** - * the root of the formatting object tree - */ - protected FObj rootFObj = null; - - /** - * set of names of formatting objects encountered but unknown - */ - protected Hashtable unknownFOs = new Hashtable(); - - // namespace implementation ideas pinched from John Cowan - /* protected static class NSMap { - String prefix; - String uri; - int level; - - NSMap(String prefix, String uri, int level) { - this.prefix = prefix; - this.uri = uri; - this.level = level; - } - } - - protected int level = 0; - protected Stack namespaceStack = new Stack(); - - { - namespaceStack.push(new NSMap("xml", - "http://www.w3.org/XML/1998/namespace", - -1)); - namespaceStack.push(new NSMap("", "http://www.w3.org/2000/svg", -1)); - } - - protected String findURI(String prefix) { - for (int i = namespaceStack.size() - 1; i >= 0; i--) { - NSMap nsMap = (NSMap) (namespaceStack.elementAt(i)); - if (prefix.equals(nsMap.prefix)) return nsMap.uri; - } - return null; - } - - protected String mapName(String name) - throws SAXException { - int colon = name.indexOf(':'); - String prefix = ""; - String localPart = name; - if (colon != -1) { - prefix = name.substring(0, colon); - localPart = name.substring(colon + 1); - } - String uri = findURI(prefix); - if (uri == null) { - if (prefix.equals("")) { - return "http://www.w3.org/2000/svg^" + name; - } else { - throw new SAXException(new FOPException("Unknown namespace prefix " + prefix)); - } - } - return uri + "^" + localPart; - }*/ - - /** - * add a mapping from element name to maker. - * - * @param namespaceURI namespace URI of formatting object element - * @param localName local name of formatting object element - * @param maker Maker for class representing formatting object - */ - public void addMapping(String namespaceURI, String localName, - FObj.Maker maker) { - this.fobjTable.put(namespaceURI + "^" + localName, maker); - } - - /** - * add a mapping from element name to maker. - * - * @param namespaceURI namespace URI of formatting object element - * @param localName local name of formatting object element - * @param maker Maker for class representing formatting object - */ - public void addPropertyList(String namespaceURI, Hashtable list) { - PropertyListBuilder plb; - plb = (PropertyListBuilder) this.propertylistTable.get( - namespaceURI); - if (plb == null) { - plb = new PropertyListBuilder(); - plb.addList(list); - this.propertylistTable.put(namespaceURI, plb); - } else { - plb.addList(list); - } - } - - /** - * add a mapping from element name to maker. - * - * @param namespaceURI namespace URI of formatting object element - * @param localName local name of formatting object element - * @param maker Maker for class representing formatting object - */ - public void addElementPropertyList(String namespaceURI, - String localName, Hashtable list) { - PropertyListBuilder plb; - plb = (PropertyListBuilder) this.propertylistTable.get( - namespaceURI); - if (plb == null) { - plb = new PropertyListBuilder(); - plb.addElementList(localName, list); - this.propertylistTable.put(namespaceURI, plb); - } else { - plb.addElementList(localName, list); - } - } - - /** SAX Handler for characters */ - public void characters(char data[], int start, int length) { - currentFObj.addCharacters(data, start, start + length); - } - - /** SAX Handler for the end of an element */ - public void endElement(String uri, String localName, String rawName) { - currentFObj.end(); - currentFObj = (FObj) currentFObj.getParent(); - /* level--; - while (((NSMap) namespaceStack.peek()).level > level) { - namespaceStack.pop(); - }*/ - } - - /** SAX Handler for the start of the document */ - public void startDocument() { - MessageHandler.logln("building svg tree"); - } - - /** SAX Handler for the start of an element */ - public void startElement(String uri, String localName, - String rawName, Attributes attlist) throws SAXException { - /* the formatting object started */ - FObj fobj; - if (uri.equals("")) { - uri = "http://www.w3.org/2000/svg"; - } - - /* the maker for the formatting object started */ - FObj.Maker fobjMaker; - - /* level++; - int length = attlist.getLength(); - for (int i = 0; i < length; i++) { - String att = attlist.getQName(i); - if (att.equals("xmlns")) { - namespaceStack.push( new NSMap("", - attlist.getValue(i), - level)); - } else if (att.startsWith("xmlns:")) { - String value = attlist.getValue(i); - namespaceStack.push(new NSMap(att.substring(6), value, - level)); - } - }*/ - - // String fullName = mapName(rawName); - String fullName = uri + "^" + localName; - fobjMaker = (FObj.Maker) fobjTable.get(fullName); - PropertyListBuilder currentListBuilder = - (PropertyListBuilder) this.propertylistTable.get(uri); - - if (fobjMaker == null) { - if (!this.unknownFOs.containsKey(fullName)) { - this.unknownFOs.put(fullName, ""); - MessageHandler.errorln( - "WARNING: Unknown formatting object " + fullName); - } - fobjMaker = new FObjMixed.Maker(); // fall back - } - - try { - PropertyList list = null; - if (currentListBuilder != null) { - list = currentListBuilder.makeList(fullName, attlist, - (currentFObj == null) ? null : - currentFObj.properties, currentFObj); - } - fobj = fobjMaker.make(currentFObj, list); - } catch (FOPException e) { - throw new SAXException(e); - } - - if (rootFObj == null) { - rootFObj = fobj; - if (!fobj.getName().equals("svg:svg")) { - throw new SAXException( - new FOPException("Root element must" + - " be svg, not " + fobj.getName())); - } - } else { - currentFObj.addChild(fobj); - } - - currentFObj = fobj; - } - - /** - */ - public SVGDocument getSVGDocument() { - DOMImplementation impl = SVGDOMImplementation.getDOMImplementation(); - String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI; - Document doc = impl.createDocument(svgNS, "svg", null); - - Element svgRoot = doc.getDocumentElement(); - - try { - ((SVGOMDocument)doc).setURLObject(new File(".").toURL()); - } catch (Exception e) { - } - - DefaultSVGContext dc = new DefaultSVGContext() { - public float getPixelToMM() { - return 0.264583333333333333333f; - // 72 dpi - } - public float getViewportWidth() { - return 100; - } - public float getViewportHeight() { - return 100; - } - }; - ((SVGOMDocument)doc).setSVGContext(dc); - ((org.apache.fop.svg.SVGElement)rootFObj).buildTopLevel(doc, svgRoot); - - return (SVGDocument)doc; - } -} diff --git a/src/org/apache/fop/svg/SVGDriver.java b/src/org/apache/fop/svg/SVGDriver.java deleted file mode 100644 index 2a49659a0..000000000 --- a/src/org/apache/fop/svg/SVGDriver.java +++ /dev/null @@ -1,261 +0,0 @@ -/* $Id$ - * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. - * For details on use and redistribution please refer to the - * LICENSE file included with these sources." - */ - -package org.apache.fop.svg; - -// FOP -import org.apache.fop.fo.*; -import org.apache.fop.apps.*; -import org.apache.fop.fo.FOTreeBuilder; -import org.apache.fop.fo.ElementMapping; -import org.apache.fop.fo.PropertyListMapping; -import org.apache.fop.layout.AreaTree; -import org.apache.fop.layout.FontInfo; -import org.apache.fop.render.Renderer; -import org.apache.fop.messaging.MessageHandler; - -// DOM -import org.w3c.dom.Document; -import org.w3c.dom.Node; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Attr; - -// SAX -import org.xml.sax.ContentHandler; -import org.xml.sax.InputSource; -import org.xml.sax.XMLReader; -import org.xml.sax.SAXException; -import org.xml.sax.helpers.AttributesImpl; - -import org.w3c.dom.svg.*; - -// Java -import java.io.PrintWriter; -import java.io.IOException; - -/** - */ -public class SVGDriver { - - /** the FO tree builder */ - protected SVGTreeBuilder treeBuilder; - - /** the PrintWriter to use to output the results of the renderer */ - protected PrintWriter writer; - - /** create a new Driver */ - public SVGDriver() { - this.treeBuilder = new SVGTreeBuilder(); - } - - /** - * add the given element mapping. - * - * an element mapping maps element names to Java classes - */ - public void addElementMapping(ElementMapping mapping) { - mapping.addToBuilder(this.treeBuilder); - } - - /** - * add the element mapping with the given class name - */ - public void addElementMapping(String mappingClassName) { - createElementMapping(mappingClassName).addToBuilder( - this.treeBuilder); - } - - /** - * protected method used by addElementMapping(String) to - * instantiate element mapping class - */ - protected ElementMapping createElementMapping( - String mappingClassName) { - MessageHandler.logln("using element mapping " + mappingClassName); - - try { - return (ElementMapping) Class.forName( - mappingClassName).newInstance(); - } catch (ClassNotFoundException e) { - MessageHandler.errorln("Could not find " + mappingClassName); - } - catch (InstantiationException e) { - MessageHandler.errorln("Could not instantiate " + - mappingClassName); - } - catch (IllegalAccessException e) { - MessageHandler.errorln("Could not access " + mappingClassName); - } - catch (ClassCastException e) { - MessageHandler.errorln(mappingClassName + " is not an element mapping"); - } - return null; - } - - /** - * add the element mapping with the given class name - */ - public void addPropertyList(String listClassName) { - createPropertyList(listClassName).addToBuilder(this.treeBuilder); - } - - /** - * protected method used by addPropertyList(String) to - * instantiate list mapping class - */ - protected PropertyListMapping createPropertyList( - String listClassName) { - MessageHandler.logln("using property list mapping " + - listClassName); - - try { - return (PropertyListMapping) Class.forName( - listClassName).newInstance(); - } catch (ClassNotFoundException e) { - MessageHandler.errorln("Could not find " + listClassName); - } - catch (InstantiationException e) { - MessageHandler.errorln("Could not instantiate " + - listClassName); - } - catch (IllegalAccessException e) { - MessageHandler.errorln("Could not access " + listClassName); - } - catch (ClassCastException e) { - MessageHandler.errorln(listClassName + " is not an property list"); - } - return null; - } - - /** - * return the tree builder (a SAX DocumentHandler). - * - * used in situations where SAX is used but not via a FOP-invoked - * SAX parser. A good example is an XSLT engine that fires SAX - * events but isn't a SAX Parser itself. - */ - public ContentHandler getContentHandler() { - return this.treeBuilder; - } - - /** - * build the formatting object tree using the given SAX Parser and - * SAX InputSource - */ - public void buildSVGTree(XMLReader parser, - InputSource source) throws FOPException { - - parser.setContentHandler(this.treeBuilder); - try { - parser.parse(source); - } catch (SAXException e) { - e.printStackTrace(); - if (e.getException() instanceof FOPException) - throw (FOPException) e.getException(); - else - throw new FOPException(e.getMessage()); - } - catch (IOException e) { - throw new FOPException(e.getMessage()); - } - } - - /** - * build the formatting object tree using the given DOM Document - */ - public void buildSVGTree(Document document) throws FOPException { - - /* most of this code is modified from John Cowan's */ - - Node currentNode; - AttributesImpl currentAtts; - - /* temporary array for making Strings into character arrays */ - char[] array = null; - - currentAtts = new AttributesImpl(); - - /* start at the document element */ - currentNode = document; - - try { - while (currentNode != null) { - switch (currentNode.getNodeType()) { - case Node.DOCUMENT_NODE: - this.treeBuilder.startDocument(); - break; - case Node.CDATA_SECTION_NODE: - case Node.TEXT_NODE: - String data = currentNode.getNodeValue(); - int datalen = data.length(); - if (array == null || array.length < datalen) { - /* if the array isn't big enough, make a new - one */ - array = new char[datalen]; - } - data.getChars(0, datalen, array, 0); - this.treeBuilder.characters(array, 0, datalen); - break; - case Node.PROCESSING_INSTRUCTION_NODE: - this.treeBuilder.processingInstruction( - currentNode.getNodeName(), - currentNode.getNodeValue()); - break; - case Node.ELEMENT_NODE: - NamedNodeMap map = currentNode.getAttributes(); - currentAtts.clear(); - for (int i = map.getLength() - 1; i >= 0; i--) { - Attr att = (Attr) map.item(i); - currentAtts.addAttribute("", att.getName(), - "", "CDATA", att.getValue()); - } - this.treeBuilder.startElement("", - currentNode.getNodeName(), "", currentAtts); - break; - } - - Node nextNode = currentNode.getFirstChild(); - if (nextNode != null) { - currentNode = nextNode; - continue; - } - - while (currentNode != null) { - switch (currentNode.getNodeType()) { - case Node.DOCUMENT_NODE: - this.treeBuilder.endDocument(); - break; - case Node.ELEMENT_NODE: - this.treeBuilder.endElement("", - currentNode.getNodeName(), ""); - break; - } - - nextNode = currentNode.getNextSibling(); - if (nextNode != null) { - currentNode = nextNode; - break; - } - - currentNode = currentNode.getParentNode(); - } - } - } catch (SAXException e) { - throw new FOPException(e.getMessage()); - } - } - - public SVGDocument getSVGDocument() { - return this.treeBuilder.getSVGDocument(); - } - - /** - * format the formatting object tree into an area tree - */ - public void format() throws FOPException { - FontInfo fontInfo = new FontInfo(); - } -} -- 2.39.5