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 de...@apache.org on 2006/03/29 14:02:46 UTC

svn commit: r389774 - in /xmlgraphics/batik/trunk/sources/org/apache/batik: bridge/ bridge/svg12/ gvt/text/

Author: deweese
Date: Wed Mar 29 04:02:42 2006
New Revision: 389774

URL: http://svn.apache.org/viewcvs?rev=389774&view=rev
Log:
1) Added GVT_FONT_FAMILIES back
2) Made TEXT_COMPOUND_ID a SoftReference rather than Object.
3) Removed all internal use of TEXT_COMPOUND_DELIMITER.

Modified:
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BridgeEventSupport.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGFontFamily.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGTextElementBridge.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12BridgeEventSupport.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVGFlowRootElementBridge.java
    xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/text/GVTAttributedCharacterIterator.java

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BridgeEventSupport.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BridgeEventSupport.java?rev=389774&r1=389773&r2=389774&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BridgeEventSupport.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/BridgeEventSupport.java Wed Mar 29 04:02:42 2006
@@ -22,6 +22,7 @@
 import java.awt.geom.NoninvertibleTransformException;
 import java.awt.geom.Point2D;
 import java.awt.geom.Rectangle2D;
+import java.lang.ref.SoftReference;
 import java.text.AttributedCharacterIterator;
 import java.util.List;
 
@@ -59,6 +60,12 @@
  */
 public abstract class BridgeEventSupport implements SVGConstants {
 
+    public static final 
+        AttributedCharacterIterator.Attribute TEXT_COMPOUND_ID =
+        GVTAttributedCharacterIterator.TextAttribute.TEXT_COMPOUND_ID;
+
+    protected BridgeEventSupport() {}
+
     /**
      * Is called only for the root element in order to dispatch GVT
      * events to the DOM.
@@ -464,8 +471,10 @@
                         Rectangle2D bounds = layout.getBounds2D();
                         if ((textHit != null) && 
                             (bounds != null) && bounds.contains(x, y)) {
-                            Object delimiter = aci.getAttribute
-                                (GVTAttributedCharacterIterator.TextAttribute.TEXT_COMPOUND_DELIMITER);
+                            SoftReference sr;
+                            sr =(SoftReference)aci.getAttribute
+                                (TEXT_COMPOUND_ID);
+                            Object delimiter = sr.get();
                             if (delimiter instanceof Element) {
                                 return (Element)delimiter;
                             }

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGFontFamily.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGFontFamily.java?rev=389774&r1=389773&r2=389774&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGFontFamily.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGFontFamily.java Wed Mar 29 04:02:42 2006
@@ -17,6 +17,7 @@
  */
 package org.apache.batik.bridge;
 
+import java.lang.ref.SoftReference;
 import java.text.AttributedCharacterIterator;
 import java.util.Map;
 
@@ -39,8 +40,8 @@
 public class SVGFontFamily implements GVTFontFamily {
 
     public static final 
-        AttributedCharacterIterator.Attribute TEXT_COMPOUND_DELIMITER =
-        GVTAttributedCharacterIterator.TextAttribute.TEXT_COMPOUND_DELIMITER;
+        AttributedCharacterIterator.Attribute TEXT_COMPOUND_ID =
+        GVTAttributedCharacterIterator.TextAttribute.TEXT_COMPOUND_ID;
 
     protected GVTFontFace fontFace;
     protected Element fontElement;
@@ -104,8 +105,8 @@
     public GVTFont deriveFont(float size, Map attrs) {
         SVGFontElementBridge fontBridge;
         fontBridge = (SVGFontElementBridge)ctx.getBridge(fontElement);
-        Element textElement;
-        textElement = (Element)attrs.get(TEXT_COMPOUND_DELIMITER);
+        SoftReference sr = (SoftReference)attrs.get(TEXT_COMPOUND_ID);
+        Element textElement = (Element)sr.get();
         return fontBridge.createFont(ctx, fontElement, textElement, 
                                      size, fontFace);
     }

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGTextElementBridge.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGTextElementBridge.java?rev=389774&r1=389773&r2=389774&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGTextElementBridge.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/SVGTextElementBridge.java Wed Mar 29 04:02:42 2006
@@ -26,6 +26,7 @@
 import java.awt.geom.GeneralPath;
 import java.awt.geom.Point2D;
 import java.awt.geom.Rectangle2D;
+import java.lang.ref.SoftReference;
 import java.text.AttributedCharacterIterator;
 import java.text.AttributedString;
 import java.text.AttributedCharacterIterator.Attribute;
@@ -112,6 +113,10 @@
         = GVTAttributedCharacterIterator.TextAttribute.ANCHOR_TYPE;
 
     public static final 
+        AttributedCharacterIterator.Attribute GVT_FONT_FAMILIES
+        = GVTAttributedCharacterIterator.TextAttribute.GVT_FONT_FAMILIES;
+
+    public static final 
         AttributedCharacterIterator.Attribute GVT_FONTS
         = GVTAttributedCharacterIterator.TextAttribute.GVT_FONTS;
 
@@ -1385,7 +1390,7 @@
                                Map           result) {
 
         // Unique value for text element - used for run identification.
-        result.put(TEXT_COMPOUND_ID, new Object());
+        result.put(TEXT_COMPOUND_ID, new SoftReference(element));
 
         Float fsFloat = TextUtilities.convertFontSize(element);
         float fontSize = fsFloat.floatValue();
@@ -1419,6 +1424,7 @@
         //  make a list of GVTFont objects
         Value val = CSSUtilities.getComputedStyle
             (element, SVGCSSEngine.FONT_FAMILY_INDEX);
+        List fontFamilyList = new ArrayList();
         List fontList = new ArrayList();
         int len = val.getLength();
         for (int i = 0; i < len; i++) {
@@ -1434,6 +1440,7 @@
                     ((UnresolvedFontFamily)fontFamily);
                 if (fontFamily == null) continue;
             }
+            fontFamilyList.add(fontFamily);
             if (fontFamily instanceof SVGFontFamily) {
                 SVGFontFamily svgFF = (SVGFontFamily)fontFamily;
                 if (svgFF.isComplex()) {
@@ -1444,6 +1451,10 @@
             fontList.add(ft);
         }
 
+        // Eventually this will need to go for SVG fonts it 
+        // holds hard ref to DOM.
+        result.put(GVT_FONT_FAMILIES, fontFamilyList);
+
         if (!ctx.isDynamic()) {
             // Only leave this in the map for dynamic documents.
             // Otherwise it will cause the whole DOM to stay when
@@ -2788,7 +2799,9 @@
             TextSpanLayout layout = run.getLayout();
             AttributedCharacterIterator aci = run.getACI();
             aci.first();
-            Element elem = (Element)aci.getAttribute(TEXT_COMPOUND_DELIMITER);
+            SoftReference sr;
+            sr =(SoftReference)aci.getAttribute(TEXT_COMPOUND_ID);
+            Element elem = (Element)sr.get();
 
             if (elem == null) continue;
             if (elems.contains(elem)) continue;
@@ -2833,7 +2846,9 @@
             TextSpanLayout layout = run.getLayout();
             AttributedCharacterIterator aci = run.getACI();
             aci.first();
-            Element elem = (Element)aci.getAttribute(TEXT_COMPOUND_DELIMITER);
+            SoftReference sr;
+            sr =(SoftReference)aci.getAttribute(TEXT_COMPOUND_ID);
+            Element elem = (Element)sr.get();
 
             if (elem == null) continue;
             if (reject.contains(elem)) continue;
@@ -2899,8 +2914,9 @@
             TextSpanLayout layout = run.getLayout();
             AttributedCharacterIterator aci = run.getACI();
             aci.first();
-            Element runElem = (Element)aci.getAttribute
-                (TEXT_COMPOUND_DELIMITER);
+            SoftReference sr;
+            sr =(SoftReference)aci.getAttribute(TEXT_COMPOUND_ID);
+            Element runElem = (Element)sr.get();
             if (runElem == null) continue;
 
             // Only consider runElem if it is sensitive.
@@ -2963,8 +2979,9 @@
             TextSpanLayout layout = run.getLayout();
             AttributedCharacterIterator aci = run.getACI();
             aci.first();
-            Element runElem = (Element)aci.getAttribute
-                (TEXT_COMPOUND_DELIMITER);
+            SoftReference sr;
+            sr =(SoftReference)aci.getAttribute(TEXT_COMPOUND_ID);
+            Element runElem = (Element)sr.get();
             if (runElem == null) continue;
 
             // Only consider runElem if it is sensitive.

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12BridgeEventSupport.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12BridgeEventSupport.java?rev=389774&r1=389773&r2=389774&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12BridgeEventSupport.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/bridge/svg12/SVG12BridgeEventSupport.java Wed Mar 29 04:02:42 2006
@@ -57,6 +57,8 @@
  */
 public abstract class SVG12BridgeEventSupport extends BridgeEventSupport {
 
+    protected SVG12BridgeEventSupport() {}
+
     /**
      * Is called only for the root element in order to dispatch GVT
      * events to the DOM.

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=389774&r1=389773&r2=389774&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 Wed Mar 29 04:02:42 2006
@@ -364,6 +364,8 @@
      */
     protected AttributedString buildAttributedString(BridgeContext ctx,
                                                      Element element) {
+        if (element == null) return null;
+
         List rgns = getRegions(ctx, element);
         AttributedString ret = getFlowDiv(ctx, element);
         if (ret == null) return ret;

Modified: xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/text/GVTAttributedCharacterIterator.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/text/GVTAttributedCharacterIterator.java?rev=389774&r1=389773&r2=389774&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/text/GVTAttributedCharacterIterator.java (original)
+++ xmlgraphics/batik/trunk/sources/org/apache/batik/gvt/text/GVTAttributedCharacterIterator.java Wed Mar 29 04:02:42 2006
@@ -323,6 +323,9 @@
         public final static TextAttribute HORIZONTAL_ORIENTATION_ANGLE =
                                           new TextAttribute("HORIZONTAL_ORIENTATION_ANGLE");
 
+        public final static TextAttribute GVT_FONT_FAMILIES =
+                       new TextAttribute("GVT_FONT_FAMILIES");
+
         public final static TextAttribute GVT_FONTS =
                                           new TextAttribute("GVT_FONTS");