hillion 02/05/07 07:28:13 Modified: sources/org/apache/batik/dom/svg AbstractSVGAnimatedLength.java Log: Fixed SVGLength.setXXX() methods. Revision Changes Path 1.2 +31 -4 xml-batik/sources/org/apache/batik/dom/svg/AbstractSVGAnimatedLength.java Index: AbstractSVGAnimatedLength.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/svg/AbstractSVGAnimatedLength.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- AbstractSVGAnimatedLength.java 15 Apr 2002 10:16:12 -0000 1.1 +++ AbstractSVGAnimatedLength.java 7 May 2002 14:28:13 -0000 1.2 @@ -25,7 +25,7 @@ * SVGAnimatedLength} interface. * * @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a> - * @version $Id: AbstractSVGAnimatedLength.java,v 1.1 2002/04/15 10:16:12 hillion Exp $ + * @version $Id: AbstractSVGAnimatedLength.java,v 1.2 2002/05/07 14:28:13 hillion Exp $ */ public abstract class AbstractSVGAnimatedLength implements SVGAnimatedLength, @@ -50,6 +50,13 @@ UnitProcessor.OTHER_LENGTH; /** + * The unit string representations. + */ + protected final static String[] UNITS = { + "", "", "%", "em", "ex", "px", "cm", "mm", "in", "pt", "pc" + }; + + /** * The associated element. */ protected AbstractElement element; @@ -75,6 +82,11 @@ protected BaseSVGLength baseVal; /** + * Whether the value is changing. + */ + protected boolean changing; + + /** * Creates a new SVGAnimatedLength. * @param elt The associated element. * @param ns The attribute's namespace URI. @@ -118,7 +130,7 @@ * Called when an Attr node has been added. */ public void attrAdded(Attr node, String newv) { - if (baseVal != null) { + if (!changing && baseVal != null) { baseVal.invalidate(); } } @@ -127,7 +139,7 @@ * Called when an Attr node has been modified. */ public void attrModified(Attr node, String oldv, String newv) { - if (baseVal != null) { + if (!changing && baseVal != null) { baseVal.invalidate(); } } @@ -136,7 +148,7 @@ * Called when an Attr node has been removed. */ public void attrRemoved(Attr node, String oldv) { - if (baseVal != null) { + if (!changing && baseVal != null) { baseVal.invalidate(); } } @@ -204,6 +216,7 @@ revalidate(); this.value = UnitProcessor.userSpaceToSVG(value, unitType, direction, context); + resetAttribute(); } /** @@ -221,6 +234,7 @@ public void setValueInSpecifiedUnits(float value) throws DOMException { revalidate(); this.value = value; + resetAttribute(); } /** @@ -248,6 +262,7 @@ public void newValueSpecifiedUnits(short unit, float value) { unitType = unit; this.value = value; + resetAttribute(); } /** @@ -258,6 +273,18 @@ float v = getValue(); unitType = unit; setValue(v); + } + + /** + * Resets the value of the associated attribute. + */ + protected void resetAttribute() { + try { + changing = true; + setValueAsString(value + UNITS[unitType]); + } finally { + changing = false; + } } /**
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]