diff options
author | Maximilian Berger <maxberger@apache.org> | 2009-01-21 11:59:20 +0000 |
---|---|---|
committer | Maximilian Berger <maxberger@apache.org> | 2009-01-21 11:59:20 +0000 |
commit | cc2a5e8e3c2059b96df89497cb00c3d5a2583d15 (patch) | |
tree | 3ece807816cf6027512353f31bbc81c3c9ef3f44 | |
parent | 97e2cc9ccbe25970292e741aec91961fd8725aa1 (diff) | |
download | xmlgraphics-fop-cc2a5e8e3c2059b96df89497cb00c3d5a2583d15.tar.gz xmlgraphics-fop-cc2a5e8e3c2059b96df89497cb00c3d5a2583d15.zip |
Removed MathML example as per discussion on fop-dev mailing list
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@736295 13f79535-47bb-0310-9956-ffa450edef68
14 files changed, 5 insertions, 1016 deletions
diff --git a/examples/mathml/README b/examples/mathml/README index 93474086d..9455ef859 100644 --- a/examples/mathml/README +++ b/examples/mathml/README @@ -1,21 +1,10 @@ FOP MathML Readme -This directory contains an extension for MathML that can be used with FOP. +The MathML extension is now maintained by the JEuclid project: -This extension works with JEuclid which is available from: -http://sourceforge.net/projects/jeuclid/ - -This simply uses JEuclid to convert the MathML CML into SVG. -The SVG is then handled as normal. +http://jeuclid.sourceforge.net/jeuclid-fop/ -Building the MathML extension: -To build the MathML extension, please download JEuclid using the link above. -Put the jeuclid.jar into the lib directory and run the Ant build script in -this directory. +Further information: -Usage: -When you've built the MathML extension, add jeuclid.jar and -build/mathml-fop.jar to the classpath used when running FOP. You can then -simply use MathML directly in fo:instream-foreign-object elements or -reference a MathML file in fo:external-graphic elements as shown in -the demo file: docs/mathml.fo
\ No newline at end of file +http://jeuclid.sourceforge.net/ +http://sourceforge.net/projects/jeuclid/ diff --git a/examples/mathml/build.xml b/examples/mathml/build.xml deleted file mode 100644 index c24c06b24..000000000 --- a/examples/mathml/build.xml +++ /dev/null @@ -1,155 +0,0 @@ -<?xml version="1.0"?> -<!-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<!-- $Id$ --> -<!-- =========================================================================== - -============================================================================ --> - -<project default="package" basedir="."> - - <path id="libs-build-classpath"> - <fileset dir="../../lib"> - <include name="*.jar"/> - </fileset> - <fileset dir="../../build"> - <include name="fop.jar"/> - </fileset> - <fileset dir="lib"> - <include name="*.jar"/> - </fileset> - </path> - - <!-- =================================================================== --> - <!-- Initialization target --> - <!-- =================================================================== --> - <target name="init"> - <tstamp/> - <property name="Name" value="MathML-FOP"/> - <property name="name" value="mathml-fop"/> - <property name="version" value="0.1-CVS"/> - <filter token="version" value="${version}"/> - <property name="year" value="2002-2004"/> - - <echo message="------------------- ${Name} ${version} [${year}] ----------------"/> - - <property name="build.compiler" value="classic"/> - <property name="debug" value="on"/> - <property name="optimize" value="off"/> - <property name="deprecation" value="on"/> - - <property name="src.dir" value="./src"/> - <property name="lib.dir" value="./lib"/> - <property name="packages" value="org.apache.fop.*"/> - - <property name="build.dir" value="./build"/> - <property name="build.src" value="./build/src"/> - <property name="build.dest" value="./build/classes"/> - - <property name="resource.dir" value="resources"/> - <property name="mathml.dir" value="org/apache/fop/mathml"/> - - <available property="jeuclid.present" classname="net.sourceforge.jeuclid.MathBase" classpathref="libs-build-classpath"/> - </target> - <target name="jeuclid-check" depends="init" unless="jeuclid.present"> - <echo message="============================================================================="/> - <echo message="jeuclid.jar is missing in the lib directory."/> - <echo message="You can download it at: http://sourceforge.net/projects/jeuclid/"/> - <echo message="============================================================================="/> - <fail message="Dependecy check failed."/> - </target> - - <!-- =================================================================== --> - <!-- Help on usage --> - <!-- =================================================================== --> - <target name="usage"> - <echo message="Use the -projecthelp option instead"/> - </target> - - <!-- =================================================================== --> - <!-- Prepares the build directory --> - <!-- =================================================================== --> - <target name="prepare" depends="init, jeuclid-check"> - <!-- create directories --> - <echo message="Preparing the build directories"/> - <mkdir dir="${build.dir}"/> - <mkdir dir="${build.src}"/> - <mkdir dir="${build.src}/${mathml.dir}"/> - </target> - - <!-- =================================================================== --> - <!-- Prepares the source code --> - <!-- =================================================================== --> - <target name="prepare-src" depends="prepare"> - <!-- copy src files --> - <copy todir="${build.src}"> - <fileset dir="${src.dir}" - excludes="**/Makefile*, **/package.html"/> - </copy> - <copy todir="${build.dest}/"> - <fileset dir="${resource.dir}"/> - </copy> - </target> - - <!-- =================================================================== --> - <!-- Compiles the source directory --> - <!-- =================================================================== --> - <target name="compile" depends="prepare-src" description="Compile the Java sources"> - <echo message="Compiling the sources "/> - <!-- create directories --> - <mkdir dir="${build.dest}"/> - - <javac srcdir="${build.src}" - destdir="${build.dest}" - debug="${debug}" - deprecation="${deprecation}" - optimize="${optimize}" - excludes=""> - <classpath refid="libs-build-classpath"/> - </javac> - </target> - - <!-- =================================================================== --> - <!-- Creates the class package --> - <!-- =================================================================== --> - <target name="package" depends="compile" description="Create jar file"> - <echo message="Creating the jar file ${build.dir}/${name}.jar"/> - <tstamp> - <format property="ts" pattern="yyyyMMdd-HHmmss-z"/> - </tstamp> - - <jar jarfile="${build.dir}/${name}.jar" - basedir="${build.dest}" - includes="**"> - <manifest> - <attribute name="Implementation-Title" value="${Name}"/> - <attribute name="Implementation-Version" value="${version}"/> - <attribute name="Implementation-Vendor" value="Apache Software Foundation (http://xmlgraphics.apache.org/fop/)"/> - <attribute name="Build-Id" value="${ts} (${user.name} [${os.name} ${os.version} ${os.arch}])"/> - </manifest> - </jar> - </target> - - <!-- =================================================================== --> - <!-- Clean targets --> - <!-- =================================================================== --> - <target name="clean" depends="init" description="Cleans the build directory"> - <delete dir="${build.dir}"/> - </target> - -</project> - diff --git a/examples/mathml/docs/example.mml b/examples/mathml/docs/example.mml deleted file mode 100644 index 0f04968c2..000000000 --- a/examples/mathml/docs/example.mml +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> - <math xmlns="http://www.w3.org/1998/Math/MathML" mode="display"> - <mrow> - <mo stretchy="false">{</mo> - <munder> - <mrow> - <mover> - <mrow> - <mpadded width="0"/> - <!--mpadded width="0">(</mpadded--> - <!-- \mathstrut -ugly hack a la TeX --> - <mi>a</mi> - <mo>,</mo> - <mo>...</mo> - <mo>,</mo> - <mi>a</mi> - </mrow> - <mover> - <mo>︷</mo> - <mrow> - <mi>k</mi> - <mtext> </mtext> - <mi>a</mi> - <mtext>'s</mtext> - </mrow> - </mover> - </mover> - <mo>,</mo> - <mover> - <mrow> - <mpadded/> - <!--mpadded width="0">(</mpadded--> - <!-- \mathstrut -ugly hack a la TeX --> - <mi>b</mi> - <mo>,</mo> - <mo>...</mo> - <mo>,</mo> - <mi>b</mi> - </mrow> - <mover> - <mo>︷</mo> - <mrow> - <mi>ℓ</mi> - <mtext> </mtext> - <mi>b</mi> - <mtext>'s</mtext> - </mrow> - </mover> - </mover> - </mrow> - <munder> - <mo>︸</mo> - <mrow> - <mi>k</mi> - <mo>+</mo> - <mi>ℓ</mi> - <mtext> elements</mtext> - </mrow> - </munder> - </munder> - <mo stretchy="false">}</mo> - </mrow> - </math> diff --git a/examples/mathml/docs/mathml.fo b/examples/mathml/docs/mathml.fo deleted file mode 100644 index e5707b6bd..000000000 --- a/examples/mathml/docs/mathml.fo +++ /dev/null @@ -1,172 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> - <fo:layout-master-set> - <fo:simple-page-master - margin-right="1.5cm" - margin-left="1.5cm" - margin-bottom="2cm" - margin-top="1cm" - page-width="21cm" - page-height="29.7cm" - master-name="first"> - <fo:region-body margin-top="1cm"/> - <fo:region-before extent="1cm"/> - <fo:region-after extent="1.5cm"/> - </fo:simple-page-master> - </fo:layout-master-set> - - <fo:page-sequence master-reference="first"> - <fo:static-content flow-name="xsl-region-before"> - <fo:block line-height="14pt" font-size="10pt" - text-align="end">MathML Extension</fo:block> - </fo:static-content> - <fo:static-content flow-name="xsl-region-after"> - <fo:block line-height="14pt" font-size="10pt" - text-align="end">Page <fo:page-number/></fo:block> - </fo:static-content> - - <fo:flow flow-name="xsl-region-body"> - - <fo:block space-before.optimum="3pt" space-after.optimum="15pt"> - The MathML Extension - </fo:block> - - <fo:block space-before.optimum="3pt" space-after.optimum="15pt"> -The mathml extension is an addition to FOP that can be used to draw mathml -expressions. - </fo:block> - - <fo:block space-before.optimum="3pt" space-after.optimum="15pt"> - Examples - </fo:block> - - <fo:block space-before.optimum="3pt" space-after.optimum="15pt"> -<fo:block space-after.optimum="5pt"> -<fo:instream-foreign-object> - <math xmlns="http://www.w3.org/1998/Math/MathML" mode="inline"> - <mrow> - <mi>I</mi> - <mrow> - <mo>(</mo> - <mi>x</mi> - <mo>)</mo> - </mrow> - <mo>=</mo> - <mi>F</mi> - <mo stretchy="false">(</mo> - <mi>x</mi> - <mo stretchy="false">)</mo> - <mo>+</mo> - <mi>C</mi> - </mrow> - </math> -</fo:instream-foreign-object> -</fo:block> - </fo:block> - - <fo:block space-before.optimum="3pt" space-after.optimum="15pt"> -<fo:block space-after.optimum="5pt"> -<fo:instream-foreign-object> - <math xmlns="http://www.w3.org/1998/Math/MathML" mode="inline"> - <mrow> - <mo>(</mo> - <mtable> - <mtr> - <mtd columnalign="center"> - <mrow> - <mo>(</mo> - <mtable> - <mtr> - <mtd columnalign="center"> - <mi>a</mi> - </mtd> - <mtd columnalign="center"> - <mi>b</mi> - </mtd> - </mtr> - <mtr> - <mtd columnalign="center"> - <mi>c</mi> - </mtd> - <mtd columnalign="center"> - <mi>d</mi> - </mtd> - </mtr> - </mtable> - <mo>)</mo> - </mrow> - </mtd> - <mtd columnalign="center"> - <mrow> - <mo>(</mo> - <mtable> - <mtr> - <mtd columnalign="center"> - <mi>e</mi> - </mtd> - <mtd columnalign="center"> - <mi>f</mi> - </mtd> - </mtr> - <mtr> - <mtd columnalign="center"> - <mi>g</mi> - </mtd> - <mtd columnalign="center"> - <mi>h</mi> - </mtd> - </mtr> - </mtable> - <mo>)</mo> - </mrow> - </mtd> - </mtr> - <mtr> - <mtd columnalign="center"> - <mn>0</mn> - </mtd> - <mtd columnalign="center"> - <mrow> - <mo>(</mo> - <mtable> - <mtr> - <mtd columnalign="center"> - <mi>i</mi> - </mtd> - <mtd columnalign="center"> - <mi>j</mi> - </mtd> - </mtr> - <mtr> - <mtd columnalign="center"> - <mi>k</mi> - </mtd> - <mtd columnalign="center"> - <mi>l</mi> - </mtd> - </mtr> - </mtable> - <mo>)</mo> - </mrow> - </mtd> - </mtr> - </mtable> - <mo>)</mo> - </mrow> - </math> - -</fo:instream-foreign-object> -</fo:block> -</fo:block> - - <fo:block> -An external mathml document. - </fo:block> - - <fo:block> -<fo:external-graphic src="example.mml"/> - </fo:block> - </fo:flow> - </fo:page-sequence> -</fo:root> - diff --git a/examples/mathml/lib/readme.txt b/examples/mathml/lib/readme.txt deleted file mode 100644 index 9166db6f7..000000000 --- a/examples/mathml/lib/readme.txt +++ /dev/null @@ -1 +0,0 @@ -Put jeuclid.jar in this directory! diff --git a/examples/mathml/resources/META-INF/services/org.apache.fop.fo.ElementMapping b/examples/mathml/resources/META-INF/services/org.apache.fop.fo.ElementMapping deleted file mode 100644 index 406a8319a..000000000 --- a/examples/mathml/resources/META-INF/services/org.apache.fop.fo.ElementMapping +++ /dev/null @@ -1,2 +0,0 @@ -org.apache.fop.mathml.MathMLElementMapping - diff --git a/examples/mathml/resources/META-INF/services/org.apache.xmlgraphics.image.loader.spi.ImageLoaderFactory b/examples/mathml/resources/META-INF/services/org.apache.xmlgraphics.image.loader.spi.ImageLoaderFactory deleted file mode 100644 index ab58234d4..000000000 --- a/examples/mathml/resources/META-INF/services/org.apache.xmlgraphics.image.loader.spi.ImageLoaderFactory +++ /dev/null @@ -1 +0,0 @@ -org.apache.fop.mathml.ImageLoaderFactoryMathML
diff --git a/examples/mathml/resources/META-INF/services/org.apache.xmlgraphics.image.loader.spi.ImagePreloader b/examples/mathml/resources/META-INF/services/org.apache.xmlgraphics.image.loader.spi.ImagePreloader deleted file mode 100644 index 870684c8f..000000000 --- a/examples/mathml/resources/META-INF/services/org.apache.xmlgraphics.image.loader.spi.ImagePreloader +++ /dev/null @@ -1 +0,0 @@ -org.apache.fop.mathml.PreloaderMathML
diff --git a/examples/mathml/src/org/apache/fop/mathml/ImageLoaderFactoryMathML.java b/examples/mathml/src/org/apache/fop/mathml/ImageLoaderFactoryMathML.java deleted file mode 100644 index cac43c721..000000000 --- a/examples/mathml/src/org/apache/fop/mathml/ImageLoaderFactoryMathML.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* $Id$ */ - -package org.apache.fop.mathml; - -import org.apache.xmlgraphics.image.loader.ImageFlavor; -import org.apache.xmlgraphics.image.loader.impl.AbstractImageLoaderFactory; -import org.apache.xmlgraphics.image.loader.spi.ImageLoader; - -/** - * Factory class for the ImageLoader for MathML. - */ -public class ImageLoaderFactoryMathML extends AbstractImageLoaderFactory { - - /** MathML MIME type */ - public static final String MIME_MATHML = "text/mathml"; - - private static final ImageFlavor[] FLAVORS = new ImageFlavor[] { - ImageFlavor.GRAPHICS2D}; - - private static final String[] MIMES = new String[] { - MIME_MATHML}; - - /** {@inheritDoc} */ - public String[] getSupportedMIMETypes() { - return MIMES; - } - - /** {@inheritDoc} */ - public ImageFlavor[] getSupportedFlavors(String mime) { - return FLAVORS; - } - - /** {@inheritDoc} */ - public ImageLoader newImageLoader(ImageFlavor targetFlavor) { - return new ImageLoaderMathML(targetFlavor); - } - - /** {@inheritDoc} */ - public int getUsagePenalty(String mime, ImageFlavor flavor) { - return 0; - } - - /** {@inheritDoc} */ - public boolean isAvailable() { - //TODO Refine! - return true; - } - -} diff --git a/examples/mathml/src/org/apache/fop/mathml/ImageLoaderMathML.java b/examples/mathml/src/org/apache/fop/mathml/ImageLoaderMathML.java deleted file mode 100644 index d110ca3dc..000000000 --- a/examples/mathml/src/org/apache/fop/mathml/ImageLoaderMathML.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* $Id$ */ - -package org.apache.fop.mathml; - -import java.io.IOException; -import java.util.Map; - -import org.apache.xmlgraphics.image.loader.Image; -import org.apache.xmlgraphics.image.loader.ImageException; -import org.apache.xmlgraphics.image.loader.ImageFlavor; -import org.apache.xmlgraphics.image.loader.ImageInfo; -import org.apache.xmlgraphics.image.loader.ImageSessionContext; -import org.apache.xmlgraphics.image.loader.impl.AbstractImageLoader; -import org.apache.xmlgraphics.image.loader.impl.ImageGraphics2D; - -/** - * ImageLoader for MathML (using JEuclid). - */ -public class ImageLoaderMathML extends AbstractImageLoader { - - private ImageFlavor targetFlavor; - - /** - * Main constructor. - * @param targetFlavor the target flavor - */ - public ImageLoaderMathML(ImageFlavor targetFlavor) { - if (!(ImageFlavor.GRAPHICS2D.equals(targetFlavor))) { - throw new IllegalArgumentException("Unsupported target ImageFlavor: " + targetFlavor); - } - this.targetFlavor = targetFlavor; - } - - /** {@inheritDoc} */ - public ImageFlavor getTargetFlavor() { - return this.targetFlavor; - } - - /** {@inheritDoc} */ - public Image loadImage(ImageInfo info, Map hints, ImageSessionContext session) - throws ImageException, IOException { - if (!ImageLoaderFactoryMathML.MIME_MATHML.equals(info.getMimeType())) { - throw new IllegalArgumentException("ImageInfo must be from an MathML image"); - } - Image img = info.getOriginalImage(); - if (!(img instanceof ImageGraphics2D)) { - throw new IllegalArgumentException( - "ImageInfo was expected to contain the MathML document as Graphics2D image"); - } - ImageGraphics2D g2dImage = (ImageGraphics2D)img; - return g2dImage; - } - -} diff --git a/examples/mathml/src/org/apache/fop/mathml/MathMLElement.java b/examples/mathml/src/org/apache/fop/mathml/MathMLElement.java deleted file mode 100644 index 9bd326f2b..000000000 --- a/examples/mathml/src/org/apache/fop/mathml/MathMLElement.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* $Id$ */ - -package org.apache.fop.mathml; - -import java.awt.Color; -import java.awt.Dimension; -import java.awt.geom.Point2D; - -import net.sourceforge.jeuclid.DOMMathBuilder; -import net.sourceforge.jeuclid.MathBase; - -import org.w3c.dom.DOMImplementation; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; - -import org.xml.sax.Attributes; -import org.xml.sax.Locator; - -import org.apache.batik.dom.svg.SVGDOMImplementation; -import org.apache.batik.svggen.SVGGraphics2D; - -import org.apache.fop.apps.FOPException; -import org.apache.fop.fo.FONode; -import org.apache.fop.fo.PropertyList; - -/** - * Defines the top-level element for MathML. - */ -public class MathMLElement extends MathMLObj { - - private Document svgDoc = null; - private float width; - private float height; - private boolean converted = false; - - /** - * @see org.apache.fop.fo.FONode#FONode(FONode) - */ - public MathMLElement(FONode parent) { - super(parent); - } - - /** {@inheritDoc} */ - public void processNode(String elementName, - Locator locator, - Attributes attlist, - PropertyList propertyList) throws FOPException { - super.processNode(elementName, locator, attlist, propertyList); - createBasicDocument(); - } - - /** - * Converts the MathML to SVG. - */ - public void convertToSVG() { - try { - if (!converted) { - converted = true; - String fontname = "Helvetica"; - int fontstyle = 0; - //int inlinefontstyle = 0; - int displayfontsize = 12; - int inlinefontsize = 12; - - MathBase base = new MathBase( - (new DOMMathBuilder(doc)).getMathRootElement(), - fontname, fontstyle, inlinefontsize, - displayfontsize); - - base.setDebug(false); - - svgDoc = createSVG(base); - - width = base.getWidth(); - height = base.getHeight(); - - doc = svgDoc; - } - } catch (Throwable t) { - getLogger().error("Could not convert MathML to SVG", t); - width = 0; - height = 0; - } - - } - - /** - * Create the SVG from MathML. - * @param base the root element - * @return the DOM document containing SVG - */ - public static Document createSVG(MathBase base) { - - DOMImplementation impl = SVGDOMImplementation.getDOMImplementation(); - String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI; - Document svgdocument = impl.createDocument(svgNS, "svg", null); - - SVGGraphics2D g = new SVGGraphics2D(svgdocument); - - g.setSVGCanvasSize( - new Dimension(base.getWidth(), base.getHeight())); - - //g.setColor(Color.white); - //g.fillRect(0, 0, base.getWidth(), base.getHeight()); - g.setColor(Color.black); - - base.paint(g); - - //if (antialiasing) - //element.setAttribute("text-rendering", "optimizeLegibility"); - //else - //element.setAttribute("text-rendering", "geometricPrecision"); - - // this should be done in a better way - Element root = g.getRoot(); - svgdocument = impl.createDocument(svgNS, "svg", null); - Node node = svgdocument.importNode(root, true); - ((org.apache.batik.dom.svg.SVGOMDocument) svgdocument). - getRootElement().appendChild(node); - - return svgdocument; - - } - - /** {@inheritDoc} */ - public Document getDOMDocument() { - convertToSVG(); - return doc; - } - - /** {@inheritDoc} */ - public String getNamespaceURI() { - if (svgDoc == null) { - return MathMLElementMapping.NAMESPACE; - } - return "http://www.w3.org/2000/svg"; - } - - /** {@inheritDoc} */ - public Point2D getDimension(Point2D view) { - convertToSVG(); - return new Point2D.Float(width, height); - } -} - diff --git a/examples/mathml/src/org/apache/fop/mathml/MathMLElementMapping.java b/examples/mathml/src/org/apache/fop/mathml/MathMLElementMapping.java deleted file mode 100644 index c9854d1c7..000000000 --- a/examples/mathml/src/org/apache/fop/mathml/MathMLElementMapping.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* $Id$ */ - -package org.apache.fop.mathml; - -import java.util.HashMap; - -import org.w3c.dom.DOMImplementation; - -import org.apache.fop.fo.ElementMapping; -import org.apache.fop.fo.FONode; - -/** - * This class provides the element mapping for FOP. - */ -public class MathMLElementMapping extends ElementMapping { - - /** MathML Namespace */ - public static final String NAMESPACE = "http://www.w3.org/1998/Math/MathML"; - - /** Main constructor. */ - public MathMLElementMapping() { - this.namespaceURI = NAMESPACE; - } - - /** {@inheritDoc} */ - public DOMImplementation getDOMImplementation() { - return getDefaultDOMImplementation(); - } - - /** {@inheritDoc} */ - protected void initialize() { - if (foObjs == null) { - foObjs = new HashMap(); - foObjs.put("math", new ME()); - foObjs.put(DEFAULT, new MathMLMaker()); - } - } - - static class MathMLMaker extends ElementMapping.Maker { - public FONode make(FONode parent) { - return new MathMLObj(parent); - } - } - - static class ME extends ElementMapping.Maker { - public FONode make(FONode parent) { - return new MathMLElement(parent); - } - } - -} diff --git a/examples/mathml/src/org/apache/fop/mathml/MathMLObj.java b/examples/mathml/src/org/apache/fop/mathml/MathMLObj.java deleted file mode 100644 index f2f5317e3..000000000 --- a/examples/mathml/src/org/apache/fop/mathml/MathMLObj.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* $Id$ */ - -package org.apache.fop.mathml; - -// FOP -import org.apache.fop.fo.FONode; -import org.apache.fop.fo.XMLObj; - -/** - * Catch all MathML objects as default element. - */ -public class MathMLObj extends XMLObj { - - /** - * @see org.apache.fop.fo.FONode#FONode(FONode) - */ - public MathMLObj(FONode parent) { - super(parent); - } - - /** {@inheritDoc} */ - public String getNamespaceURI() { - return MathMLElementMapping.NAMESPACE; - } - - /** {@inheritDoc} */ - public String getNormalNamespacePrefix() { - return "mathml"; - } -} - diff --git a/examples/mathml/src/org/apache/fop/mathml/PreloaderMathML.java b/examples/mathml/src/org/apache/fop/mathml/PreloaderMathML.java deleted file mode 100644 index 193ccf6e3..000000000 --- a/examples/mathml/src/org/apache/fop/mathml/PreloaderMathML.java +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* $Id$ */ - -package org.apache.fop.mathml; - -import java.awt.Dimension; -import java.awt.Graphics2D; -import java.awt.geom.Rectangle2D; -import java.io.IOException; -import java.io.InputStream; - -import javax.xml.transform.Source; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.sax.SAXResult; -import javax.xml.transform.stream.StreamSource; - -import net.sourceforge.jeuclid.MathBase; -import net.sourceforge.jeuclid.SAXMathBuilder; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import org.apache.xmlgraphics.image.loader.Image; -import org.apache.xmlgraphics.image.loader.ImageContext; -import org.apache.xmlgraphics.image.loader.ImageInfo; -import org.apache.xmlgraphics.image.loader.ImageSize; -import org.apache.xmlgraphics.image.loader.impl.AbstractImagePreloader; -import org.apache.xmlgraphics.image.loader.impl.ImageGraphics2D; -import org.apache.xmlgraphics.image.loader.util.ImageUtil; -import org.apache.xmlgraphics.java2d.Graphics2DImagePainter; - -import org.apache.fop.util.UnclosableInputStream; - -/** - * Image preloader for MathML images. - */ -public class PreloaderMathML extends AbstractImagePreloader { - - /** Logger instance */ - private static Log log = LogFactory.getLog(PreloaderMathML.class); - - private boolean jeuclidAvailable = true; - - /** {@inheritDoc} */ - public ImageInfo preloadImage(String uri, Source src, ImageContext context) - throws IOException { - if (!ImageUtil.hasInputStream(src)) { - //TODO Remove this and support DOMSource and possibly SAXSource - return null; - } - ImageInfo info = null; - if (jeuclidAvailable) { - try { - Loader loader = new Loader(); - info = loader.getImage(uri, src, context); - } catch (NoClassDefFoundError e) { - jeuclidAvailable = false; - log.warn("JEuclid not in class path", e); - return null; - } - } - if (info != null) { - ImageUtil.closeQuietly(src); //Image is fully read - } - return info; - } - - /** - * This method is put in another class so that the class loader does not - * attempt to load JEuclid related classes when constructing the MathMLPreloader - * class. - */ - class Loader { - - private ImageInfo getImage(String uri, Source src, ImageContext context) { - - InputStream in = new UnclosableInputStream(ImageUtil.needInputStream(src)); - try { - int length = in.available(); - in.mark(length + 1); - - TransformerFactory tFactory = TransformerFactory.newInstance(); - Transformer transformer = tFactory.newTransformer(); - Source source = new StreamSource(in); - SAXMathBuilder mathBuilder = new SAXMathBuilder(); - SAXResult res = new SAXResult(mathBuilder); - transformer.transform(source, res); - - String fontname = "Helvetica"; - int fontstyle = 0; - int displayfontsize = 12; - int inlinefontsize = 12; - - if (mathBuilder.getMathRootElement() == null) { - //not a MathML document - try { - in.reset(); - } catch (IOException ioe) { - log.error("Error while resetting ImageInputStream", ioe); - } - return null; - } - final MathBase base = new MathBase( - mathBuilder.getMathRootElement(), - fontname, fontstyle, inlinefontsize, - displayfontsize); - - ImageInfo info = new ImageInfo(uri, "text/mathml"); - final ImageSize size = new ImageSize(); - size.setSizeInMillipoints( - Math.round(base.getWidth() * 1000), - Math.round(base.getHeight() * 1000)); - //Set the resolution to that of the FOUserAgent - size.setResolution(context.getSourceResolution()); - size.calcPixelsFromSize(); - info.setSize(size); - - Graphics2DImagePainter painter = new Graphics2DImagePainter() { - - public Dimension getImageSize() { - return size.getDimensionMpt(); - } - - public void paint(Graphics2D g2d, Rectangle2D area) { - base.paint(g2d); - } - - }; - - //The whole image had to be loaded for this, so keep it - Image image = new ImageGraphics2D(info, painter); - info.getCustomObjects().put(ImageInfo.ORIGINAL_IMAGE, image); - - return info; - } catch (NoClassDefFoundError ncdfe) { - try { - in.reset(); - } catch (IOException ioe) { - // we're more interested in the original exception - } - jeuclidAvailable = false; - log.warn("JEuclid not in class path", ncdfe); - return null; - } catch (IOException e) { - // If the MathML is invalid then it throws an IOException - // so there is no way of knowing if it is an svg document - - log.debug("Error while trying to load stream as an MathML file: " - + e.getMessage()); - // assuming any exception means this document is not svg - // or could not be loaded for some reason - try { - in.reset(); - } catch (IOException ioe) { - // we're more interested in the original exception - } - return null; - } catch (TransformerException e) { - try { - in.reset(); - } catch (IOException ioe) { - // we're more interested in the original exception - } - log.debug("Error while trying to parsing a MathML file: " - + e.getMessage()); - return null; - } - } - } - -} |