You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by tk...@apache.org on 2001/01/12 14:36:16 UTC
cvs commit: xml-batik/sources/org/apache/batik/refimpl/bridge SVGTextElementBridge.java
tkormann 01/01/12 05:36:16
Modified: resources/org/apache/batik/refimpl/bridge/resources
Messages.properties
sources/org/apache/batik/refimpl/bridge
SVGTextElementBridge.java
Log:
add support external tref in text element
Revision Changes Path
1.23 +8 -0 xml-batik/resources/org/apache/batik/refimpl/bridge/resources/Messages.properties
Index: Messages.properties
===================================================================
RCS file: /home/cvs/xml-batik/resources/org/apache/batik/refimpl/bridge/resources/Messages.properties,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- Messages.properties 2001/01/05 15:49:16 1.22
+++ Messages.properties 2001/01/12 13:36:16 1.23
@@ -337,6 +337,14 @@
clipPath.units.invalid = \
The value "{0}" of the attribute "{1}" is not valid for <clipPath>
+##### <text> #####
+
+tref.xlinkHref.badURL = \
+Invalid or bad URL on the element <tref>
+
+
+
+
1.31 +36 -5 xml-batik/sources/org/apache/batik/refimpl/bridge/SVGTextElementBridge.java
Index: SVGTextElementBridge.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/refimpl/bridge/SVGTextElementBridge.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- SVGTextElementBridge.java 2001/01/05 17:05:10 1.30
+++ SVGTextElementBridge.java 2001/01/12 13:36:16 1.31
@@ -18,6 +18,8 @@
import java.awt.font.TextAttribute;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.io.StringReader;
@@ -31,18 +33,22 @@
import java.util.HashMap;
import java.util.Map;
+import org.apache.batik.bridge.BridgeContext;
import org.apache.batik.bridge.BridgeMutationEvent;
+import org.apache.batik.bridge.DocumentLoader;
import org.apache.batik.bridge.GraphicsNodeBridge;
-import org.apache.batik.bridge.BridgeContext;
+import org.apache.batik.bridge.IllegalAttributeValueException;
+import org.apache.batik.dom.svg.SVGOMDocument;
import org.apache.batik.dom.util.XLinkSupport;
import org.apache.batik.dom.util.XMLSupport;
import org.apache.batik.gvt.GraphicsNode;
import org.apache.batik.gvt.GraphicsNodeRenderContext;
import org.apache.batik.gvt.TextNode;
-import org.apache.batik.gvt.filter.Filter;
import org.apache.batik.gvt.filter.Clip;
+import org.apache.batik.gvt.filter.Filter;
import org.apache.batik.gvt.filter.Mask;
import org.apache.batik.gvt.text.GVTAttributedCharacterIterator;
+import org.apache.batik.refimpl.bridge.resources.Messages;
import org.apache.batik.util.SVGConstants;
import org.apache.batik.util.UnitProcessor;
@@ -54,12 +60,13 @@
import org.w3c.dom.css.CSSValue;
import org.w3c.dom.css.CSSValueList;
import org.w3c.dom.svg.SVGElement;
+import org.w3c.dom.svg.SVGDocument;
/**
* A factory for the <text> SVG element.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: SVGTextElementBridge.java,v 1.30 2001/01/05 17:05:10 billh Exp $
+ * @version $Id: SVGTextElementBridge.java,v 1.31 2001/01/12 13:36:16 tkormann Exp $
*/
public class SVGTextElementBridge implements GraphicsNodeBridge, SVGConstants {
protected final static Map fonts = new HashMap(11);
@@ -143,7 +150,7 @@
return result;
}
- public void buildGraphicsNode(GraphicsNode node,
+ public void buildGraphicsNode(GraphicsNode node,
BridgeContext ctx,
Element element) {
@@ -295,7 +302,30 @@
node,
false));
} else if (n.getLocalName().equals("tref")) {
- s = XLinkSupport.getXLinkHref((Element)n);
+ try {
+ String uriStr = XLinkSupport.getXLinkHref((Element)n);
+ SVGDocument svgDoc =
+ (SVGDocument)element.getOwnerDocument();
+ URL baseURL = ((SVGOMDocument)svgDoc).getURLObject();
+ URL url = new URL(baseURL, uriStr);
+
+ DocumentLoader loader = ctx.getDocumentLoader();
+ URIResolver resolver = new URIResolver(svgDoc, loader);
+ Element ref = (Element)resolver.getNode(url.toString());
+ s = getElementContent(ref);
+ AttributedString as;
+ Map map = getAttributeMap(ctx, (Element)n, node);
+ as = createAttributedString(s, map, preserve, top,
+ first, last);
+ if (as != null) {
+ result.add(as);
+ }
+ } catch(MalformedURLException ex) {
+ throw new IllegalAttributeValueException(
+ Messages.formatMessage("tref.xlinkHref.badURL", null));
+ } catch (Exception ex) { /* Nothing to do */ }
+ /*
+ s = XLinkSupport.getXLinkHref((Element)n);
if (s.startsWith("#")) {
Document doc = n.getOwnerDocument();
Element ref = doc.getElementById(s.substring(1));
@@ -310,6 +340,7 @@
} else {
System.out.println(" !!! <tref> Non local URI");
}
+ */
}
break;
case Node.TEXT_NODE: