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 {