hillion 2002/08/14 07:12:22
Modified: sources/org/apache/batik/apps/svgbrowser
JSVGViewerFrame.java
sources/org/apache/batik/css/engine CSSEngine.java
sources/org/apache/batik/css/engine/value/css2
FontSizeManager.java
sources/org/apache/batik/css/engine/value/svg
SVGColorManager.java SVGPaintManager.java
StrokeDasharrayManager.java
sources/org/apache/batik/dom AbstractAttr.java
AbstractDocument.java AbstractDocumentFragment.java
AbstractElement.java AbstractEntity.java
AbstractEntityReference.java AbstractNode.java
AbstractParentNode.java
sources/org/apache/batik/dom/svg SVGOMSVGElement.java
test-resources/org/apache/batik/css/dom unitTesting.xml
Added: test-resources/org/apache/batik/css/dom bug11670.svg
Log:
- fixed bugs #11670, #11497and #9965
Revision Changes Path
1.85 +2 -2
xml-batik/sources/org/apache/batik/apps/svgbrowser/JSVGViewerFrame.java
Index: JSVGViewerFrame.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/apps/svgbrowser/JSVGViewerFrame.java,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -r1.84 -r1.85
--- JSVGViewerFrame.java 22 Jul 2002 08:28:29 -0000 1.84
+++ JSVGViewerFrame.java 14 Aug 2002 14:12:21 -0000 1.85
@@ -2242,7 +2242,7 @@
* Returns the medium font size.
*/
public float getMediumFontSize() {
- // <!> FIXME: Should that 72 be 96?
+ // 9pt (72pt == 1in)
return 9f * 25.4f / (72f * getPixelUnitToMillimeter());
}
1.17 +17 -4 xml-batik/sources/org/apache/batik/css/engine/CSSEngine.java
Index: CSSEngine.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/css/engine/CSSEngine.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- CSSEngine.java 13 Jun 2002 11:19:38 -0000 1.16
+++ CSSEngine.java 14 Aug 2002 14:12:21 -0000 1.17
@@ -1052,7 +1052,6 @@
ImportRule ir = (ImportRule)r;
parseStyleSheet(ir, ir.getURI());
}
-
}
/**
@@ -1068,7 +1067,21 @@
short dorg = dest.getOrigin(idx);
boolean dimp = dest.isImportant(idx);
- if (dval == null || dorg != StyleMap.USER_ORIGIN || !dimp) {
+ boolean cond = dval == null;
+ if (!cond) {
+ switch (dorg) {
+ case StyleMap.USER_ORIGIN:
+ cond = !dimp;
+ break;
+ case StyleMap.AUTHOR_ORIGIN:
+ cond = !dimp || imp;
+ break;
+ default:
+ cond = true;
+ }
+ }
+
+ if (cond) {
dest.putValue(idx, sval);
dest.putImportant(idx, imp);
dest.putOrigin(idx, origin);
@@ -1704,7 +1717,7 @@
for (int i = getNumberOfProperties() - 1; i >= 0; --i) {
if (updated[i]) {
props[count++] = i;
- }
+ }
}
firePropertiesChangedEvent(elt, props);
1.3 +1 -2
xml-batik/sources/org/apache/batik/css/engine/value/css2/FontSizeManager.java
Index: FontSizeManager.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/css/engine/value/css2/FontSizeManager.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- FontSizeManager.java 5 Jun 2002 21:14:47 -0000 1.2
+++ FontSizeManager.java 14 Aug 2002 14:12:21 -0000 1.3
@@ -155,7 +155,6 @@
case CSSPrimitiveValue.CSS_PT:
ctx = engine.getCSSContext();
v = value.getFloatValue();
- // <!> FIXME should that 72 be 96?
return new FloatValue(CSSPrimitiveValue.CSS_NUMBER,
v * 25.4f /
(72f * ctx.getPixelUnitToMillimeter()));
1.2 +2 -3
xml-batik/sources/org/apache/batik/css/engine/value/svg/SVGColorManager.java
Index: SVGColorManager.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/css/engine/value/svg/SVGColorManager.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SVGColorManager.java 18 Mar 2002 10:28:23 -0000 1.1
+++ SVGColorManager.java 14 Aug 2002 14:12:21 -0000 1.2
@@ -123,8 +123,7 @@
}
lu = lu.getNextLexicalUnit();
if (lu == null) {
- throw createInvalidLexicalUnitDOMException
- (lu.getLexicalUnitType());
+ throw createInvalidLexicalUnitDOMException((short)-1);
}
icc.append(getColorValue(lu));
lu = lu.getNextLexicalUnit();
1.2 +3 -2
xml-batik/sources/org/apache/batik/css/engine/value/svg/SVGPaintManager.java
Index: SVGPaintManager.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/css/engine/value/svg/SVGPaintManager.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SVGPaintManager.java 18 Mar 2002 10:28:23 -0000 1.1
+++ SVGPaintManager.java 14 Aug 2002 14:12:22 -0000 1.2
@@ -94,8 +94,9 @@
for (int i = 0; i < lv.getLength(); i++) {
result.append(lv.item(i));
}
+ } else {
+ result.append(v);
}
- result.append(v);
return result;
}
1.2 +40 -22
xml-batik/sources/org/apache/batik/css/engine/value/svg/StrokeDasharrayManager.java
Index: StrokeDasharrayManager.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/css/engine/value/svg/StrokeDasharrayManager.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- StrokeDasharrayManager.java 18 Mar 2002 10:28:23 -0000 1.1
+++ StrokeDasharrayManager.java 14 Aug 2002 14:12:22 -0000 1.2
@@ -10,10 +10,13 @@
import org.apache.batik.util.CSSConstants;
+import org.apache.batik.css.engine.CSSContext;
import org.apache.batik.css.engine.CSSEngine;
+import org.apache.batik.css.engine.CSSStylableElement;
+import org.apache.batik.css.engine.StyleMap;
-import org.apache.batik.css.engine.value.AbstractValueManager;
import org.apache.batik.css.engine.value.FloatValue;
+import org.apache.batik.css.engine.value.LengthManager;
import org.apache.batik.css.engine.value.ListValue;
import org.apache.batik.css.engine.value.Value;
import org.apache.batik.css.engine.value.ValueManager;
@@ -22,6 +25,7 @@
import org.w3c.dom.DOMException;
import org.w3c.dom.css.CSSPrimitiveValue;
+import org.w3c.dom.css.CSSValue;
/**
* This class provides a factory for the 'stroke-dasharray' property values.
@@ -29,7 +33,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a>
* @version $Id$
*/
-public class StrokeDasharrayManager extends AbstractValueManager {
+public class StrokeDasharrayManager extends LengthManager {
/**
* Implements {@link ValueManager#isInheritedProperty()}.
@@ -57,8 +61,6 @@
*/
public Value createValue(LexicalUnit lu, CSSEngine engine)
throws DOMException {
- // !!! TODO: support lengths.
-
switch (lu.getLexicalUnitType()) {
case LexicalUnit.SAC_INHERIT:
return SVGValueConstants.INHERIT_VALUE;
@@ -73,23 +75,7 @@
default:
ListValue lv = new ListValue(' ');
do {
- Value v;
- switch (lu.getLexicalUnitType()) {
- case LexicalUnit.SAC_INTEGER:
- v = new FloatValue(CSSPrimitiveValue.CSS_NUMBER,
- lu.getIntegerValue());
- break;
-
- case LexicalUnit.SAC_REAL:
- v = new FloatValue(CSSPrimitiveValue.CSS_NUMBER,
- lu.getFloatValue());
- break;
-
- default:
- throw createInvalidLexicalUnitDOMException
- (lu.getLexicalUnitType());
- }
-
+ Value v = super.createValue(lu, engine);
lv.append(v);
lu = lu.getNextLexicalUnit();
if (lu != null &&
@@ -115,5 +101,37 @@
return SVGValueConstants.NONE_VALUE;
}
throw createInvalidIdentifierDOMException(value);
+ }
+
+ /**
+ * Implements {@link
+ *
ValueManager#computeValue(CSSStylableElement,String,CSSEngine,int,StyleMap,Value)}.
+ */
+ public Value computeValue(CSSStylableElement elt,
+ String pseudo,
+ CSSEngine engine,
+ int idx,
+ StyleMap sm,
+ Value value) {
+ switch (value.getCssValueType()) {
+ case CSSValue.CSS_PRIMITIVE_VALUE:
+ return value;
+ }
+
+ ListValue lv = (ListValue)value;
+ ListValue result = new ListValue(' ');
+ for (int i = 0; i < lv.getLength(); i++) {
+ result.append(super.computeValue(elt, pseudo, engine, idx, sm,
+ lv.item(i)));
+ }
+ return result;
+ }
+
+ /**
+ * Indicates the orientation of the property associated with
+ * this manager.
+ */
+ protected int getOrientation() {
+ return BOTH_ORIENTATION;
}
}
1.9 +2 -2 xml-batik/sources/org/apache/batik/dom/AbstractAttr.java
Index: AbstractAttr.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/AbstractAttr.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- AbstractAttr.java 19 Nov 2001 13:39:55 -0000 1.8
+++ AbstractAttr.java 14 Aug 2002 14:12:22 -0000 1.9
@@ -254,7 +254,7 @@
/**
* Checks the validity of a node to be inserted.
*/
- protected void checkChildType(Node n) {
+ protected void checkChildType(Node n, boolean replace) {
switch (n.getNodeType()) {
case TEXT_NODE:
case ENTITY_REFERENCE_NODE:
1.15 +4 -3 xml-batik/sources/org/apache/batik/dom/AbstractDocument.java
Index: AbstractDocument.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/AbstractDocument.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- AbstractDocument.java 19 Mar 2002 09:25:40 -0000 1.14
+++ AbstractDocument.java 14 Aug 2002 14:12:22 -0000 1.15
@@ -487,7 +487,7 @@
/**
* Checks the validity of a node to be inserted.
*/
- protected void checkChildType(Node n) {
+ protected void checkChildType(Node n, boolean replace) {
short t = n.getNodeType();
switch (t) {
case ELEMENT_NODE:
@@ -504,7 +504,8 @@
new Integer(t),
n.getNodeName() });
}
- if ((t == ELEMENT_NODE && getDocumentElement() != null) ||
+ if (!replace &&
+ (t == ELEMENT_NODE && getDocumentElement() != null) ||
(t == DOCUMENT_TYPE_NODE && getDoctype() != null)) {
throw createDOMException(DOMException.HIERARCHY_REQUEST_ERR,
"child.type",
1.2 +2 -2
xml-batik/sources/org/apache/batik/dom/AbstractDocumentFragment.java
Index: AbstractDocumentFragment.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/dom/AbstractDocumentFragment.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractDocumentFragment.java 10 Oct 2000 18:38:48 -0000 1.1
+++ AbstractDocumentFragment.java 14 Aug 2002 14:12:22 -0000 1.2
@@ -41,7 +41,7 @@
/**
* Checks the validity of a node to be inserted.
*/
- protected void checkChildType(Node n) {
+ protected void checkChildType(Node n, boolean replace) {
switch (n.getNodeType()) {
case ELEMENT_NODE:
case PROCESSING_INSTRUCTION_NODE:
1.19 +2 -2 xml-batik/sources/org/apache/batik/dom/AbstractElement.java
Index: AbstractElement.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/AbstractElement.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- AbstractElement.java 30 May 2002 16:42:34 -0000 1.18
+++ AbstractElement.java 14 Aug 2002 14:12:22 -0000 1.19
@@ -446,7 +446,7 @@
* Checks the validity of a node to be inserted.
* @param n The node to be inserted.
*/
- protected void checkChildType(Node n) {
+ protected void checkChildType(Node n, boolean replace) {
switch (n.getNodeType()) {
case ELEMENT_NODE:
case PROCESSING_INSTRUCTION_NODE:
1.2 +2 -2 xml-batik/sources/org/apache/batik/dom/AbstractEntity.java
Index: AbstractEntity.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/AbstractEntity.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractEntity.java 10 Oct 2000 18:38:52 -0000 1.1
+++ AbstractEntity.java 14 Aug 2002 14:12:22 -0000 1.2
@@ -157,7 +157,7 @@
/**
* Checks the validity of a node to be inserted.
*/
- protected void checkChildType(Node n) {
+ protected void checkChildType(Node n, boolean replace) {
switch (n.getNodeType()) {
case ELEMENT_NODE:
case PROCESSING_INSTRUCTION_NODE:
1.3 +2 -2
xml-batik/sources/org/apache/batik/dom/AbstractEntityReference.java
Index: AbstractEntityReference.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/dom/AbstractEntityReference.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AbstractEntityReference.java 17 May 2001 16:36:36 -0000 1.2
+++ AbstractEntityReference.java 14 Aug 2002 14:12:22 -0000 1.3
@@ -121,7 +121,7 @@
/**
* Checks the validity of a node to be inserted.
*/
- protected void checkChildType(Node n) {
+ protected void checkChildType(Node n, boolean replace) {
switch (n.getNodeType()) {
case ELEMENT_NODE:
case PROCESSING_INSTRUCTION_NODE:
1.12 +2 -2 xml-batik/sources/org/apache/batik/dom/AbstractNode.java
Index: AbstractNode.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/AbstractNode.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- AbstractNode.java 19 Apr 2002 16:04:05 -0000 1.11
+++ AbstractNode.java 14 Aug 2002 14:12:22 -0000 1.12
@@ -542,7 +542,7 @@
/**
* Checks the validity of a node to be inserted.
*/
- protected void checkChildType(Node n) {
+ protected void checkChildType(Node n, boolean replace) {
throw createDOMException(DOMException.HIERARCHY_REQUEST_ERR,
"children.not.allowed",
new Object[] { new Integer(getNodeType()),
1.17 +6 -6 xml-batik/sources/org/apache/batik/dom/AbstractParentNode.java
Index: AbstractParentNode.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/AbstractParentNode.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- AbstractParentNode.java 16 May 2002 11:23:34 -0000 1.16
+++ AbstractParentNode.java 14 Aug 2002 14:12:22 -0000 1.17
@@ -73,7 +73,7 @@
new Object[] { new Integer(refChild.getNodeType()),
refChild.getNodeName() });
}
- checkAndRemove(newChild);
+ checkAndRemove(newChild, false);
if (newChild.getNodeType() == DOCUMENT_FRAGMENT_NODE) {
Node n = newChild.getFirstChild();
@@ -114,7 +114,7 @@
new Object[] { new Integer(oldChild.getNodeType()),
oldChild.getNodeName() });
}
- checkAndRemove(newChild);
+ checkAndRemove(newChild, true);
if (newChild.getNodeType() == DOCUMENT_FRAGMENT_NODE) {
Node n = newChild.getLastChild();
@@ -187,7 +187,7 @@
* <b>DOM</b>: Implements {@link org.w3c.dom.Node#appendChild(Node)}.
*/
public Node appendChild(Node newChild) throws DOMException {
- checkAndRemove(newChild);
+ checkAndRemove(newChild, false);
if (newChild.getNodeType() == DOCUMENT_FRAGMENT_NODE) {
Node n = newChild.getFirstChild();
@@ -415,8 +415,8 @@
* Checks the validity of a node to be inserted, and removes it from
* the document if needed.
*/
- protected void checkAndRemove(Node n) {
- checkChildType(n);
+ protected void checkAndRemove(Node n, boolean replace) {
+ checkChildType(n, replace);
if (isReadonly()) {
throw createDOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
"readonly.node",
1.19 +7 -2 xml-batik/sources/org/apache/batik/dom/svg/SVGOMSVGElement.java
Index: SVGOMSVGElement.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/svg/SVGOMSVGElement.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- SVGOMSVGElement.java 21 Jun 2002 15:52:00 -0000 1.18
+++ SVGOMSVGElement.java 14 Aug 2002 14:12:22 -0000 1.19
@@ -9,6 +9,7 @@
package org.apache.batik.dom.svg;
import org.apache.batik.dom.AbstractDocument;
+import org.apache.batik.dom.util.XLinkSupport;
import org.apache.batik.dom.util.XMLSupport;
import org.w3c.dom.DOMException;
@@ -56,11 +57,15 @@
*/
protected final static AttributeInitializer attributeInitializer;
static {
- attributeInitializer = new AttributeInitializer(6);
+ attributeInitializer = new AttributeInitializer(7);
attributeInitializer.addAttribute(XMLSupport.XMLNS_NAMESPACE_URI,
null,
"xmlns",
SVG_NAMESPACE_URI);
+ attributeInitializer.addAttribute(XMLSupport.XMLNS_NAMESPACE_URI,
+ "xmlns",
+ "xlink",
+ XLinkSupport.XLINK_NAMESPACE_URI);
attributeInitializer.addAttribute(null,
null,
SVG_PRESERVE_ASPECT_RATIO_ATTRIBUTE,
1.5 +7 -6
xml-batik/test-resources/org/apache/batik/css/dom/unitTesting.xml
Index: unitTesting.xml
===================================================================
RCS file:
/home/cvs/xml-batik/test-resources/org/apache/batik/css/dom/unitTesting.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- unitTesting.xml 12 Jun 2002 11:04:24 -0000 1.4
+++ unitTesting.xml 14 Aug 2002 14:12:22 -0000 1.5
@@ -14,10 +14,11 @@
class="org.apache.batik.css.dom.EcmaScriptCSSDOMTest">
<testGroup id="basic" name="Basic CSS DOM Testing">
- <test id="rgbTest" />
- <test id="rgbUpdateTest" />
- <test id="rgbPresentationTest" />
- <test id="bug9740" />
- <test id="bug9779" />
+ <test id="rgbTest"/>
+ <test id="rgbUpdateTest"/>
+ <test id="rgbPresentationTest"/>
+ <test id="bug9740"/>
+ <test id="bug9779"/>
+ <test id="bug11670"/>
</testGroup>
</testSuite>
1.1 xml-batik/test-resources/org/apache/batik/css/dom/bug11670.svg
Index: bug11670.svg
===================================================================
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- ========================================================================= -->
<!-- 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. -->
<!-- ========================================================================= -->
<!-- ========================================================================= -->
<!-- -->
<!-- @author [EMAIL PROTECTED] -->
<!-- @version $Id: bug11670.svg,v 1.1 2002/08/14 14:12:22 hillion Exp $ -->
<!-- ========================================================================= -->
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:test="http://xml.apache.org/batik/test"
width="450" height="500" viewBox="0 0 450 500"
onload="runTest(evt)" class="c">
<style type="text/css"><![CDATA[
.c rect { fill: #010203 ! important }
.c g rect { fill: #020304 ! important }
]]></style>
<test:testResult id="testResult" />
<script type="text/ecmascript"><![CDATA[
var testNS = "http://xml.apache.org/batik/test";
function runTest() {
var result = document.getElementById("testResult");
var rect = document.getElementById("rect1");
if (rect == null){
result.setAttributeNS(null, "errorCode", "cannot.find.test.element");
var entry = document.createElementNS(testNS, "errorDescriptionEntry");
entry.setAttributeNS(null, "id", "missing.element.id");
entry.setAttributeNS(null, "value", "targetElement");
result.appendChild(entry);
return;
}
var style = document.documentElement.getComputedStyle(rect, null);
if (style == null){
result.setAttributeNS(null, "errorCode", "getComputedStyle() returned null");
return;
}
var val = style.getPropertyCSSValue("fill");
if ( val == null ){
result.setAttributeNS(null, "errorCode",
"CSSStyleDeclaration.getPropertyCSSValue returned null");
return;
}
val = val.getRGBColor()
if (val.red.getFloatValue(1) != 2 ||
val.green.getFloatValue(1) != 3 ||
val.blue.getFloatValue(1) != 4) {
result.setAttributeNS(null, "errorCode", "invalid color components");
return;
}
result.setAttributeNS(null, "result", "passed");
}
]]></script>
<g>
<rect id="rect1" x="10%" y="10%" width="80%" height="80%" style="fill: #030405"/>
</g>
</svg>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]