deweese     2004/12/15 02:50:30

  Modified:    sources/org/apache/batik/bridge BridgeContext.java
                        SVGUseElementBridge.java
               sources/org/apache/batik/dom/svg
                        SVGOMTextContentElement.java
               sources/org/apache/batik/gvt/renderer
                        StrokingTextPainter.java
  Log:
  1) Fixed a small memory leak when changing xlink:href on a
     use referencing a local element.
  2) Implemented textLength to return the value of
     getComputedTextLength when the textLength attribute is not
     set.
  
  Revision  Changes    Path
  1.80      +4 -1      
xml-batik/sources/org/apache/batik/bridge/BridgeContext.java
  
  Index: BridgeContext.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/bridge/BridgeContext.java,v
  retrieving revision 1.79
  retrieving revision 1.80
  diff -u -r1.79 -r1.80
  --- BridgeContext.java        18 Nov 2004 01:46:53 -0000      1.79
  +++ BridgeContext.java        15 Dec 2004 10:50:29 -0000      1.80
  @@ -1018,14 +1018,17 @@
           extends CleanerThread.SoftReferenceCleared {
           Object mememto;
           Set    set;
  +        // String refStr;
           SoftReferenceMememto(Object ref, Object mememto, Set set) {
               super(ref);
  +            // refStr = ref.toString();
               this.mememto = mememto;
               this.set     = set;
           }
   
           public void cleared() {
               synchronized (set) {
  +                // System.err.println("SRClear: " + refStr);
                   set.remove(mememto);
                   mememto = null;
                   set     = null;
  
  
  
  1.46      +28 -28    
xml-batik/sources/org/apache/batik/bridge/SVGUseElementBridge.java
  
  Index: SVGUseElementBridge.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGUseElementBridge.java,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- SVGUseElementBridge.java  30 Nov 2004 03:23:58 -0000      1.45
  +++ SVGUseElementBridge.java  15 Dec 2004 10:50:29 -0000      1.46
  @@ -177,6 +177,14 @@
           root = new SVGOMCSSImportedElementRoot(document, e, isLocal);
           root.appendChild(localRefElement);
   
  +        if (gn == null) {
  +            gn = new CompositeGraphicsNode();
  +        } else {
  +            int s = gn.size();
  +            for (int i=0; i<s; i++)
  +                gn.remove(0);
  +        }
  +
           SVGOMUseElement ue = (SVGOMUseElement)e;
           Node oldRoot = ue.getCSSImportedElementRoot();
           if (oldRoot != null) {
  @@ -193,13 +201,6 @@
           GraphicsNode refNode = builder.build(ctx, g);
   
           
///////////////////////////////////////////////////////////////////////
  -        if (gn == null) {
  -            gn = new CompositeGraphicsNode();
  -        } else {
  -            int s = gn.size();
  -            for (int i=0; i<s; i++)
  -                gn.remove(0);
  -        }
   
           gn.getChildren().add(refNode);
   
  @@ -221,22 +222,22 @@
           if (r != null)
               gn.setBackgroundEnable(r);
   
  +        if (l != null) {
  +            // Remove event listeners
  +            EventTarget target = l.target;
  +            target.removeEventListener("DOMAttrModified", l, true);
  +            target.removeEventListener("DOMNodeInserted", l, true);
  +            target.removeEventListener("DOMNodeRemoved", l, true);
  +            target.removeEventListener("DOMCharacterDataModified",l, true);
  +            l = null;
  +        }
  +
           
///////////////////////////////////////////////////////////////////////
           
           // Handle mutations on content referenced in the same file if
           // we are in a dynamic context.
           if (isLocal && ctx.isDynamic()) {
  -            if (l == null) {
  -                l = new ReferencedElementMutationListener();
  -                l.target = (EventTarget)refElement;
  -            } else {
  -                // Remove event listeners
  -                EventTarget target = l.target;
  -                target.removeEventListener("DOMAttrModified", l, true);
  -                target.removeEventListener("DOMNodeInserted", l, true);
  -                target.removeEventListener("DOMNodeRemoved", l, true);
  -                target.removeEventListener("DOMCharacterDataModified",l, 
true);
  -            }
  +            l = new ReferencedElementMutationListener();
           
               EventTarget target = (EventTarget)refElement;
               l.target = target;
  @@ -259,14 +260,6 @@
       }
   
       public void dispose() {
  -        SVGOMUseElement ue = (SVGOMUseElement)e;
  -        if ((ue != null) &&
  -            (ue.getCSSImportedElementRoot() != null)) {
  -            disposeTree(ue.getCSSImportedElementRoot());
  -        }
  -
  -        super.dispose();
  -
           if (l != null) {
               // Remove event listeners
               EventTarget target = l.target;
  @@ -274,10 +267,17 @@
               target.removeEventListener("DOMNodeInserted", l, true);
               target.removeEventListener("DOMNodeRemoved", l, true);
               target.removeEventListener("DOMCharacterDataModified",l, true);
  +            l = null;
           }
   
  +        SVGOMUseElement ue = (SVGOMUseElement)e;
  +        if ((ue != null) && (ue.getCSSImportedElementRoot() != null)) {
  +            disposeTree(ue.getCSSImportedElementRoot());
  +        }
  +
  +        super.dispose();
  +
           subCtx = null;
  -        l = null;
       }
   
       /**
  
  
  
  1.13      +28 -2     
xml-batik/sources/org/apache/batik/dom/svg/SVGOMTextContentElement.java
  
  Index: SVGOMTextContentElement.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/dom/svg/SVGOMTextContentElement.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- SVGOMTextContentElement.java      18 Aug 2004 07:13:18 -0000      1.12
  +++ SVGOMTextContentElement.java      15 Dec 2004 10:50:29 -0000      1.13
  @@ -23,6 +23,7 @@
   import org.w3c.dom.svg.SVGAnimatedBoolean;
   import org.w3c.dom.svg.SVGAnimatedEnumeration;
   import org.w3c.dom.svg.SVGAnimatedLength;
  +import org.w3c.dom.svg.SVGLength;
   import org.w3c.dom.svg.SVGPoint;
   import org.w3c.dom.svg.SVGRect;
   import org.w3c.dom.svg.SVGStringList;
  @@ -73,8 +74,33 @@
               result = new AbstractSVGAnimatedLength
                   (this, null, SVG_TEXT_LENGTH_ATTRIBUTE,
                    SVGOMAnimatedLength.HORIZONTAL_LENGTH) {
  +                    boolean usedDefault;
  +
                       protected String getDefaultValue() {
  -                        throw new RuntimeException("!!! TODO");
  +                        usedDefault = true;
  +                        return ""+getComputedTextLength();
  +                    }
  +
  +                    public SVGLength getBaseVal() {
  +                        if (baseVal == null) {
  +                            baseVal = new SVGTextLength(direction);
  +                        }
  +                        return baseVal;
  +                    }
  +                    
  +                    class SVGTextLength extends BaseSVGLength {
  +                        public SVGTextLength(short direction) {
  +                            super(direction);
  +                        }
  +                        protected void revalidate() {
  +                            usedDefault = false;
  +
  +                            super.revalidate();
  +
  +                            // Since the default value can change w/o notice
  +                            // always recompute it.
  +                            if (usedDefault) valid = false;
  +                        }
                       }
                   };
               putLiveAttributeValue(null, SVG_TEXT_LENGTH_ATTRIBUTE,
  
  
  
  1.54      +2 -2      
xml-batik/sources/org/apache/batik/gvt/renderer/StrokingTextPainter.java
  
  Index: StrokingTextPainter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/gvt/renderer/StrokingTextPainter.java,v
  retrieving revision 1.53
  retrieving revision 1.54
  diff -u -r1.53 -r1.54
  --- StrokingTextPainter.java  18 Nov 2004 01:47:00 -0000      1.53
  +++ StrokingTextPainter.java  15 Dec 2004 10:50:30 -0000      1.54
  @@ -202,7 +202,7 @@
           // cache the textRuns so don't need to recalculate
           node.setTextRuns(textRuns);
           return textRuns;
  -    }
  +   }
   
       public List computeTextRuns(TextNode node, 
                                   AttributedCharacterIterator aci,
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to