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 &lt;text&gt; 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: