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");