You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-commits@xmlgraphics.apache.org by ca...@apache.org on 2005/10/19 03:23:53 UTC
svn commit: r326315 - in /xmlgraphics/batik/trunk/sources/org/apache/batik:
bridge/AbstractGraphicsNodeBridge.java bridge/svg12/SVG12BridgeContext.java
bridge/svg12/SVGFlowRootElementBridge.java dom/svg12/XBLEventSupport.java
Author: cam
Date: Tue Oct 18 18:23:48 2005
New Revision: 326315
URL: http://svn.apache.org/viewcvs?rev=326315&view=rev
Log:
1. Updating the children of a flowRegion now causes the flow text
to be relayed out. (Only if the changed child is a primitive
shape element; doesn't work for 'use' or 'text'.)
Modified:
xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java
xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12BridgeContext.java
xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVGFlowRootElementBridge.java
xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/XBLEventSupport.java
Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java?rev=326315&r1=326314&r2=326315&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java Tue Oct 18 18:23:48 2005
@@ -201,7 +201,7 @@
}
/**
- * Invoked when the geometry of an graphical element has changed.
+ * Invoked when the geometry of a graphical element has changed.
*/
protected void handleGeometryChanged() {
node.setFilter(CSSUtilities.convertFilter(e, node, ctx));
Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12BridgeContext.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12BridgeContext.java?rev=326315&r1=326314&r2=326315&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12BridgeContext.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12BridgeContext.java Tue Oct 18 18:23:48 2005
@@ -482,6 +482,13 @@
public void handleEvent(Event evt) {
listener.handleEvent(EventSupport.getUltimateOriginalEvent(evt));
}
+
+ /**
+ * String representation of this listener wrapper.
+ */
+ public String toString() {
+ return super.toString() + " [wrapping " + listener.toString() + "]";
+ }
}
/**
Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVGFlowRootElementBridge.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVGFlowRootElementBridge.java?rev=326315&r1=326314&r2=326315&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVGFlowRootElementBridge.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVGFlowRootElementBridge.java Tue Oct 18 18:23:48 2005
@@ -53,9 +53,11 @@
import org.apache.batik.css.engine.value.Value;
import org.apache.batik.css.engine.value.ValueConstants;
+import org.apache.batik.dom.AbstractNode;
import org.apache.batik.dom.events.NodeEventTarget;
import org.apache.batik.dom.svg.SVGOMElement;
import org.apache.batik.dom.svg12.SVGOMFlowRegionElement;
+import org.apache.batik.dom.svg12.XBLEventSupport;
import org.apache.batik.dom.util.XMLSupport;
import org.apache.batik.dom.util.XLinkSupport;
@@ -69,10 +71,14 @@
import org.apache.batik.gvt.text.GVTAttributedCharacterIterator;
import org.apache.batik.gvt.text.TextPath;
+import org.apache.batik.util.SVGConstants;
import org.apache.batik.util.SVG12Constants;
import org.apache.batik.util.SVG12CSSConstants;
import org.apache.batik.util.XMLConstants;
+import org.w3c.dom.events.Event;
+import org.w3c.dom.events.EventListener;
+
/**
* Bridge class for the <flowRoot> element.
*
@@ -127,6 +133,11 @@
protected Map flowRegionNodes;
/**
+ * Listener for flowRegion changes.
+ */
+ protected RegionChangeListener regionChangeListener;
+
+ /**
* Constructs a new bridge for the <flowRoot> element.
*/
public SVGFlowRootElementBridge() {}
@@ -267,6 +278,8 @@
boolean isStatic = !ctx.isDynamic();
if (isStatic) {
flowRegionNodes = new HashMap();
+ } else {
+ regionChangeListener = new RegionChangeListener();
}
CompositeGraphicsNode cgn2 = (CompositeGraphicsNode) cgn.get(0);
GVTBuilder builder = ctx.getGVTBuilder();
@@ -286,6 +299,16 @@
}
}
}
+
+ if (!isStatic) {
+ AbstractNode an = (AbstractNode) n;
+ XBLEventSupport es =
+ (XBLEventSupport) an.initializeEventSupport();
+ es.addImplementationEventListenerNS
+ (SVGConstants.SVG_NAMESPACE_URI,
+ "shapechange",
+ regionChangeListener, false);
+ }
}
}
@@ -821,6 +844,21 @@
SVGTextElementBridge parent,
Element e) {
super(ctx, parent, e);
+ }
+ }
+
+ /**
+ * svg:shapechange listener for flowRegion elements.
+ */
+ protected class RegionChangeListener implements EventListener {
+
+ /**
+ * Handles the svg:shapechange event.
+ */
+ public void handleEvent(Event evt) {
+ // the flowRegion geometry may have changed, so relayout text
+ laidoutText = null;
+ computeLaidoutText(ctx, e, node);
}
}
}
Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/XBLEventSupport.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/XBLEventSupport.java?rev=326315&r1=326314&r2=326315&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/XBLEventSupport.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/dom/svg12/XBLEventSupport.java Tue Oct 18 18:23:48 2005
@@ -337,7 +337,7 @@
toBeStoppedGroups.clear();
}
// AT_TARGET : fire local event listeners
-// System.err.println("\t-- * AT_TARGET " + e.getType() + " " + ((Node) target).getNodeName());
+// System.err.println("\t-- * AT_TARGET " + e.getType() + " " + ((Node) target).getNodeName());
if (isCustom) {
ce.setDispatchState(target, Event.AT_TARGET);
} else {