Browse Source

general clean up

removing unused files
better formatting


git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@194253 13f79535-47bb-0310-9956-ffa450edef68
tags/PRE_CODEFORMATTING
Keiron Liddle 23 years ago
parent
commit
7d5193b91e

+ 0
- 99
src/org/apache/fop/datatypes/PointsData.java View File

@@ -1,99 +0,0 @@
/*-- $Id$ --

============================================================================
The Apache Software License, Version 1.1
============================================================================
Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modifica-
tion, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. The end-user documentation included with the redistribution, if any, must
include the following acknowledgment: "This product includes software
developed by the Apache Software Foundation (http://www.apache.org/)."
Alternately, this acknowledgment may appear in the software itself, if
and wherever such third-party acknowledgments normally appear.
4. The names "Fop" and "Apache Software Foundation" must not be used to
endorse or promote products derived from this software without prior
written permission. For written permission, please contact
apache@apache.org.
5. Products derived from this software may not be called "Apache", nor may
"Apache" appear in their name, without prior written permission of the
Apache Software Foundation.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This software consists of voluntary contributions made by many individuals
on behalf of the Apache Software Foundation and was originally created by
James Tauber <jtauber@jtauber.com>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.fop.datatypes;

import org.apache.fop.fo.Property;
import org.apache.fop.svg.PathPoint;

import java.util.*;

/**
* Parses the points information in polylines and polygons
*
*/
public class PointsData {
Vector table = new Vector();

public PointsData (String len)
{
convert(len);
}

protected void convert(String len)
{
// need to handle negatives
StringTokenizer st = new StringTokenizer(len, ", \n\r\t");
while(st.hasMoreTokens()) {
String str1 = st.nextToken().trim();
if(st.hasMoreTokens()) {
String str2 = st.nextToken().trim();
float x = 0;
float y = 0;
try {
x = Float.valueOf(str1).floatValue();
y = Float.valueOf(str2).floatValue();
} catch(NumberFormatException nfe) {
}
addPoint(new PathPoint(x, y));
}
}
}

public Vector getPoints()
{
return table;
}

protected void addPoint(PathPoint pc)
{
table.addElement(pc);
}
}

+ 144
- 186
src/org/apache/fop/fo/SVGTreeBuilder.java View File

@@ -1,53 +1,9 @@
/*-- $Id$ --

============================================================================
The Apache Software License, Version 1.1
============================================================================
Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modifica-
tion, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. The end-user documentation included with the redistribution, if any, must
include the following acknowledgment: "This product includes software
developed by the Apache Software Foundation (http://www.apache.org/)."
Alternately, this acknowledgment may appear in the software itself, if
and wherever such third-party acknowledgments normally appear.
4. The names "Fop" and "Apache Software Foundation" must not be used to
endorse or promote products derived from this software without prior
written permission. For written permission, please contact
apache@apache.org.
5. Products derived from this software may not be called "Apache", nor may
"Apache" appear in their name, without prior written permission of the
Apache Software Foundation.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This software consists of voluntary contributions made by many individuals
on behalf of the Apache Software Foundation and was originally created by
James Tauber <jtauber@jtauber.com>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.
/* $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
@@ -88,7 +44,7 @@ public class SVGTreeBuilder extends DefaultHandler implements TreeBuilder {
* class that builds a property list for each formatting object
*/
protected Hashtable propertylistTable = new Hashtable();
/**
* current formatting object being handled
*/
@@ -105,55 +61,55 @@ public class SVGTreeBuilder extends DefaultHandler implements TreeBuilder {
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 static class NSMap {
String prefix;
String uri;
int level;

protected int level = 0;
protected Stack namespaceStack = new Stack();
NSMap(String prefix, String uri, int level) {
this.prefix = prefix;
this.uri = uri;
this.level = level;
}
}

{
namespaceStack.push(new NSMap("xml",
"http://www.w3.org/XML/1998/namespace",
-1));
namespaceStack.push(new NSMap("", "http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd", -1));
}
protected int level = 0;
protected Stack namespaceStack = new Stack();

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;
}
{
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/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd^" + name;
} else {
throw new SAXException(new FOPException("Unknown namespace prefix " + prefix));
}
}
return uri + "^" + localPart;
}*/
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.
@@ -161,10 +117,10 @@ public class SVGTreeBuilder extends DefaultHandler implements TreeBuilder {
* @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);
FObj.Maker maker) {
this.fobjTable.put(namespaceURI + "^" + localName, maker);
}

/**
@@ -173,11 +129,12 @@ public class SVGTreeBuilder extends DefaultHandler implements TreeBuilder {
* @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 = (PropertyListBuilder) this.propertylistTable.get(
namespaceURI);
if (plb == null) {
plb = new PropertyListBuilder();
plb.addList(list);
this.propertylistTable.put(namespaceURI, plb);
@@ -192,11 +149,13 @@ public class SVGTreeBuilder extends DefaultHandler implements TreeBuilder {
* @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) {
*/
public void addElementPropertyList(String namespaceURI,
String localName, Hashtable list) {
PropertyListBuilder plb;
plb = (PropertyListBuilder)this.propertylistTable.get(namespaceURI);
if(plb == null) {
plb = (PropertyListBuilder) this.propertylistTable.get(
namespaceURI);
if (plb == null) {
plb = new PropertyListBuilder();
plb.addElementList(localName, list);
this.propertylistTable.put(namespaceURI, plb);
@@ -207,100 +166,99 @@ public class SVGTreeBuilder extends DefaultHandler implements TreeBuilder {

/** SAX Handler for characters */
public void characters(char data[], int start, int length) {
currentFObj.addCharacters(data, start, start + 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();
}*/
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");
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 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()
{
SVGDocument doc = null;
/* doc = new SVGDocumentImpl();
SVGSVGElement svg = (SVGSVGElement)((org.apache.fop.svg.SVG)rootFObj).createGraphic();
doc.appendChild(svg);*/
return doc;
public SVGDocument getSVGDocument() {
SVGDocument doc = null;
/* doc = new SVGDocumentImpl();
SVGSVGElement svg = (SVGSVGElement)((org.apache.fop.svg.SVG)rootFObj).createGraphic();
doc.appendChild(svg);*/
return doc;
}
}

+ 2
- 1
src/org/apache/fop/render/awt/AWTRenderer.java View File

@@ -20,6 +20,7 @@ import org.apache.fop.viewer.*;
import org.apache.fop.apps.*;

import org.w3c.dom.svg.*;
import org.w3c.dom.Document;

import org.apache.batik.bridge.*;
import org.apache.batik.swing.svg.*;
@@ -682,7 +683,7 @@ public class AWTRenderer implements Renderer, Printable, Pageable {

// this.currentYPosition -= h;

SVGDocument doc = area.getSVGDocument();
Document doc = area.getSVGDocument();

UserAgent userAgent = new MUserAgent(new AffineTransform());


+ 2
- 2
src/org/apache/fop/render/pdf/PDFRenderer.java View File

@@ -329,7 +329,7 @@ public class PDFRenderer extends PrintRenderer {
// place at the current instream offset
int x = this.currentXPosition;
int y = this.currentYPosition;
SVGSVGElement svg = area.getSVGDocument().getRootElement();
SVGSVGElement svg = ((SVGDocument)area.getSVGDocument()).getRootElement();
int w = (int)(svg.getWidth().getBaseVal().getValue() * 1000);
int h = (int)(svg.getHeight().getBaseVal().getValue() * 1000);
float sx = 1, sy = -1;
@@ -358,7 +358,7 @@ public class PDFRenderer extends PrintRenderer {
" " + yOffset / 1000f + " cm\n");


SVGDocument doc = area.getSVGDocument();
Document doc = area.getSVGDocument();

UserAgent userAgent = new MUserAgent(new AffineTransform());


+ 0
- 30
src/org/apache/fop/render/txt/TXTRenderer.java View File

@@ -16,7 +16,6 @@ import org.apache.fop.fo.properties.*;
import org.apache.fop.layout.*;
import org.apache.fop.layout.inline.*;
import org.apache.fop.datatypes.*;
import org.apache.fop.svg.PathPoint;
import org.apache.fop.pdf.PDFPathPaint;
import org.apache.fop.pdf.PDFColor;
import org.apache.fop.image.*;
@@ -790,35 +789,6 @@ System.out.println("TXTRenderer.addRect(" + x + ", " + y + ", " + w + ", " + h +
// Add a polyline or polygon. Does not support fills yet!!!
protected void addPolyline(Vector points, int posx, int posy, PDFColor fc, PDFColor sc, float sw, boolean close)
{
PathPoint pc;
float lastx = 0;
float lasty = 0;
float curx = 0;
float cury = 0;
float startx = 0;
float starty = 0;
Enumeration e = points.elements();
if(e.hasMoreElements())
{
pc = (PathPoint)e.nextElement();
lastx = pc.x + posx / 1000;
lasty = ((pageHeight / 10) - posy/1000) + pc.y;
startx = lastx;
starty = lasty;
}
while(e.hasMoreElements())
{
pc = (PathPoint)e.nextElement();
curx = pc.x + posx / 1000;
cury = ((pageHeight / 10) - posy/1000) + pc.y;
addLine(lastx, lasty, curx, cury, sc, sw);
lastx = curx;
lasty = cury;
}
if(close)
{
addLine(lastx, lasty, startx, starty, sc, sw);
}
}

boolean printBMP(FopImage img, int x, int y, int w, int h) throws FopImageException

+ 5
- 7
src/org/apache/fop/svg/PDFDocumentGraphics2D.java View File

@@ -1,10 +1,8 @@
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************/
/* $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;


+ 5
- 7
src/org/apache/fop/svg/PDFGraphics2D.java View File

@@ -1,10 +1,8 @@
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************/
/* $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;


+ 5
- 7
src/org/apache/fop/svg/PDFTranscoder.java View File

@@ -1,10 +1,8 @@
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************/
/* $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;


+ 0
- 61
src/org/apache/fop/svg/PathPoint.java View File

@@ -1,61 +0,0 @@
/*-- $Id$ --

============================================================================
The Apache Software License, Version 1.1
============================================================================
Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modifica-
tion, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. The end-user documentation included with the redistribution, if any, must
include the following acknowledgment: "This product includes software
developed by the Apache Software Foundation (http://www.apache.org/)."
Alternately, this acknowledgment may appear in the software itself, if
and wherever such third-party acknowledgments normally appear.
4. The names "Fop" and "Apache Software Foundation" must not be used to
endorse or promote products derived from this software without prior
written permission. For written permission, please contact
apache@apache.org.
5. Products derived from this software may not be called "Apache", nor may
"Apache" appear in their name, without prior written permission of the
Apache Software Foundation.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This software consists of voluntary contributions made by many individuals
on behalf of the Apache Software Foundation and was originally created by
James Tauber <jtauber@jtauber.com>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.fop.svg;

public class PathPoint {
public float x;
public float y;
public PathPoint(float p1, float p2)
{
x = p1;
y = p2;
}
}

+ 0
- 390
src/org/apache/fop/svg/SVG.java View File

@@ -1,390 +0,0 @@
/*-- $Id$ --

============================================================================
The Apache Software License, Version 1.1
============================================================================

Copyright (C) 1999 The Apache Software Foundation. All rights reserved.

Redistribution and use in source and binary forms, with or without modifica-
tion, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.

3. The end-user documentation included with the redistribution, if any, must
include the following acknowledgment: "This product includes software
developed by the Apache Software Foundation (http://www.apache.org/)."
Alternately, this acknowledgment may appear in the software itself, if
and wherever such third-party acknowledgments normally appear.

4. The names "FOP" and "Apache Software Foundation" must not be used to
endorse or promote products derived from this software without prior
written permission. For written permission, please contact
apache@apache.org.

5. Products derived from this software may not be called "Apache", nor may
"Apache" appear in their name, without prior written permission of the
Apache Software Foundation.

THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

This software consists of voluntary contributions made by many individuals
on behalf of the Apache Software Foundation and was originally created by
James Tauber <jtauber@jtauber.com>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.

*/

package org.apache.fop.svg;

// FOP
import org.apache.fop.fo.*;
import org.apache.fop.fo.properties.*;
import org.apache.fop.layout.Area;
import org.apache.fop.layout.FontState;
import org.apache.fop.apps.FOPException;
import org.apache.fop.layout.inline.*;

import org.apache.batik.dom.svg.*;
import org.w3c.dom.*;
import org.w3c.dom.svg.*;
import org.w3c.dom.svg.SVGLength;

import java.io.File;

/**
* class representing svg:svg pseudo flow object.
*/
public class SVG extends SVGObj implements GraphicsCreator {

/**
* inner class for making SVG objects.
*/
public static class Maker extends FObj.Maker {

/**
* make an SVG object.
*
* @param parent the parent formatting object
* @param propertyList the explicit properties of this object
*
* @return the SVG object
*/
public FObj make(FObj parent,
PropertyList propertyList) throws FOPException {
return new SVG(parent, propertyList);
}
}

/**
* returns the maker for this object.
*
* @return the maker for SVG objects
*/
public static FObj.Maker maker() {
return new SVG.Maker();
}

FontState fs;

/**
* constructs an SVG object (called by Maker).
*
* @param parent the parent formatting object
* @param propertyList the explicit properties of this object
*/
public SVG(FObj parent, PropertyList propertyList) {
super(parent, propertyList);
this.name = "svg:svg";
tagName = "svg";
props = new String[] {"width", "height", "x", "y", "id", "style", "class", "visibility",
"id",
"class",
"enable-background",
"flood-color",
"flood-opacity",
"fill",
"fill-opacity",
"fill-rule",
"stroke",
"stroke-dasharray",
"stroke-dashoffset",
"stroke-linecap",
"stroke-linejoin",
"stroke-miterlimit",
"stroke-opacity",
"stroke-width",
"font-family",
"font-size",
"font-size-adjust",
"font-stretch",
"font-style",
"font-variant",
"font-weight",
"stop-color",
"stop-opacity",
"clip-path",
"clip-rule",
"color",
"color-interpolation",
"color-rendering",
"cursor",
"display",
"filter",
"image-rendering",
"mask",
"opacity",
"pointer-events",
"space-rendering",
"text-rendering",
"visibility",
"color-profile",
"lighting-color",
"marker-start",
"marker-mid",
"marker-end",
"alignment-baseline",
"baseline-shift",
"direction",
"glyph-orientation-horizontal",
"glyph-orientation-vertical",
"kerning",
"letter-spacing",
"text-decoration",
"unicode-bidi",
"word-spacing",
"writing-mode",
"text-anchor",
"dominant-baseline",
"clip",
"overflow",
"id",
"style",
"transform",
"class",
};
}

/* public void addGraphic(Document doc, Element parent) {
Element element = doc.createElement(tagName);
for(int count = 0; count < props.length; count++) {
String rf = this.properties.get(props[count]).getString();
element.setAttribute(props[count], rf);
}
parent.appendChild(element);
int numChildren = this.children.size();
for (int i = 0; i < numChildren; i++) {
Object child = children.elementAt(i);
if (child instanceof GraphicsCreator) {
((GraphicsCreator)child).addGraphic(doc, element);
} else if (child instanceof String) {
org.w3c.dom.Text text = doc.createTextNode((String)child);
element.appendChild(text);
}
}
}*/

/* public SVGElement createGraphic() {
SVGSVGElementImpl svgArea = null;
SVGLength w = ((SVGLengthProperty) this.properties.get("width")).
getSVGLength();
SVGLength h = ((SVGLengthProperty) this.properties.get("height")).
getSVGLength();
svgArea = new SVGSVGElementImpl();
SVGAnimatedLengthImpl sal;
if (w == null)
w = new SVGLengthImpl();
sal = new SVGAnimatedLengthImpl(w);
sal.setBaseVal(w);
svgArea.setWidth(sal);
if (h == null)
h = new SVGLengthImpl();
sal = new SVGAnimatedLengthImpl(h);
sal.setBaseVal(h);
svgArea.setHeight(sal);
SVGLength lengthProp =
((SVGLengthProperty) this.properties.get("x")).
getSVGLength();
SVGLength x = lengthProp == null ? new SVGLengthImpl() : lengthProp;
sal = new SVGAnimatedLengthImpl(x);
sal.setBaseVal(x);
svgArea.setX(sal);
lengthProp = ((SVGLengthProperty) this.properties.get("y")).
getSVGLength();
SVGLength y = lengthProp == null ? new SVGLengthImpl() : lengthProp;
sal = new SVGAnimatedLengthImpl(y);
sal.setBaseVal(y);
svgArea.setY(sal);

svgArea.setStyle(
((SVGStyle) this.properties.get("style")).getStyle());
svgArea.setTransform(
((SVGTransform) this.properties.get("transform")).
getTransform());
svgArea.setId(this.properties.get("id").getString());
int numChildren = this.children.size();
for (int i = 0; i < numChildren; i++) {
FONode fo = (FONode) children.elementAt(i);
if (fo instanceof GraphicsCreator) {
SVGElement impl = ((GraphicsCreator) fo).createGraphic();
if (impl != null) {
if (impl instanceof SVGElementImpl)
((SVGElementImpl) impl).setClassName(
new SVGAnimatedStringImpl(
((FObj) fo).getProperty(
"class").getString()));
svgArea.appendChild((org.w3c.dom.Node) impl);
}
// } else if(fo instanceof Defs) {
// svgArea.addDefs(((Defs)fo).createDefs());
}
Status status;
}
return svgArea;
}*/

/**
* layout this formatting object.
*
* @param area the area to layout the object into
*
* @return the status of the layout
*/
public Status layout(Area area) throws FOPException {

if (!(area instanceof ForeignObjectArea)) {
// this is an error
throw new FOPException("SVG not in fo:instream-foreign-object");
}

if (this.marker == BREAK_AFTER) {
return new Status(Status.OK);
}

if (this.marker == START) {
/* retrieve properties */
String id = this.properties.get("id").getString();
String fontFamily =
this.properties.get("font-family").getString();
String fontStyle =
this.properties.get("font-style").getString();
String fontWeight =
this.properties.get("font-weight").getString();
String fontSz = this.properties.get("font-size").getString();
int fontSize = area.getFontState().getFontSize();
try {
fontSize = Integer.parseInt(fontSz);
} catch(Exception e) {
}

// FIX-ME: should get the font-variant property
this.fs = new FontState(area.getFontInfo(), fontFamily,
fontStyle, fontWeight, fontSize, FontVariant.NORMAL);

// this.width = this.properties.get("width").getString();
// this.height = this.properties.get("height").getString();

this.marker = 0;
}

/* create an SVG area */
/* if width and height are zero, may want to get the bounds of the content. */
SVGOMDocument doc = new SVGOMDocument(null, SVGDOMImplementation.getDOMImplementation());
try {
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;
}
};
doc.setSVGContext(dc);

Element topLevel = doc.createElementNS("http://www.w3.org/2000/svg", tagName);
for(int count = 0; count < props.length; count++) {
if(this.properties.get(props[count]) != null) {
String rf = this.properties.get(props[count]).getString();
if(rf != null)
topLevel.setAttribute(props[count], rf);
}
}
doc.appendChild(topLevel);
int numChildren = this.children.size();
for (int i = 0; i < numChildren; i++) {
Object child = children.elementAt(i);
if (child instanceof GraphicsCreator) {
((GraphicsCreator)child).addGraphic(doc, topLevel);
} else if (child instanceof String) {
org.w3c.dom.Text text = doc.createTextNode((String)child);
topLevel.appendChild(text);
}
}

float width = ((SVGSVGElement)topLevel).getWidth().getBaseVal().getValue();
float height = ((SVGSVGElement)topLevel).getHeight().getBaseVal().getValue();
SVGArea svg = new SVGArea(fs, width, height);
svg.setSVGDocument(doc);
svg.start();

/* finish off the SVG area */
svg.end();

/* add the SVG area to the containing area */
ForeignObjectArea foa = (ForeignObjectArea) area;
foa.setObject(svg);
foa.setIntrinsicWidth(svg.getWidth());
foa.setIntrinsicHeight(svg.getHeight());

/* return status */
return new Status(Status.OK);
}
}

+ 36
- 84
src/org/apache/fop/svg/SVGArea.java View File

@@ -1,53 +1,9 @@
/*-- $Id$ --

============================================================================
The Apache Software License, Version 1.1
============================================================================
Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modifica-
tion, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. The end-user documentation included with the redistribution, if any, must
include the following acknowledgment: "This product includes software
developed by the Apache Software Foundation (http://www.apache.org/)."
Alternately, this acknowledgment may appear in the software itself, if
and wherever such third-party acknowledgments normally appear.
4. The names "Fop" and "Apache Software Foundation" must not be used to
endorse or promote products derived from this software without prior
written permission. For written permission, please contact
apache@apache.org.
5. Products derived from this software may not be called "Apache", nor may
"Apache" appear in their name, without prior written permission of the
Apache Software Foundation.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This software consists of voluntary contributions made by many individuals
on behalf of the Apache Software Foundation and was originally created by
James Tauber <jtauber@jtauber.com>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.
/* $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
@@ -60,48 +16,44 @@ import java.util.*;
import org.w3c.dom.svg.*;
import org.w3c.dom.*;


/**
* class representing an SVG area in which the SVG graphics sit
*/
public class SVGArea extends Area implements GetSVGDocument {
SVGDocument doc;
/**
* construct an SVG area
*
* @param fontState the font state
* @param width the width of the area
* @param height the height of the area
*/
public SVGArea(FontState fontState, float width, float height) {
super(fontState, (int)width * 1000, (int)height * 1000);
currentHeight = (int)height * 1000;
contentRectangleWidth = (int)width * 1000;
}
public class SVGArea extends Area {
Document doc;
/**
* construct an SVG area
*
* @param fontState the font state
* @param width the width of the area
* @param height the height of the area
*/
public SVGArea(FontState fontState, float width, float height) {
super(fontState, (int) width * 1000, (int) height * 1000);
currentHeight = (int) height * 1000;
contentRectangleWidth = (int) width * 1000;
}

public void setSVGDocument(SVGDocument doc)
{
this.doc = doc;
}
public void setSVGDocument(Document doc) {
this.doc = doc;
}

public SVGDocument getSVGDocument() throws DOMException
{
return doc;
}
public Document getSVGDocument() {
return doc;
}

public int getWidth()
{
// return getSVGDocument().getRootElement().getWidth().getBaseVal().getValue();
public int getWidth() {
// return getSVGDocument().getRootElement().getWidth().getBaseVal().getValue();
return contentRectangleWidth;
}

/**
* render the SVG.
*
* @param renderer the Renderer to use
*/
public void render(Renderer renderer) {
renderer.renderSVGArea(this);
}
/**
* render the SVG.
*
* @param renderer the Renderer to use
*/
public void render(Renderer renderer) {
renderer.renderSVGArea(this);
}
}

+ 154
- 228
src/org/apache/fop/svg/SVGDriver.java View File

@@ -1,52 +1,7 @@
/*-- $Id$ --

============================================================================
The Apache Software License, Version 1.1
============================================================================
Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modifica-
tion, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. The end-user documentation included with the redistribution, if any, must
include the following acknowledgment: "This product includes software
developed by the Apache Software Foundation (http://www.apache.org/)."
Alternately, this acknowledgment may appear in the software itself, if
and wherever such third-party acknowledgments normally appear.
4. The names "FOP" and "Apache Software Foundation" must not be used to
endorse or promote products derived from this software without prior
written permission. For written permission, please contact
apache@apache.org.
5. Products derived from this software may not be called "Apache", nor may
"Apache" appear in their name, without prior written permission of the
Apache Software Foundation.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This software consists of voluntary contributions made by many individuals
on behalf of the Apache Software Foundation and was originally created by
James Tauber <jtauber@jtauber.com>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.
/* $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;
@@ -82,40 +37,6 @@ import java.io.PrintWriter;
import java.io.IOException;

/**
* <P>Primary class that drives overall FOP process.
*
* <P>Once this class is instantiated, methods are called to set the
* Renderer to use, the (possibly multiple) ElementMapping(s) to
* use and the PrintWriter to use to output the results of the
* rendering (where applicable). In the case of the Renderer and
* ElementMapping(s), the Driver may be supplied either with the
* object itself, or the name of the class, in which case Driver will
* instantiate the class itself. The advantage of the latter is it
* enables runtime determination of Renderer and ElementMapping(s).
*
* <P>Once the Driver is set up, the buildFOTree method
* is called. Depending on whether DOM or SAX is being used, the
* invocation of the method is either buildFOTree(Document) or
* buildFOTree(Parser, InputSource) respectively.
*
* <P>A third possibility may be used to build the FO Tree, namely
* calling getDocumentHandler() and firing the SAX events yourself.
*
* <P>Once the FO Tree is built, the format() and render() methods may be
* called in that order.
*
* <P>Here is an example use of Driver from CommandLine.java:
*
* <PRE>
* Driver driver = new Driver();
* driver.setRenderer("org.apache.fop.render.pdf.PDFRenderer", version);
* driver.addElementMapping("org.apache.fop.fo.StandardElementMapping");
* driver.addElementMapping("org.apache.fop.svg.SVGElementMapping");
* driver.setWriter(new PrintWriter(new FileWriter(args[1])));
* driver.buildFOTree(parser, fileInputSource(args[0]));
* driver.format();
* driver.render();
* </PRE>
*/
public class SVGDriver {

@@ -127,76 +48,86 @@ public class SVGDriver {

/** create a new Driver */
public SVGDriver() {
this.treeBuilder = new SVGTreeBuilder();
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);
mapping.addToBuilder(this.treeBuilder);
}
/**
* add the element mapping with the given class name
*/
public void addElementMapping(String mappingClassName) {
createElementMapping(mappingClassName).addToBuilder(this.treeBuilder);
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;
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);
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;
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;
}

/**
@@ -207,129 +138,124 @@ public class SVGDriver {
* events but isn't a SAX Parser itself.
*/
public ContentHandler getContentHandler() {
return this.treeBuilder;
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());
}
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 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()
{
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();
public void format() throws FOPException {
FontInfo fontInfo = new FontInfo();
}
}

+ 183
- 0
src/org/apache/fop/svg/SVGElement.java View File

@@ -0,0 +1,183 @@
/* $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.fo.properties.*;
import org.apache.fop.layout.Area;
import org.apache.fop.layout.FontState;
import org.apache.fop.apps.FOPException;
import org.apache.fop.layout.inline.*;

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;

import java.io.File;

/**
* class representing svg:svg pseudo flow object.
*/
public class SVGElement extends Svg {

/**
* inner class for making SVG objects.
*/
public static class Maker extends FObj.Maker {

/**
* make an SVG object.
*
* @param parent the parent formatting object
* @param propertyList the explicit properties of this object
*
* @return the SVG object
*/
public FObj make(FObj parent,
PropertyList propertyList) throws FOPException {
return new SVGElement(parent, propertyList);
}
}

/**
* returns the maker for this object.
*
* @return the maker for SVG objects
*/
public static FObj.Maker maker() {
return new SVGElement.Maker();
}

FontState fs;

/**
* constructs an SVG object (called by Maker).
*
* @param parent the parent formatting object
* @param propertyList the explicit properties of this object
*/
public SVGElement(FObj parent, PropertyList propertyList) {
super(parent, propertyList);
}

/**
* layout this formatting object.
*
* @param area the area to layout the object into
*
* @return the status of the layout
*/
public Status layout(Area area) throws FOPException {

if (!(area instanceof ForeignObjectArea)) {
// this is an error
throw new FOPException("SVG not in fo:instream-foreign-object");
}

/*if (this.marker == BREAK_AFTER) {
return new Status(Status.OK);
}*/

if (this.marker == START) {
/* retrieve properties */
String id = this.properties.get("id").getString();
String fontFamily =
this.properties.get("font-family").getString();
String fontStyle =
this.properties.get("font-style").getString();
String fontWeight =
this.properties.get("font-weight").getString();
String fontSz = this.properties.get("font-size").getString();
int fontSize = area.getFontState().getFontSize();
try {
fontSize = Integer.parseInt(fontSz);
} catch (Exception e) {
}

// FIX-ME: should get the font-variant property
this.fs = new FontState(area.getFontInfo(), fontFamily,
fontStyle, fontWeight, fontSize, FontVariant.NORMAL);

// this.width = this.properties.get("width").getString();
// this.height = this.properties.get("height").getString();

this.marker = 0;
}

/* create an SVG area */
/* if width and height are zero, may want to get the bounds of the content. */

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);

for (int count = 0; count < props.length; count++) {
if (this.properties.get(props[count]) != null) {
String rf = this.properties.get(props[count]).getString();
if (rf != null)
svgRoot.setAttributeNS(null, props[count], rf);
}
}
//doc.appendChild(topLevel);
int numChildren = this.children.size();
for (int i = 0; i < numChildren; i++) {
Object child = children.elementAt(i);
if (child instanceof SVGObj) {
((SVGObj) child).addGraphic(doc, svgRoot);
} else if (child instanceof String) {
org.w3c.dom.Text text = doc.createTextNode((String) child);
svgRoot.appendChild(text);
}
}

float width = ((SVGSVGElement) svgRoot).getWidth().getBaseVal().
getValue();
float height = ((SVGSVGElement) svgRoot).getHeight().getBaseVal().
getValue();
SVGArea svg = new SVGArea(fs, width, height);
svg.setSVGDocument(doc);
svg.start();

/* finish off the SVG area */
svg.end();

/* add the SVG area to the containing area */
ForeignObjectArea foa = (ForeignObjectArea) area;
foa.setObject(svg);
foa.setIntrinsicWidth(svg.getWidth());
foa.setIntrinsicHeight(svg.getHeight());

/* return status */
return new Status(Status.OK);
}
}

+ 56
- 101
src/org/apache/fop/svg/SVGElementMapping.java View File

@@ -1,53 +1,9 @@
/*-- $Id$ --

============================================================================
The Apache Software License, Version 1.1
============================================================================
Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modifica-
tion, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. The end-user documentation included with the redistribution, if any, must
include the following acknowledgment: "This product includes software
developed by the Apache Software Foundation (http://www.apache.org/)."
Alternately, this acknowledgment may appear in the software itself, if
and wherever such third-party acknowledgments normally appear.
4. The names "Fop" and "Apache Software Foundation" must not be used to
endorse or promote products derived from this software without prior
written permission. For written permission, please contact
apache@apache.org.
5. Products derived from this software may not be called "Apache", nor may
"Apache" appear in their name, without prior written permission of the
Apache Software Foundation.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This software consists of voluntary contributions made by many individuals
on behalf of the Apache Software Foundation and was originally created by
James Tauber <jtauber@jtauber.com>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.
/* $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;

import org.apache.fop.fo.TreeBuilder;
@@ -56,61 +12,60 @@ import org.apache.fop.fo.ElementMapping;

public class SVGElementMapping implements ElementMapping {

public void addToBuilder(TreeBuilder builder) {
String uri = "http://www.w3.org/2000/svg";
builder.addMapping(uri, "svg", SVG.maker());
builder.addMapping(uri, "rect", Rect.maker());
builder.addMapping(uri, "line", Line.maker());
builder.addMapping(uri, "text", Text.maker());
public void addToBuilder(TreeBuilder builder) {
String uri = "http://www.w3.org/2000/svg";
builder.addMapping(uri, "svg", SVGElement.maker());
builder.addMapping(uri, "rect", Rect.maker());
builder.addMapping(uri, "line", Line.maker());
builder.addMapping(uri, "text", Text.maker());

builder.addMapping(uri, "desc", Desc.maker());
builder.addMapping(uri, "title", Title.maker());
builder.addMapping(uri, "circle", Circle.maker());
builder.addMapping(uri, "ellipse", Ellipse.maker());
builder.addMapping(uri, "g", G.maker());
builder.addMapping(uri, "polyline", Polyline.maker());
builder.addMapping(uri, "polygon", Polygon.maker());
builder.addMapping(uri, "defs", Defs.maker());
builder.addMapping(uri, "path", Path.maker());
builder.addMapping(uri, "use", Use.maker());
builder.addMapping(uri, "tspan", Tspan.maker());
builder.addMapping(uri, "tref", Tref.maker());
builder.addMapping(uri, "image", Image.maker());
builder.addMapping(uri, "style", Style.maker());
builder.addMapping(uri, "desc", Desc.maker());
builder.addMapping(uri, "title", Title.maker());
builder.addMapping(uri, "circle", Circle.maker());
builder.addMapping(uri, "ellipse", Ellipse.maker());
builder.addMapping(uri, "g", G.maker());
builder.addMapping(uri, "polyline", Polyline.maker());
builder.addMapping(uri, "polygon", Polygon.maker());
builder.addMapping(uri, "defs", Defs.maker());
builder.addMapping(uri, "path", Path.maker());
builder.addMapping(uri, "use", Use.maker());
builder.addMapping(uri, "tspan", Tspan.maker());
builder.addMapping(uri, "tref", Tref.maker());
builder.addMapping(uri, "image", Image.maker());
builder.addMapping(uri, "style", Style.maker());

// elements in progress
builder.addMapping(uri, "textPath", TextPath.maker());
builder.addMapping(uri, "clipPath", ClipPath.maker());
builder.addMapping(uri, "mask", Mask.maker());
builder.addMapping(uri, "linearGradient", LinearGradient.maker());
builder.addMapping(uri, "radialGradient", RadialGradient.maker());
builder.addMapping(uri, "stop", Stop.maker());
builder.addMapping(uri, "a", A.maker());
builder.addMapping(uri, "switch", Switch.maker());
builder.addMapping(uri, "symbol", Symbol.maker());
builder.addMapping(uri, "textPath", TextPath.maker());
builder.addMapping(uri, "clipPath", ClipPath.maker());
builder.addMapping(uri, "mask", Mask.maker());
builder.addMapping(uri, "linearGradient", LinearGradient.maker());
builder.addMapping(uri, "radialGradient", RadialGradient.maker());
builder.addMapping(uri, "stop", Stop.maker());
builder.addMapping(uri, "a", A.maker());
builder.addMapping(uri, "switch", Switch.maker());
builder.addMapping(uri, "symbol", Symbol.maker());

// elements below will not work
builder.addMapping(uri, "pattern", Pattern.maker());
builder.addMapping(uri, "pattern", Pattern.maker());

builder.addMapping(uri, "marker", Marker.maker());
builder.addMapping(uri, "animate", Animate.maker());
builder.addMapping(uri, "altGlyph", AltGlyph.maker());
builder.addMapping(uri, "font", Font.maker());
builder.addMapping(uri, "glyph", Glyph.maker());
builder.addMapping(uri, "missing-glyph", MissingGlyph.maker());
builder.addMapping(uri, "hkern", Hkern.maker());
builder.addMapping(uri, "vkern", Vkern.maker());
builder.addMapping(uri, "set", Set.maker());
builder.addMapping(uri, "animateMotion", AnimateMotion.maker());
builder.addMapping(uri, "animateColor", AnimateColor.maker());
builder.addMapping(uri, "animateTransform", AnimateTransform.maker());
builder.addMapping(uri, "cursor", Cursor.maker());
builder.addMapping(uri, "filter", Filter.maker());
builder.addMapping(uri, "marker", Marker.maker());
builder.addMapping(uri, "animate", Animate.maker());
builder.addMapping(uri, "altGlyph", AltGlyph.maker());
builder.addMapping(uri, "font", Font.maker());
builder.addMapping(uri, "glyph", Glyph.maker());
builder.addMapping(uri, "missing-glyph", MissingGlyph.maker());
builder.addMapping(uri, "hkern", Hkern.maker());
builder.addMapping(uri, "vkern", Vkern.maker());
builder.addMapping(uri, "set", Set.maker());
builder.addMapping(uri, "animateMotion", AnimateMotion.maker());
builder.addMapping(uri, "animateColor", AnimateColor.maker());
builder.addMapping(uri, "animateTransform",
AnimateTransform.maker());
builder.addMapping(uri, "cursor", Cursor.maker());
builder.addMapping(uri, "filter", Filter.maker());

builder.addMapping(uri, "feFlood", FeFlood.maker());
builder.addMapping(uri, "feGaussianBlur", FeGaussianBlur.maker());
builder.addMapping(uri, "feOffset", FeOffset.maker());
builder.addMapping(uri, "feMerge", FeMerge.maker());
builder.addMapping(uri, "feMergeNode", FeMergeNode.maker());
}
builder.addMapping(uri, "feFlood", FeFlood.maker());
builder.addMapping(uri, "feGaussianBlur", FeGaussianBlur.maker());
builder.addMapping(uri, "feOffset", FeOffset.maker());
builder.addMapping(uri, "feMerge", FeMerge.maker());
builder.addMapping(uri, "feMergeNode", FeMergeNode.maker());
}
}

+ 47
- 91
src/org/apache/fop/svg/SVGObj.java View File

@@ -1,52 +1,7 @@
/*-- $Id$ --

============================================================================
The Apache Software License, Version 1.1
============================================================================
Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modifica-
tion, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. The end-user documentation included with the redistribution, if any, must
include the following acknowledgment: "This product includes software
developed by the Apache Software Foundation (http://www.apache.org/)."
Alternately, this acknowledgment may appear in the software itself, if
and wherever such third-party acknowledgments normally appear.
4. The names "FOP" and "Apache Software Foundation" must not be used to
endorse or promote products derived from this software without prior
written permission. For written permission, please contact
apache@apache.org.
5. Products derived from this software may not be called "Apache", nor may
"Apache" appear in their name, without prior written permission of the
Apache Software Foundation.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This software consists of voluntary contributions made by many individuals
on behalf of the Apache Software Foundation and was originally created by
James Tauber <jtauber@jtauber.com>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.
/* $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;
@@ -69,39 +24,43 @@ import java.util.*;
* that this element is not being layed out inside some incorrect
* element.
*/
public abstract class SVGObj extends FObj implements GraphicsCreator {
public abstract class SVGObj extends FObj {

String tagName = "";
String[] props = {};
/**
*
* @param parent the parent formatting object
* @param propertyList the explicit properties of this object
*/
public SVGObj(FObj parent, PropertyList propertyList) {
super(parent, propertyList);
}
String tagName = "";
String[] props = {};
/**
*
* @param parent the parent formatting object
* @param propertyList the explicit properties of this object
*/
public SVGObj(FObj parent, PropertyList propertyList) {
super(parent, propertyList);
}

protected static Hashtable ns = new Hashtable();

public void addGraphic(Document doc, Element parent) {
Element element = doc.createElementNS("http://www.w3.org/2000/svg", tagName);
// Element element = doc.createElement(tagName);
for(int count = 0; count < props.length; count++) {
if(this.properties.get(props[count]) != null) {
Element element = doc.createElementNS("http://www.w3.org/2000/svg",
tagName);
// Element element = doc.createElement(tagName);
for (int count = 0; count < props.length; count++) {
if (this.properties.get(props[count]) != null) {
String rf = this.properties.get(props[count]).getString();
if(rf != null) {
if(props[count].indexOf(":") == -1) {
if (rf != null) {
if (props[count].indexOf(":") == -1) {
element.setAttribute(props[count], rf);
} else {
String pref = props[count].substring(0, props[count].indexOf(":"));
System.out.println(pref);
if(pref.equals("xmlns")) {
ns.put(props[count].substring(props[count].indexOf(":") + 1), rf);
System.out.println(ns);
String pref = props[count].substring(0,
props[count].indexOf(":"));
System.out.println(pref);
if (pref.equals("xmlns")) {
ns.put(props[count].substring(
props[count].indexOf(":") + 1), rf);
System.out.println(ns);
}
ns.put("xlink", "http://www.w3.org/1999/xlink");
element.setAttributeNS((String)ns.get(pref), props[count], rf);
element.setAttributeNS((String) ns.get(pref),
props[count], rf);
}
}
}
@@ -110,30 +69,27 @@ System.out.println(ns);
int numChildren = this.children.size();
for (int i = 0; i < numChildren; i++) {
Object child = children.elementAt(i);
if (child instanceof GraphicsCreator) {
((GraphicsCreator)child).addGraphic(doc, element);
if (child instanceof SVGObj) {
((SVGObj) child).addGraphic(doc, element);
} else if (child instanceof String) {
org.w3c.dom.Text text = doc.createTextNode((String)child);
org.w3c.dom.Text text = doc.createTextNode((String) child);
element.appendChild(text);
}
}
}

/**
* layout this formatting object.
*
* @param area the area to layout the object into
* @return the status of the layout
*/
public Status layout(Area area) throws FOPException
{
// if (area instanceof SVGArea) {
// } else {
/* otherwise generate a warning */
System.err.println("WARNING: " + this.name + " outside svg:svg");
// }
/**
* layout this formatting object.
*
* @param area the area to layout the object into
* @return the status of the layout
*/
public Status layout(Area area) throws FOPException {
/* generate a warning */
System.err.println("WARNING: " + this.name + " outside svg:svg");

/* return status */
return new Status(Status.OK);
}
/* return status */
return new Status(Status.OK);
}
}


+ 0
- 131
src/org/apache/fop/svg/SVGPoints.java View File

@@ -1,131 +0,0 @@
/*-- $Id$ --

============================================================================
The Apache Software License, Version 1.1
============================================================================

Copyright (C) 1999 The Apache Software Foundation. All rights reserved.

Redistribution and use in source and binary forms, with or without modifica-
tion, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.

3. The end-user documentation included with the redistribution, if any, must
include the following acknowledgment: "This product includes software
developed by the Apache Software Foundation (http://www.apache.org/)."
Alternately, this acknowledgment may appear in the software itself, if
and wherever such third-party acknowledgments normally appear.

4. The names "Fop" and "Apache Software Foundation" must not be used to
endorse or promote products derived from this software without prior
written permission. For written permission, please contact
apache@apache.org.

5. Products derived from this software may not be called "Apache", nor may
"Apache" appear in their name, without prior written permission of the
Apache Software Foundation.

THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

This software consists of voluntary contributions made by many individuals
on behalf of the Apache Software Foundation and was originally created by
James Tauber <jtauber@jtauber.com>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.

*/
package org.apache.fop.svg;

// FOP
import org.apache.fop.fo.*;
import org.apache.fop.datatypes.*;
import org.apache.fop.apps.FOPException;

import java.util.*;

/**
*
*/
public class SVGPoints extends Property {

/**
* inner class for making SVG Length objects.
*/
public static class Maker extends Property.Maker {

/**
* whether this property is inherited or not.
*
* @return is this inherited?
*/
public boolean isInherited() {
return false;
}

/**
* make an SVG Length property with the given value.
*
* @param propertyList the property list this is a member of
* @param value the explicit string value of the property
*/
public Property make(PropertyList propertyList, String value,
FObj fo) throws FOPException {
return new SVGPoints(propertyList, new PointsData(value));
}

/**
* make an SVG Length property with the default value.
*
* @param propertyList the property list the property is a member of
*/
public Property make(PropertyList propertyList)
throws FOPException {
return make(propertyList, "", null);
}
}

/**
* returns the maker for this object.
*
* @return the maker for SVG Length objects
*/
public static Property.Maker maker(String propName) {
return new SVGPoints.Maker();
}

protected PointsData style;

/**
* construct an SVG length (called by the Maker).
*
* @param propertyList the property list this is a member of
* @param explicitValue the explicit value as a Length object
*/
protected SVGPoints(PropertyList propertyList,
PointsData explicitValue) {
this.style = explicitValue;
}

/**
* get the length
*
* @return the length as a Length object
*/
public Vector getPoints() {
return this.style.getPoints();
}
}

+ 14
- 58
src/org/apache/fop/svg/SVGPropertyListMapping.java View File

@@ -1,52 +1,7 @@
/*-- $Id$ --

============================================================================
The Apache Software License, Version 1.1
============================================================================

Copyright (C) 1999 The Apache Software Foundation. All rights reserved.

Redistribution and use in source and binary forms, with or without modifica-
tion, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.

3. The end-user documentation included with the redistribution, if any, must
include the following acknowledgment: "This product includes software
developed by the Apache Software Foundation (http://www.apache.org/)."
Alternately, this acknowledgment may appear in the software itself, if
and wherever such third-party acknowledgments normally appear.

4. The names "FOP" and "Apache Software Foundation" must not be used to
endorse or promote products derived from this software without prior
written permission. For written permission, please contact
apache@apache.org.

5. Products derived from this software may not be called "Apache", nor may
"Apache" appear in their name, without prior written permission of the
Apache Software Foundation.

THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

This software consists of voluntary contributions made by many individuals
on behalf of the Apache Software Foundation and was originally created by
James Tauber <jtauber@jtauber.com>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.

/* $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;
@@ -60,14 +15,15 @@ public class SVGPropertyListMapping implements PropertyListMapping {

public void addToBuilder(TreeBuilder builder) {

String uri = "http://www.w3.org/2000/svg";
builder.addPropertyList(uri, SVGPropertyMapping.getGenericMappings());
/* Add any element mappings */
for (Enumeration e = SVGPropertyMapping.getElementMappings();
e.hasMoreElements();) {
String elem = (String)e.nextElement();
builder.addElementPropertyList(uri, elem,
SVGPropertyMapping.getElementMapping(elem));
}
String uri = "http://www.w3.org/2000/svg";
builder.addPropertyList(uri,
SVGPropertyMapping.getGenericMappings());
/* Add any element mappings */
for (Enumeration e = SVGPropertyMapping.getElementMappings();
e.hasMoreElements();) {
String elem = (String) e.nextElement();
builder.addElementPropertyList(uri, elem,
SVGPropertyMapping.getElementMapping(elem));
}
}
}

+ 12
- 56
src/org/apache/fop/svg/SVGStringProperty.java View File

@@ -1,53 +1,9 @@
/*-- $Id$ --

============================================================================
The Apache Software License, Version 1.1
============================================================================

Copyright (C) 1999 The Apache Software Foundation. All rights reserved.

Redistribution and use in source and binary forms, with or without modifica-
tion, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.

3. The end-user documentation included with the redistribution, if any, must
include the following acknowledgment: "This product includes software
developed by the Apache Software Foundation (http://www.apache.org/)."
Alternately, this acknowledgment may appear in the software itself, if
and wherever such third-party acknowledgments normally appear.

4. The names "Fop" and "Apache Software Foundation" must not be used to
endorse or promote products derived from this software without prior
written permission. For written permission, please contact
apache@apache.org.

5. Products derived from this software may not be called "Apache", nor may
"Apache" appear in their name, without prior written permission of the
Apache Software Foundation.

THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

This software consists of voluntary contributions made by many individuals
on behalf of the Apache Software Foundation and was originally created by
James Tauber <jtauber@jtauber.com>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.

/* $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;

import java.util.*;
@@ -57,12 +13,12 @@ import org.apache.fop.fo.*;
import org.apache.fop.apps.FOPException;

/**
* a class representing all the length properties in SVG
* a class representing all properties in SVG
*/
public class SVGStringProperty extends Property {

/**
* inner class for making SVG Length objects.
* inner class for making SVG String objects.
*/
public static class Maker extends Property.Maker {

@@ -76,7 +32,7 @@ public class SVGStringProperty extends Property {
}

/**
* make an SVG Length property with the given value.
* make an SVG String property with the given value.
*
* @param propertyList the property list this is a member of
* @param value the explicit string value of the property
@@ -87,7 +43,7 @@ public class SVGStringProperty extends Property {
}

/**
* make an SVG Length property with the default value.
* make an SVG String property with the default value.
*
* @param propertyList the property list the property is a member of
*/
@@ -106,11 +62,11 @@ public class SVGStringProperty extends Property {
return new SVGStringProperty.Maker();
}

/** the length as a Length object */
/** the value */
protected String value;

/**
* construct an SVG length (called by the Maker).
* construct an SVG String (called by the Maker).
*
* @param propertyList the property list this is a member of
* @param explicitValue the explicit value as a Length object
@@ -121,7 +77,7 @@ public class SVGStringProperty extends Property {
}

/**
* get the length
* get the value
*
* @return the length as a Length object
*/

+ 0
- 61
src/org/apache/fop/svg/TextElement.java View File

@@ -1,61 +0,0 @@
/*-- $Id$ --

============================================================================
The Apache Software License, Version 1.1
============================================================================
Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modifica-
tion, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. The end-user documentation included with the redistribution, if any, must
include the following acknowledgment: "This product includes software
developed by the Apache Software Foundation (http://www.apache.org/)."
Alternately, this acknowledgment may appear in the software itself, if
and wherever such third-party acknowledgments normally appear.
4. The names "FOP" and "Apache Software Foundation" must not be used to
endorse or promote products derived from this software without prior
written permission. For written permission, please contact
apache@apache.org.
5. Products derived from this software may not be called "Apache", nor may
"Apache" appear in their name, without prior written permission of the
Apache Software Foundation.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This software consists of voluntary contributions made by many individuals
on behalf of the Apache Software Foundation and was originally created by
James Tauber <jtauber@jtauber.com>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.
*/

package org.apache.fop.svg;

import org.w3c.dom.svg.SVGElement;

/**
*
*/
public interface TextElement {
public SVGElement createTextElement();
}

+ 0
- 131
src/org/apache/fop/svg/TextProperty.java View File

@@ -1,131 +0,0 @@
/*-- $Id$ --

============================================================================
The Apache Software License, Version 1.1
============================================================================

Copyright (C) 1999 The Apache Software Foundation. All rights reserved.

Redistribution and use in source and binary forms, with or without modifica-
tion, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.

3. The end-user documentation included with the redistribution, if any, must
include the following acknowledgment: "This product includes software
developed by the Apache Software Foundation (http://www.apache.org/)."
Alternately, this acknowledgment may appear in the software itself, if
and wherever such third-party acknowledgments normally appear.

4. The names "Fop" and "Apache Software Foundation" must not be used to
endorse or promote products derived from this software without prior
written permission. For written permission, please contact
apache@apache.org.

5. Products derived from this software may not be called "Apache", nor may
"Apache" appear in their name, without prior written permission of the
Apache Software Foundation.

THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

This software consists of voluntary contributions made by many individuals
on behalf of the Apache Software Foundation and was originally created by
James Tauber <jtauber@jtauber.com>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.

*/
package org.apache.fop.svg;

// FOP
import org.apache.fop.fo.*;
import org.apache.fop.datatypes.*;
import org.apache.fop.apps.FOPException;

import java.util.*;

/**
*
*/
public class TextProperty extends Property {

/**
* inner class for making SVG Length objects.
*/
public static class Maker extends Property.Maker {

/**
* whether this property is inherited or not.
*
* @return is this inherited?
*/
public boolean isInherited() {
return false;
}

/**
* make an SVG Length property with the given value.
*
* @param propertyList the property list this is a member of
* @param value the explicit string value of the property
*/
public Property make(PropertyList propertyList, String value,
FObj fo) throws FOPException {
return new TextProperty(propertyList, value);
}

/**
* make an SVG Length property with the default value.
*
* @param propertyList the property list the property is a member of
*/
public Property make(PropertyList propertyList)
throws FOPException {
return make(propertyList, "", null);
}
}

/**
* returns the maker for this object.
*
* @return the maker for SVG Length objects
*/
public static Property.Maker maker() {
return new TextProperty.Maker();
}

/** the length as a Length object */
protected String str;

/**
* construct an SVG length (called by the Maker).
*
* @param propertyList the property list this is a member of
* @param explicitValue the explicit value as a Length object
*/
protected TextProperty(PropertyList propertyList, String s) {
this.str = s;
}

/**
* get the length
*
* @return the length as a Length object
*/
public String getString() {
return this.str;
}
}

Loading…
Cancel
Save