hillion 01/07/30 05:36:56 Modified: sources/org/apache/batik/dom/svg DefaultUnitProcessorContext.java SVGOMFECompositeElement.java SVGOMLength.java Added: sources/org/apache/batik/dom/svg UnitProcessor.java Removed: sources/org/apache/batik/util UnitProcessor.java Log: moved UnitProcessor from org.apache.batik.util to org.apache.batik.dom.svg. Revision Changes Path 1.9 +1 -2 xml-batik/sources/org/apache/batik/dom/svg/DefaultUnitProcessorContext.java Index: DefaultUnitProcessorContext.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/svg/DefaultUnitProcessorContext.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- DefaultUnitProcessorContext.java 2001/03/13 16:28:44 1.8 +++ DefaultUnitProcessorContext.java 2001/07/30 12:36:56 1.9 @@ -12,7 +12,6 @@ import org.apache.batik.css.HiddenChildElementSupport; import org.apache.batik.parser.LengthParser; -import org.apache.batik.util.UnitProcessor; import org.apache.batik.util.SVGConstants; import org.w3c.dom.css.CSSPrimitiveValue; @@ -24,7 +23,7 @@ * The default unit processor context. * * @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a> - * @version $Id: DefaultUnitProcessorContext.java,v 1.8 2001/03/13 16:28:44 hillion Exp $ + * @version $Id: DefaultUnitProcessorContext.java,v 1.9 2001/07/30 12:36:56 hillion Exp $ */ public class DefaultUnitProcessorContext implements UnitProcessor.Context, 1.8 +2 -137 xml-batik/sources/org/apache/batik/dom/svg/SVGOMFECompositeElement.java Index: SVGOMFECompositeElement.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/svg/SVGOMFECompositeElement.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- SVGOMFECompositeElement.java 2001/07/24 17:56:52 1.7 +++ SVGOMFECompositeElement.java 2001/07/30 12:36:56 1.8 @@ -32,7 +32,7 @@ * This class implements {@link org.w3c.dom.svg.SVGFECompositeElement}. * * @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a> - * @version $Id: SVGOMFECompositeElement.java,v 1.7 2001/07/24 17:56:52 hillion Exp $ + * @version $Id: SVGOMFECompositeElement.java,v 1.8 2001/07/30 12:36:56 hillion Exp $ */ public class SVGOMFECompositeElement extends SVGOMFilterPrimitiveStandardAttributes @@ -307,142 +307,7 @@ getNonCSSPresentationalHints(this); } - // XLink support ////////////////////////////////////////////////////// - - /** - * The SVGURIReference support. - */ - protected SVGURIReferenceSupport uriReferenceSupport; - - /** - * Returns uriReferenceSupport different from null. - */ - protected final SVGURIReferenceSupport getSVGURIReferenceSupport() { - if (uriReferenceSupport == null) { - uriReferenceSupport = new SVGURIReferenceSupport(); - } - return uriReferenceSupport; - } - - /** - * <b>DOM</b>: Implements {@link - * org.w3c.dom.svg.SVGURIReference#getHref()}. - */ - public SVGAnimatedString getHref() { - return getSVGURIReferenceSupport().getHref(this); - } - - /** - * <b>DOM</b>: Implements {@link - * org.w3c.dom.svg.SVGURIReference#getXlinkType()}. - */ - public String getXlinkType() { - return XLinkSupport.getXLinkType(this); - } - - /** - * <b>DOM</b>: Implements {@link - * org.w3c.dom.svg.SVGURIReference#setXlinkType(String)}. - */ - public void setXlinkType(String str) { - XLinkSupport.setXLinkType(this, str); - } - - /** - * <b>DOM</b>: Implements {@link - * org.w3c.dom.svg.SVGURIReference#getXlinkRole()}. - */ - public String getXlinkRole() { - return XLinkSupport.getXLinkRole(this); - } - - /** - * <b>DOM</b>: Implements {@link - * org.w3c.dom.svg.SVGURIReference#setXlinkRole(String)}. - */ - public void setXlinkRole(String str) { - XLinkSupport.setXLinkRole(this, str); - } - - /** - * <b>DOM</b>: Implements {@link - * org.w3c.dom.svg.SVGURIReference#getXlinkArcRole()}. - */ - public String getXlinkArcRole() { - return XLinkSupport.getXLinkArcRole(this); - } - - /** - * <b>DOM</b>: Implements {@link - * org.w3c.dom.svg.SVGURIReference#setXlinkArcRole(String)}. - */ - public void setXlinkArcRole(String str) { - XLinkSupport.setXLinkArcRole(this, str); - } - - /** - * <b>DOM</b>: Implements {@link - * org.w3c.dom.svg.SVGURIReference#getXlinkTitle()}. - */ - public String getXlinkTitle() { - return XLinkSupport.getXLinkTitle(this); - } - - /** - * <b>DOM</b>: Implements {@link - * org.w3c.dom.svg.SVGURIReference#setXlinkTitle(String)}. - */ - public void setXlinkTitle(String str) { - XLinkSupport.setXLinkTitle(this, str); - } - - /** - * <b>DOM</b>: Implements {@link - * org.w3c.dom.svg.SVGURIReference#getXlinkShow()}. - */ - public String getXlinkShow() { - return XLinkSupport.getXLinkShow(this); - } - - /** - * <b>DOM</b>: Implements {@link - * org.w3c.dom.svg.SVGURIReference#setXlinkShow(String)}. - */ - public void setXlinkShow(String str) { - XLinkSupport.setXLinkShow(this, str); - } - - /** - * <b>DOM</b>: Implements {@link - * org.w3c.dom.svg.SVGURIReference#getXlinkActuate()}. - */ - public String getXlinkActuate() { - return XLinkSupport.getXLinkActuate(this); - } - - /** - * <b>DOM</b>: Implements {@link - * org.w3c.dom.svg.SVGURIReference#setXlinkActuate(String)}. - */ - public void setXlinkActuate(String str) { - XLinkSupport.setXLinkActuate(this, str); - } - - /** - * Returns the value of the 'xlink:href' attribute of the given element. - */ - public String getXlinkHref() { - return XLinkSupport.getXLinkHref(this); - } - - /** - * Sets the value of the 'xlink:href' attribute of the given element. - */ - public void setXlinkHref(String str) { - XLinkSupport.setXLinkHref(this, str); - } - - // SVGStylable support /////////////////////////////////////////////////// + // SVGStylable support /////////////////////////////////////////////////// /** * The stylable support. 1.7 +1 -2 xml-batik/sources/org/apache/batik/dom/svg/SVGOMLength.java Index: SVGOMLength.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/svg/SVGOMLength.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- SVGOMLength.java 2001/01/03 14:17:39 1.6 +++ SVGOMLength.java 2001/07/30 12:36:56 1.7 @@ -13,7 +13,6 @@ import org.apache.batik.parser.LengthHandler; import org.apache.batik.parser.LengthParser; import org.apache.batik.parser.ParseException; -import org.apache.batik.util.UnitProcessor; import org.w3c.dom.Attr; import org.w3c.dom.DOMException; import org.w3c.dom.svg.SVGElement; @@ -23,7 +22,7 @@ * This class implements {@link org.w3c.dom.svg.SVGLength}. * * @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a> - * @version $Id: SVGOMLength.java,v 1.6 2001/01/03 14:17:39 hillion Exp $ + * @version $Id: SVGOMLength.java,v 1.7 2001/07/30 12:36:56 hillion Exp $ */ public class SVGOMLength implements SVGLength, 1.1 xml-batik/sources/org/apache/batik/dom/svg/UnitProcessor.java Index: UnitProcessor.java =================================================================== /***************************************************************************** * 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. * *****************************************************************************/ package org.apache.batik.dom.svg; import java.awt.geom.AffineTransform; import java.awt.geom.NoninvertibleTransformException; import java.awt.geom.Point2D; import java.io.Reader; import java.io.StringReader; import org.apache.batik.css.HiddenChildElementSupport; import org.apache.batik.parser.AWTTransformProducer; import org.apache.batik.parser.LengthHandler; import org.apache.batik.parser.LengthParser; import org.apache.batik.parser.ParseException; import org.apache.batik.util.CSSConstants; import org.apache.batik.util.resources.Messages; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.css.CSSPrimitiveValue; import org.w3c.dom.css.CSSStyleDeclaration; import org.w3c.dom.svg.SVGElement; import org.w3c.dom.svg.SVGLength; import org.w3c.dom.svg.SVGSVGElement; import org.w3c.dom.svg.SVGTransformable; /** * This class contains utility methods for processing the SVG and CSS * units. * * @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a> * @version $Id: UnitProcessor.java,v 1.1 2001/07/30 12:36:56 hillion Exp $ */ public abstract class UnitProcessor { /** * This constant represents horizontal lengths. */ public final static short HORIZONTAL_LENGTH = 2; /** * This constant represents vertical lengths. */ public final static short VERTICAL_LENGTH = 1; /** * This constant represents other lengths. */ public final static short OTHER_LENGTH = 0; /** * This class does not need to be instantiated. */ protected UnitProcessor() { } /** * Converts a SVG length value to user space. * @param t the unit type like specified in the CSSPrimitiveType interface. * @param v the length value. * @param e the element. * @param d HORIZONTAL_LENGTH, VERTICAL_LENGTH or OTHER_LENGTH. * @param c The context. * @exception RuntimeException If an invalid unit type is specified. */ public static float cssToUserSpace(short t, float v, SVGElement e, short d, Context c) throws RuntimeException { if (t == CSSPrimitiveValue.CSS_NUMBER) { return v; } float f = c.getPixelToMM(); switch (t) { case CSSPrimitiveValue.CSS_PX: return v; case CSSPrimitiveValue.CSS_MM: return (v / f); case CSSPrimitiveValue.CSS_CM: return (v * 10 / f); case CSSPrimitiveValue.CSS_IN: return (v * 25.4f / f); case CSSPrimitiveValue.CSS_PT: return (v * 25.4f / (72 * f)); case CSSPrimitiveValue.CSS_PC: return (v * 25.4f / (6 * f)); case CSSPrimitiveValue.CSS_EMS: return emsToPixels(v, e, d, c); case CSSPrimitiveValue.CSS_EXS: return exsToPixels(v, e, d, c); case CSSPrimitiveValue.CSS_PERCENTAGE: return percentagesToPixels(v, e, d, c); default: throw new IllegalArgumentException (Messages.formatMessage("invalid.css.unit", new Object[] { new Integer(t) })); } } /** * Converts a SVG length value to screen pixels. * @param t the unit type like specified in the SVGLength interface. * @param v the length value. * @param e the element. * @param d HORIZONTAL_LENGTH, VERTICAL_LENGTH or OTHER_LENGTH. * @param c The context. * @exception RuntimeException If an invalid unit type is specified. */ public static float userSpaceToSVG(short t, float v, SVGElement e, short d, Context c) throws RuntimeException { if (t == SVGLength.SVG_LENGTHTYPE_NUMBER) { return v; } float f = c.getPixelToMM(); switch (t) { case SVGLength.SVG_LENGTHTYPE_PX: return v; case SVGLength.SVG_LENGTHTYPE_MM: return (v * f); case SVGLength.SVG_LENGTHTYPE_CM: return (v * f / 10); case SVGLength.SVG_LENGTHTYPE_IN: return (v * f / 25.4f); case SVGLength.SVG_LENGTHTYPE_PT: return (v * (72 * f) / 25.4f); case SVGLength.SVG_LENGTHTYPE_PC: return (v * (6 * f) / 25.4f); case SVGLength.SVG_LENGTHTYPE_EMS: return pixelsToEms(v, e, d, c); case SVGLength.SVG_LENGTHTYPE_EXS: return pixelsToExs(v, e, d, c); case SVGLength.SVG_LENGTHTYPE_PERCENTAGE: return pixelsToPercentages(v, e, d, c); default: throw new IllegalArgumentException (Messages.formatMessage("invalid.svg.unit", new Object[] { new Integer(t) })); } } /** * Converts a SVG length value to screen pixels. * @param t the unit type like specified in the SVGLength interface. * @param v the length value. * @param e the element. * @param d HORIZONTAL_LENGTH, VERTICAL_LENGTH or OTHER_LENGTH. * @param c The context. * @exception RuntimeException If an invalid unit type is specified. */ public static float svgToUserSpace(short t, float v, SVGElement e, short d, Context c) throws RuntimeException { if (t == SVGLength.SVG_LENGTHTYPE_NUMBER) { return v; } float f = c.getPixelToMM(); switch (t) { case SVGLength.SVG_LENGTHTYPE_PX: return v; case SVGLength.SVG_LENGTHTYPE_MM: return (v / f); case SVGLength.SVG_LENGTHTYPE_CM: return (v * 10 / f); case SVGLength.SVG_LENGTHTYPE_IN: return (v * 25.4f / f); case SVGLength.SVG_LENGTHTYPE_PT: return (v * 25.4f / (72 * f)); case SVGLength.SVG_LENGTHTYPE_PC: return (v * 25.4f / (6 * f)); case SVGLength.SVG_LENGTHTYPE_EMS: return emsToPixels(v, e, d, c); case SVGLength.SVG_LENGTHTYPE_EXS: return exsToPixels(v, e, d, c); case SVGLength.SVG_LENGTHTYPE_PERCENTAGE: return percentagesToPixels(v, e, d, c); default: throw new IllegalArgumentException (Messages.formatMessage("invalid.svg.unit", new Object[] { new Integer(t) })); } /* if (t == SVGLength.SVG_LENGTHTYPE_NUMBER) { return v; } float f = c.getPixelToMM(); switch (t) { case SVGLength.SVG_LENGTHTYPE_PX: return pixelsToNumber(v, e, d, c); case SVGLength.SVG_LENGTHTYPE_MM: return pixelsToNumber(v / f, e, d, c); case SVGLength.SVG_LENGTHTYPE_CM: return pixelsToNumber(v * 10 / f, e, d, c); case SVGLength.SVG_LENGTHTYPE_IN: return pixelsToNumber(v * 25.4f / f, e, d, c); case SVGLength.SVG_LENGTHTYPE_PT: return pixelsToNumber(v * 25.4f / (72 * f), e, d, c); case SVGLength.SVG_LENGTHTYPE_PC: return pixelsToNumber(v * 25.4f / (6 * f), e, d, c); case SVGLength.SVG_LENGTHTYPE_EMS: return pixelsToNumber(emsToPixels(v, e, d, c), e, d, c); case SVGLength.SVG_LENGTHTYPE_EXS: return pixelsToNumber(exsToPixels(v, e, d, c), e, d, c); case SVGLength.SVG_LENGTHTYPE_PERCENTAGE: return pixelsToNumber(percentagesToPixels(v, e, d, c), e, d, c); default: throw new RuntimeException (formatMessage("invalid.svg.unit", new Object[] { new Integer(t) })); } */ } /** * Converts a pixels units to user space units. * @param v the length value. * @param e the element. * @param d HORIZONTAL_LENGTH, VERTICAL_LENGTH or OTHER_LENGTH. * @param c The context. * @exception RuntimeException If an invalid unit type is specified. */ /* protected static float pixelsToNumber(float v, SVGElement e, short d, Context c) { // Compute the current transformation matrix (CTM). AffineTransform ctm = null; for (Element t = e; t != null; t = HiddenChildElementSupport.getParentElement(t)) { if (t instanceof SVGTransformable) { if (ctm == null) { ctm = new AffineTransform(); } String s = t.getAttributeNS(null, "transform"); Reader r = new StringReader(s); ParserFactory pf = c.getParserFactory(); AffineTransform at; at = AWTTransformProducer.createAffineTransform(r, pf); ctm.preConcatenate(at); } else if (t == e) { break; } else if (t instanceof SVGSVGElement) { SVGSVGElement elt = (SVGSVGElement)t; // !!! Use a parser for SVGLength SVGLength len = elt.getWidth().getBaseVal(); float w = svgToUserSpace(len.getUnitType(), len.getValueInSpecifiedUnits(), elt, HORIZONTAL_LENGTH, c); len = elt.getHeight().getBaseVal(); float h = svgToUserSpace(len.getUnitType(), len.getValueInSpecifiedUnits(), elt, VERTICAL_LENGTH, c); AffineTransform at; at = SVGUtilities.getPreserveAspectRatioTransform ((SVGElement)t, w, h, c.getParserFactory()); ctm.preConcatenate(at); break; } } if (ctm == null) { return v; } try { ctm = ctm.createInverse(); } catch (NoninvertibleTransformException ex) { throw new RuntimeException(ex.getMessage()); } Point2D pt1 = new Point2D.Float(); Point2D pt2; if (d == OTHER_LENGTH) { SVGSVGElement svg = c.getViewport(); if (svg == null) { return v; } // !!! Use a parser for SVGLength SVGLength len = svg.getWidth().getBaseVal(); double dx = svgToUserSpace(len.getUnitType(), len.getValueInSpecifiedUnits(), svg, HORIZONTAL_LENGTH, c); len = svg.getHeight().getBaseVal(); double dy = svgToUserSpace(len.getUnitType(), len.getValueInSpecifiedUnits(), svg, VERTICAL_LENGTH, c); double vppx = Math.sqrt(dx * dx + dy * dy); pt2 = new Point2D.Float((float)dx, (float)dy); pt1 = ctm.transform(pt1, pt1); pt2 = ctm.transform(pt2, pt2); dx = pt2.getX() - pt1.getX(); dy = pt2.getY() - pt1.getY(); double vpduser = Math.sqrt(dx * dx + dy * dy); return (float)(v * vpduser / vppx); } else { pt2 = (d == HORIZONTAL_LENGTH) ? new Point2D.Float(v, 0) : new Point2D.Float(0, v); pt1 = ctm.transform(pt1, pt1); pt2 = ctm.transform(pt2, pt2); double dx = pt2.getX() - pt1.getX(); double dy = pt2.getY() - pt1.getY(); int sgn = (v < 0) ? -1 : 1; return (float)(sgn * Math.sqrt(dx * dx + dy * dy)); } } */ /** * Converts pixels units to ems units. * @param v the length value. * @param e the element. * @param d HORIZONTAL_LENGTH, VERTICAL_LENGTH or OTHER_LENGTH. * @param c The context. * @exception RuntimeException If an invalid unit type is specified. */ protected static float pixelsToEms(float v, SVGElement e, short d, Context c) { if (e == null) { throw new RuntimeException (Messages.formatMessage("element.needed", null)); } CSSPrimitiveValue val = c.getFontSize(e); short type = val.getPrimitiveType(); return v / cssToUserSpace (type, val.getFloatValue(type), (SVGElement)HiddenChildElementSupport.getParentElement(e), d, c); } /** * Converts ems units to pixels units. * @param v the length value. * @param e the element. * @param d HORIZONTAL_LENGTH, VERTICAL_LENGTH or OTHER_LENGTH. * @param c The context. * @exception RuntimeException If an invalid unit type is specified. */ protected static float emsToPixels(float v, SVGElement e, short d, Context c) { if (e == null) { throw new RuntimeException (Messages.formatMessage("element.needed", null)); } CSSPrimitiveValue val = c.getFontSize(e); short type = val.getPrimitiveType(); return v * cssToUserSpace (type, val.getFloatValue(type), (SVGElement)HiddenChildElementSupport.getParentElement(e), d, c); } /** * Converts pixels units to exs units. * @param v the length value. * @param e the element. * @param d HORIZONTAL_LENGTH, VERTICAL_LENGTH or OTHER_LENGTH. * @param c The context. * @exception RuntimeException If an invalid unit type is specified. */ protected static float pixelsToExs(float v, SVGElement e, short d, Context c) { if (e == null) { throw new RuntimeException (Messages.formatMessage("element.needed", null)); } CSSPrimitiveValue val = c.getFontSize(e); short type = val.getPrimitiveType(); float fs = cssToUserSpace (type, val.getFloatValue(type), (SVGElement)HiddenChildElementSupport.getParentElement(e), d, c); float xh = c.getXHeight(e); return v / xh / fs; } /** * Converts exs units to pixels units. * @param v the length value. * @param e the element. * @param d HORIZONTAL_LENGTH, VERTICAL_LENGTH or OTHER_LENGTH. * @param c The context. * @exception RuntimeException If an invalid unit type is specified. */ protected static float exsToPixels(float v, SVGElement e, short d, Context c) { if (e == null) { throw new RuntimeException (Messages.formatMessage("element.needed", null)); } CSSPrimitiveValue val = c.getFontSize(e); short type = val.getPrimitiveType(); float fs = cssToUserSpace (type, val.getFloatValue(type), (SVGElement)HiddenChildElementSupport.getParentElement(e), d, c); float xh = c.getXHeight(e); return v * xh * fs; } /** * Converts percentages units to pixels units. * @param v the length value. * @param e the element. * @param d HORIZONTAL_LENGTH, VERTICAL_LENGTH or OTHER_LENGTH. * @param c The context. * @exception RuntimeException If an invalid unit type is specified. */ protected static float pixelsToPercentages(float v, SVGElement e, short d, Context c) { if (e == null) { throw new RuntimeException (Messages.formatMessage("element.needed", null)); } if (d == HORIZONTAL_LENGTH) { float w = c.getViewportWidth(); return v * 100 / w; } else if (d == VERTICAL_LENGTH) { float h = c.getViewportHeight(); return v * 100 / h; } else { double w = c.getViewportWidth(); double h = c.getViewportHeight(); double vpp = Math.sqrt(w * w + h * h) / Math.sqrt(2); return (float)(v * 100 / vpp); } } /** * Converts percentages units to pixels units. * @param v the length value. * @param e the element. * @param d HORIZONTAL_LENGTH, VERTICAL_LENGTH or OTHER_LENGTH. * @param c The context. * @exception RuntimeException If an invalid unit type is specified. */ protected static float percentagesToPixels(float v, SVGElement e, short d, Context c) { if (e == null) { throw new RuntimeException (Messages.formatMessage("element.needed", null)); } if (d == HORIZONTAL_LENGTH) { float w = c.getViewportWidth(); return w * v / 100; } else if (d == VERTICAL_LENGTH) { float h = c.getViewportHeight(); return h * v / 100; } else { double w = c.getViewportWidth(); double h = c.getViewportHeight(); double vpp = Math.sqrt(w * w + h * h) / Math.sqrt(2); return (float)(vpp * v / 100); } } /** * An utility method to implement Context.getFontSize(SVGElement e). */ public static CSSPrimitiveValue getFontSize(SVGElement e, CSSStyleDeclaration d) { return(CSSPrimitiveValue)d.getPropertyCSSValue (CSSConstants.CSS_FONT_SIZE_PROPERTY); } /** * Converts a SVG length value to screen pixels. * @param value the length value * @param e the element. * @param d HORIZONTAL_LENGTH, VERTICAL_LENGTH or OTHER_LENGTH. * @param c The context. * @exception RuntimeException If an invalid unit type is specified. */ public static float svgToUserSpace(String value, SVGElement e, short d, Context c) { if (value.length() == 0) { return 0; } LengthParser p = new LengthParser(); UnitResolver ur = new UnitResolver(); p.setLengthHandler(ur); p.parse(new StringReader(value)); return svgToUserSpace(ur.unit, ur.value, e, d, c); } /** * A simple class that can convert units. */ public static class UnitResolver implements LengthHandler { /** The length value. */ public float value; /** The length type. */ public short unit = SVGLength.SVG_LENGTHTYPE_NUMBER; /** * Implements {@link LengthHandler#startLength()}. */ public void startLength() throws ParseException { } /** * Implements {@link LengthHandler#lengthValue(float)}. */ public void lengthValue(float v) throws ParseException { this.value = v; } /** * Implements {@link LengthHandler#em()}. */ public void em() throws ParseException { this.unit = SVGLength.SVG_LENGTHTYPE_EMS; } /** * Implements {@link LengthHandler#ex()}. */ public void ex() throws ParseException { this.unit = SVGLength.SVG_LENGTHTYPE_EXS; } /** * Implements {@link LengthHandler#in()}. */ public void in() throws ParseException { this.unit = SVGLength.SVG_LENGTHTYPE_IN; } /** * Implements {@link LengthHandler#cm()}. */ public void cm() throws ParseException { this.unit = SVGLength.SVG_LENGTHTYPE_CM; } /** * Implements {@link LengthHandler#mm()}. */ public void mm() throws ParseException { this.unit = SVGLength.SVG_LENGTHTYPE_MM; } /** * Implements {@link LengthHandler#pc()}. */ public void pc() throws ParseException { this.unit = SVGLength.SVG_LENGTHTYPE_PC; } /** * Implements {@link LengthHandler#pt()}. */ public void pt() throws ParseException { this.unit = SVGLength.SVG_LENGTHTYPE_PT; } /** * Implements {@link LengthHandler#px()}. */ public void px() throws ParseException { this.unit = SVGLength.SVG_LENGTHTYPE_PX; } /** * Implements {@link LengthHandler#percentage()}. */ public void percentage() throws ParseException { this.unit = SVGLength.SVG_LENGTHTYPE_PERCENTAGE; } /** * Implements {@link LengthHandler#endLength()}. */ public void endLength() throws ParseException { } } /** * Holds the informations needed to compute the units. */ public interface Context { /** * Returns the pixel to mm factor. */ float getPixelToMM(); /** * Returns the font-size medium value in pt. */ float getMediumFontSize(); /** * Returns the font-size value. */ CSSPrimitiveValue getFontSize(SVGElement e); /** * Returns the x-height value. */ float getXHeight(SVGElement e); /** * Returns the viewport width used to compute units. */ float getViewportWidth(); /** * Returns the viewport height used to compute units. */ float getViewportHeight(); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]