deweese 2003/07/28 17:24:33
Modified: sources/org/apache/batik/css/engine CSSEngine.java
sources/org/apache/batik/gvt CompositeGraphicsNode.java
UpdateTracker.java
sources/org/apache/batik/util ParsedURL.java
Log:
1) Fixed notification of change ofwith properties under some circumstances.
2) Fixed some issues with documents lacking a base URI.
3) Composite graphics nodes no longer invalidate when
their visibility changes (their children will if it propogates).
Revision Changes Path
1.26 +119 -128 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.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- CSSEngine.java 20 Jul 2003 23:23:27 -0000 1.25
+++ CSSEngine.java 29 Jul 2003 00:24:32 -0000 1.26
@@ -582,10 +582,9 @@
media = parser.parseMedia(str);
} catch (Exception e) {
String m = e.getMessage();
- String s =
- Messages.formatMessage("media.error",
- new Object[] { str,
- (m == null) ? "" : m });
+ if (m == null) m = "";
+ String s =Messages.formatMessage
+ ("media.error", new Object[] { str, m });
throw new DOMException(DOMException.SYNTAX_ERR, s);
}
}
@@ -685,12 +684,12 @@
StyleMap.NON_CSS_ORIGIN);
} catch (Exception e) {
String m = e.getMessage();
- String s =
- Messages.formatMessage("property.syntax.error.at",
- new Object[] { documentURI.toString(),
- an,
- attr.getNodeValue(),
- (m == null) ? "" : m });
+ if (m == null) m = "";
+ String u = ((documentURI == null)?"<unknown>":
+ documentURI.toString());
+ String s = Messages.formatMessage
+ ("property.syntax.error.at",
+ new Object[] { u, an, attr.getNodeValue(),m});
throw new DOMException(DOMException.SYNTAX_ERR, s);
}
}
@@ -730,12 +729,12 @@
styleDeclarationDocumentHandler.styleMap = null;
} catch (Exception e) {
String m = e.getMessage();
- String s =
- Messages.formatMessage("style.syntax.error.at",
- new Object[] { documentURI.toString(),
- styleLocalName,
- style,
- (m == null) ? "" : m });
+ if (m == null) m = "";
+ String u = ((documentURI == null)?"<unknown>":
+ documentURI.toString());
+ String s = Messages.formatMessage
+ ("style.syntax.error.at",
+ new Object[] { u, styleLocalName, style, m});
throw new DOMException(DOMException.SYNTAX_ERR, s);
}
}
@@ -879,12 +878,12 @@
return vm.createValue(lu, this);
} catch (Exception e) {
String m = e.getMessage();
- String s =
- Messages.formatMessage("property.syntax.error.at",
- new Object[] { documentURI.toString(),
- prop,
- value,
- (m == null) ? "" : m });
+ if (m == null) m = "";
+ String u = ((documentURI == null)?"<unknown>":
+ documentURI.toString());
+ String s = Messages.formatMessage
+ ("property.syntax.error.at",
+ new Object[] { u, prop, value, m});
throw new DOMException(DOMException.SYNTAX_ERR, s);
} finally {
element = null;
@@ -908,10 +907,11 @@
return styleDeclarationBuilder.styleDeclaration;
} catch (Exception e) {
String m = e.getMessage();
- String s =
- Messages.formatMessage("syntax.error.at",
- new Object[] { documentURI.toString(),
- (m == null) ? "" : m });
+ if (m == null) m = "";
+ String u = ((documentURI == null)?"<unknown>":
+ documentURI.toString());
+ String s = Messages.formatMessage
+ ("syntax.error.at", new Object[] { u, m });
throw new DOMException(DOMException.SYNTAX_ERR, s);
}
}
@@ -928,10 +928,11 @@
ss.setMedia(parser.parseMedia(media));
} catch (Exception e) {
String m = e.getMessage();
- String s =
- Messages.formatMessage("syntax.error.at",
- new Object[] { documentURI.toString(),
- (m == null) ? "" : m });
+ if (m == null) m = "";
+ String u = ((documentURI == null)?"<unknown>":
+ documentURI.toString());
+ String s = Messages.formatMessage
+ ("syntax.error.at", new Object[] { u, m });
throw new DOMException(DOMException.SYNTAX_ERR, s);
}
parseStyleSheet(ss, uri);
@@ -952,10 +953,11 @@
parseStyleSheet(ss, is, uri);
} catch (Exception e) {
String m = e.getMessage();
- String s =
- Messages.formatMessage("syntax.error.at",
- new Object[] { documentURI.toString(),
- (m == null) ? "" : m });
+ if (m == null) m = "";
+ String u = ((documentURI == null)?"<unknown>":
+ documentURI.toString());
+ String s = Messages.formatMessage
+ ("syntax.error.at", new Object[] { u, m });
throw new DOMException(DOMException.SYNTAX_ERR, s);
}
return ss;
@@ -968,9 +970,9 @@
*/
public void parseStyleSheet(StyleSheet ss, URL uri) throws DOMException {
if (uri == null) {
- String s = Messages.formatMessage("syntax.error.at",
- new Object[] { "Null Document
reference",
- "" });
+ String s = Messages.formatMessage
+ ("syntax.error.at",
+ new Object[] { "Null Document reference", "" });
throw new DOMException(DOMException.SYNTAX_ERR, s);
}
@@ -980,8 +982,7 @@
if (documentURI != null) {
pDocURL = new ParsedURL(documentURI);
}
- ParsedURL pURL = null;
- pURL = new ParsedURL(uri);
+ ParsedURL pURL = new ParsedURL(uri);
cssContext.checkLoadExternalResource(pURL, pDocURL);
parseStyleSheet(ss, new InputSource(uri.toString()), uri);
@@ -989,10 +990,9 @@
throw e;
} catch (Exception e) {
String m = e.getMessage();
- String s =
- Messages.formatMessage("syntax.error.at",
- new Object[] { uri.toString(),
- (m == null) ? "" : m });
+ if (m == null) m = "";
+ String s = Messages.formatMessage
+ ("syntax.error.at", new Object[] { uri.toString(), m });
throw new DOMException(DOMException.SYNTAX_ERR, s);
}
}
@@ -1010,10 +1010,11 @@
ss.setMedia(parser.parseMedia(media));
} catch (Exception e) {
String m = e.getMessage();
- String s =
- Messages.formatMessage("syntax.error.at",
- new Object[] { documentURI.toString(),
- (m == null) ? "" : m });
+ if (m == null) m = "";
+ String u = ((documentURI == null)?"<unknown>":
+ documentURI.toString());
+ String s = Messages.formatMessage
+ ("syntax.error.at", new Object[] { u, m });
throw new DOMException(DOMException.SYNTAX_ERR, s);
}
parseStyleSheet(ss, rules, uri);
@@ -1033,11 +1034,10 @@
parseStyleSheet(ss, new InputSource(new StringReader(rules)), uri);
} catch (Exception e) {
String m = e.getMessage();
- String s =
- Messages.formatMessage("stylesheet.syntax.error",
- new Object[] { uri.toString(),
- rules,
- (m == null) ? "" : m });
+ if (m == null) m = "";
+ String s = Messages.formatMessage
+ ("stylesheet.syntax.error",
+ new Object[] { uri.toString(), rules, m });
throw new DOMException(DOMException.SYNTAX_ERR, s);
}
}
@@ -1346,7 +1346,11 @@
ir.setMediaList(media);
ir.setParent(styleSheet);
try {
- ir.setURI(new URL(getCSSBaseURI(), uri));
+ URL base = getCSSBaseURI();
+ URL url;
+ if (base == null) url = new URL(uri);
+ else url = new URL(base, uri);
+ ir.setURI(url);
} catch (MalformedURLException e) {
}
styleSheet.append(ir);
@@ -1417,7 +1421,9 @@
Value fontFamily = sm.getValue(pidx);
if (fontFamily == null) return;
- ParsedURL purl = new ParsedURL(getCSSBaseURI());
+ URL base = getCSSBaseURI();
+ ParsedURL purl = null;
+ if (base != null) purl = new ParsedURL(base);
fontFaces.add(new FontFaceRule(sm, purl));
}
@@ -1650,6 +1656,7 @@
case MutationEvent.ADDITION:
case MutationEvent.MODIFICATION:
String decl = evt.getNewValue();
+ // System.err.println("Inline Style Update: '" + decl + "'");
if (decl.length() > 0) {
element = elt;
try {
@@ -1661,12 +1668,12 @@
styleDeclarationUpdateHandler.styleMap = null;
} catch (Exception e) {
String m = e.getMessage();
- String s =
- Messages.formatMessage("style.syntax.error.at",
- new Object[] { documentURI.toString(),
- styleLocalName,
- decl,
- (m == null) ? "" : m });
+ if (m == null) m = "";
+ String u = ((documentURI == null)?"<unknown>":
+ documentURI.toString());
+ String s = Messages.formatMessage
+ ("style.syntax.error.at",
+ new Object[] { u, styleLocalName, decl, m });
throw new DOMException(DOMException.SYNTAX_ERR, s);
}
element = null;
@@ -1710,25 +1717,14 @@
: updated[colorIndex];
for (int i = getNumberOfProperties() - 1; i >= 0; --i) {
- if (!updated[i]) {
- if (style.isComputed(i)) {
- if (fs && style.isFontSizeRelative(i)) {
- updated[i] = true;
- count++;
- clearComputedValue(style, i);
- }
- if (lh && style.isLineHeightRelative(i)) {
- updated[i] = true;
- count++;
- clearComputedValue(style, i);
- }
- if (cl && style.isColorRelative(i)) {
- updated[i] = true;
- count++;
- clearComputedValue(style, i);
- }
- }
- } else {
+ if (updated[i]) {
+ count++;
+ }
+ else if ((fs && style.isFontSizeRelative(i)) ||
+ (lh && style.isLineHeightRelative(i)) ||
+ (cl && style.isColorRelative(i))) {
+ updated[i] = true;
+ clearComputedValue(style, i);
count++;
}
}
@@ -1858,24 +1854,13 @@
for (int i = getNumberOfProperties() - 1; i >= 0; --i) {
if (updated[i]) {
count++;
- continue;
}
- if (style.isComputed(i)) {
- if (fs && style.isFontSizeRelative(i)) {
- updated[i] = true;
- count++;
- clearComputedValue(style, i);
- }
- if (lh && style.isLineHeightRelative(i)) {
- updated[i] = true;
- count++;
- clearComputedValue(style, i);
- }
- if (cl && style.isColorRelative(i)) {
- updated[i] = true;
- count++;
- clearComputedValue(style, i);
- }
+ else if ((fs && style.isFontSizeRelative(i)) ||
+ (lh && style.isLineHeightRelative(i)) ||
+ (cl && style.isColorRelative(i))) {
+ updated[i] = true;
+ clearComputedValue(style, i);
+ count++;
}
}
@@ -1893,14 +1878,34 @@
}
}
+ int [] inherited = props;
+ if (props != null) {
+ // Filter out uninheritable properties when we
+ // propogate to children.
+ int count = 0;
+ for (int i=0; i<props.length; i++) {
+ ValueManager vm = valueManagers[props[i]];
+ if (vm.isInheritedProperty()) count++;
+ else props[i] = -1;
+ }
+
+ if (count == 0)
+ return; // nothing to propogate
+ inherited = new int[count];
+ count=0;
+ for (int i=0; i<props.length; i++)
+ if (props[i] != -1)
+ inherited[count++] = props[i];
+ }
+
Node c = getImportedChild(node);
if (c != null) {
- invalidateProperties(c, props);
+ invalidateProperties(c, inherited);
}
for (Node n = node.getFirstChild();
n != null;
n = n.getNextSibling()) {
- invalidateProperties(n, props);
+ invalidateProperties(n, inherited);
}
}
@@ -1938,9 +1943,7 @@
return;
}
- if (styleMap.isComputed(i)) {
- updatedProperties[i] = true;
- }
+ updatedProperties[i] = true;
Value v = valueManagers[i].createValue(value, CSSEngine.this);
styleMap.putMask(i, (short)0);
@@ -1987,13 +1990,12 @@
style.putOrigin(idx, StyleMap.NON_CSS_ORIGIN);
} catch (Exception e) {
String m = e.getMessage();
- String s =
- Messages.formatMessage("property.syntax.error.at",
- new Object[]
- { documentURI.toString(),
- property,
- evt.getNewValue(),
- (m == null) ? "" : m });
+ if (m == null) m = "";
+ String u = ((documentURI == null)?"<unknown>":
+ documentURI.toString());
+ String s = Messages.formatMessage
+ ("property.syntax.error.at",
+ new Object[] { u, property, evt.getNewValue(), m });
throw new DOMException(DOMException.SYNTAX_ERR, s);
}
element = null;
@@ -2018,25 +2020,14 @@
int count = 0;
for (int i = getNumberOfProperties() - 1; i >= 0; --i) {
- if (!updated[i]) {
- if (style.isComputed(i)) {
- if (fs && style.isFontSizeRelative(i)) {
- updated[i] = true;
- count++;
- clearComputedValue(style, i);
- }
- if (lh && style.isLineHeightRelative(i)) {
- updated[i] = true;
- count++;
- clearComputedValue(style, i);
- }
- if (cl && style.isColorRelative(i)) {
- updated[i] = true;
- count++;
- clearComputedValue(style, i);
- }
- }
- } else {
+ if (updated[i]) {
+ count++;
+ }
+ else if ((fs && style.isFontSizeRelative(i)) ||
+ (lh && style.isLineHeightRelative(i)) ||
+ (cl && style.isColorRelative(i))) {
+ updated[i] = true;
+ clearComputedValue(style, i);
count++;
}
}
1.34 +15 -1
xml-batik/sources/org/apache/batik/gvt/CompositeGraphicsNode.java
Index: CompositeGraphicsNode.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/gvt/CompositeGraphicsNode.java,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- CompositeGraphicsNode.java 16 Jul 2003 23:46:27 -0000 1.33
+++ CompositeGraphicsNode.java 29 Jul 2003 00:24:32 -0000 1.34
@@ -107,6 +107,20 @@
return backgroundEnableRgn;
}
+ /**
+ * Sets if this node is visible or not depending on the specified value.
+ * Don't fire a graphicsNodeChange event because this doesn't really
+ * effect us (it effects our children through CSS inheritence).
+ *
+ * @param isVisible If true this node is visible
+ */
+ public void setVisible(boolean isVisible) {
+ // fireGraphicsNodeChangeStarted();
+ this.isVisible = isVisible;
+ // fireGraphicsNodeChangeCompleted();
+ }
+
+
//
// Drawing methods
//
1.20 +13 -8 xml-batik/sources/org/apache/batik/gvt/UpdateTracker.java
Index: UpdateTracker.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/UpdateTracker.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- UpdateTracker.java 20 Jul 2003 22:32:30 -0000 1.19
+++ UpdateTracker.java 29 Jul 2003 00:24:32 -0000 1.20
@@ -56,7 +56,7 @@
while (i.hasNext()) {
WeakReference gnWRef = (WeakReference)i.next();
GraphicsNode gn = (GraphicsNode)gnWRef.get();
- //GraphicsNode srcGN = gn;
+ // GraphicsNode srcGN = gn;
// if the weak ref has been cleared then this node is no
// longer part of the GVT tree (and the change should be
@@ -132,12 +132,11 @@
// srcORgn + "\n" + srcNRgn + "\n");
// <!>
Shape oRgn = srcORgn;
- // System.err.println("src: " + srcORgn);
- // System.err.println("GN: " + srcGN);
- if (oat != null){
- oRgn = oat.createTransformedShape(srcORgn);
- }
if (oRgn != null) {
+ if (oat != null)
+ oRgn = oat.createTransformedShape(srcORgn);
+ // System.err.println("GN: " + srcGN);
+ // System.err.println("Src: " + oRgn.getBounds2D());
ret.add(oRgn);
}
@@ -235,7 +234,13 @@
// Add this dirty region to any existing dirty region.
Rectangle2D r2d = (Rectangle2D)fromBounds.remove(gnWRef);
if (rgn != null) {
- if (r2d != null) r2d = r2d.createUnion(rgn);
+ if (r2d != null) {
+ // System.err.println("GN: " + gn);
+ // System.err.println("R2d: " + r2d);
+ // System.err.println("Rgn: " + rgn);
+ r2d = r2d.createUnion(rgn);
+ // System.err.println("Union: " + r2d);
+ }
else r2d = rgn;
}
1.17 +7 -1 xml-batik/sources/org/apache/batik/util/ParsedURL.java
Index: ParsedURL.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/util/ParsedURL.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- ParsedURL.java 23 Apr 2003 00:46:11 -0000 1.16
+++ ParsedURL.java 29 Jul 2003 00:24:32 -0000 1.17
@@ -488,6 +488,9 @@
* @param urlStr the sub URL string to parse.
*/
public static ParsedURLData parseURL(String baseStr, String urlStr) {
+ if (baseStr == null)
+ return parseURL(urlStr);
+
ParsedURL purl = new ParsedURL(baseStr);
return parseURL(purl, urlStr);
}
@@ -499,6 +502,9 @@
* @param urlStr the sub URL string to parse.
*/
public static ParsedURLData parseURL(ParsedURL baseURL, String urlStr) {
+ if (baseURL == null)
+ return parseURL(urlStr);
+
String protocol = getProtocol(urlStr);
if (protocol == null)
protocol = baseURL.getProtocol();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]