tkormann 02/03/21 01:39:17 Modified: sources/org/apache/batik/bridge BridgeContext.java SVGFontUtilities.java Log: polish code Revision Changes Path 1.43 +153 -124 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.42 retrieving revision 1.43 diff -u -r1.42 -r1.43 --- BridgeContext.java 20 Mar 2002 16:34:43 -0000 1.42 +++ BridgeContext.java 21 Mar 2002 09:39:17 -0000 1.43 @@ -40,8 +40,8 @@ import org.apache.batik.gvt.TextPainter; import org.apache.batik.script.Interpreter; import org.apache.batik.script.InterpreterPool; -import org.apache.batik.util.Service; import org.apache.batik.util.SVGConstants; +import org.apache.batik.util.Service; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -66,7 +66,7 @@ * a SVG DOM tree such as the current viewport or the user agent. * * @author <a href="mailto:[EMAIL PROTECTED]">Thierry Kormann</a> - * @version $Id: BridgeContext.java,v 1.42 2002/03/20 16:34:43 tkormann Exp $ + * @version $Id: BridgeContext.java,v 1.43 2002/03/21 09:39:17 tkormann Exp $ */ public class BridgeContext implements ErrorConstants, CSSContext { @@ -88,11 +88,11 @@ protected Map interpreterMap = new HashMap(7); /** - * A hash map of all the font families already matched. This is + * A Map of all the font families already matched. This is * to reduce the number of instances of GVTFontFamilies and to * hopefully reduce the time taken to search for a matching SVG font. */ - private HashMap fontFamilyMap; + private Map fontFamilyMap; /** * The viewports. @@ -232,7 +232,33 @@ // end debug leak */ - // properties //////////////////////////////////// + /** + * Initializes the given document. + */ + protected void initializeDocument(Document document) { + SVGOMDocument doc = (SVGOMDocument)document; + CSSEngine eng = doc.getCSSEngine(); + if (eng == null) { + SVGDOMImplementation impl; + impl = (SVGDOMImplementation)doc.getImplementation(); + eng = impl.createCSSEngine(doc, this); + doc.setCSSEngine(eng); + eng.setMedia(userAgent.getMedia()); + String uri = userAgent.getUserStyleSheetURI(); + if (uri != null) { + try { + URL url = new URL(uri); + eng.setUserAgentStyleSheet + (eng.parseStyleSheet(url, "all")); + } catch (MalformedURLException e) { + userAgent.displayError(e); + } + } + eng.setAlternateStyleSheet(userAgent.getAlternateStyleSheet()); + } + } + + // properties //////////////////////////////////////////////////////////// /** * Sets the text painter that will be used by text nodes. This attributes @@ -246,24 +272,6 @@ } /** - * Returns the document this bridge context is dedicated to. - */ - public Document getDocument() { - return document; - } - - /** - * Returns the map of font families - */ - public HashMap getFontFamilyMap(){ - if (fontFamilyMap == null){ - fontFamilyMap = new HashMap(); - } - - return fontFamilyMap; - } - - /** * Returns the text painter that will be used be text nodes. */ public TextPainter getTextPainter() { @@ -271,10 +279,10 @@ } /** - * Returns the user agent of this bridge context. + * Returns the document this bridge context is dedicated to. */ - public UserAgent getUserAgent() { - return userAgent; + public Document getDocument() { + return document; } /** @@ -290,29 +298,29 @@ } /** - * Initializes the given document. + * Returns the map of font families */ - protected void initializeDocument(Document document) { - SVGOMDocument doc = (SVGOMDocument)document; - CSSEngine eng = doc.getCSSEngine(); - if (eng == null) { - SVGDOMImplementation impl; - impl = (SVGDOMImplementation)doc.getImplementation(); - eng = impl.createCSSEngine(doc, this); - doc.setCSSEngine(eng); - eng.setMedia(userAgent.getMedia()); - String uri = userAgent.getUserStyleSheetURI(); - if (uri != null) { - try { - URL url = new URL(uri); - eng.setUserAgentStyleSheet - (eng.parseStyleSheet(url, "all")); - } catch (MalformedURLException e) { - userAgent.displayError(e); - } - } - eng.setAlternateStyleSheet(userAgent.getAlternateStyleSheet()); + public Map getFontFamilyMap(){ + if (fontFamilyMap == null){ + fontFamilyMap = new HashMap(); } + return fontFamilyMap; + } + + /** + * Sets the map of font families to the specified value. + * + *@param fontFamilyMap the map of font families + */ + protected void setFontFamilyMap(Map fontFamilyMap) { + this.fontFamilyMap = fontFamilyMap; + } + + /** + * Returns the user agent of this bridge context. + */ + public UserAgent getUserAgent() { + return userAgent; } /** @@ -324,17 +332,17 @@ } /** - * Sets the GVT builder that uses this context. + * Returns the GVT builder that is currently used to build the GVT tree. */ - protected void setGVTBuilder(GVTBuilder gvtBuilder) { - this.gvtBuilder = gvtBuilder; + public GVTBuilder getGVTBuilder() { + return gvtBuilder; } /** - * Returns the GVT builder that is currently used to build the GVT tree. + * Sets the GVT builder that uses this context. */ - public GVTBuilder getGVTBuilder() { - return gvtBuilder; + protected void setGVTBuilder(GVTBuilder gvtBuilder) { + this.gvtBuilder = gvtBuilder; } /** @@ -345,6 +353,15 @@ } /** + * Sets the interpreter pool used to handle scripts to the + * specified interpreter pool. + * @param interpreterPool the interpreter pool + */ + protected void setInterpreterPool(InterpreterPool interpreterPool) { + this.interpreterPool = interpreterPool; + } + + /** * Returns a Interpreter for the specified language. * * @param language the scripting language @@ -362,15 +379,6 @@ } /** - * Sets the interpreter pool used to handle scripts to the - * specified interpreter pool. - * @param interpreterPool the interpreter pool - */ - protected void setInterpreterPool(InterpreterPool interpreterPool) { - this.interpreterPool = interpreterPool; - } - - /** * Returns the document loader used to load external documents. */ public DocumentLoader getDocumentLoader() { @@ -385,7 +393,56 @@ this.documentLoader = newDocumentLoader; } - // convenient methods + /** + * Returns the actual size of the document or null if the document + * has not been built yet. + */ + public Dimension2D getDocumentSize() { + return documentSize; + } + + /** + * Sets the size of the document to the specified dimension. + * + * @param d the actual size of the SVG document + */ + protected void setDocumentSize(Dimension2D d) { + this.documentSize = d; + } + + /** + * Returns true if the document is dynamic, false otherwise. + */ + public boolean isDynamic() { + return dynamic; + } + + /** + * Sets the document as a dynamic document. Call this method + * before the build phase (ie. before <tt>gvtBuilder.build(...)</tt>) + * otherwise, that will have no effect. + * + *@param b the document state + */ + public void setDynamic(boolean b) { + dynamic = b; + } + + /** + * Returns the update manager, if the bridge supports dynamic features. + */ + public UpdateManager getUpdateManager() { + return updateManager; + } + + /** + * Sets the update manager. + */ + protected void setUpdateManager(UpdateManager um) { + updateManager = um; + } + + // reference management ////////////////////////////////////////////////// /** * Returns the element referenced by the specified element by the @@ -419,27 +476,11 @@ } } - // methods to access to the current state of the bridge context - - /** - * Returns the actual size of the document or null if the document - * has not been built yet. - */ - public Dimension2D getDocumentSize() { - return documentSize; - } - - /** - * Sets the size of the document to the specified dimension. - * - * @param d the actual size of the SVG document - */ - protected void setDocumentSize(Dimension2D d) { - this.documentSize = d; - } + // Viewport ////////////////////////////////////////////////////////////// /** * Returns the viewport of the specified element. + * * @param e the element interested in its viewport */ public Viewport getViewport(Element e) { @@ -468,7 +509,8 @@ /** * Starts a new viewport from the specified element. - * @param e the element that starts the viewport + * + * @param e the element that defines a new viewport * @param viewport the viewport of the element */ public void openViewport(Element e, Viewport viewport) { @@ -491,41 +533,13 @@ } } - /** - * Returns true if the bridge should support dynamic SVG content, - * false otherwise. - */ - public boolean isDynamic() { - return dynamic; - } - - /** - * Sets the dynamic mode. - */ - public void setDynamic(boolean b) { - dynamic = b; - } - - /** - * Returns the update manager, if the bridge supports dynamic features. - */ - public UpdateManager getUpdateManager() { - return updateManager; - } - - /** - * Sets the update manager. - */ - protected void setUpdateManager(UpdateManager um) { - updateManager = um; - } - - // binding methods + // Bindings ////////////////////////////////////////////////////////////// /** * Binds the specified GraphicsNode to the specified Element. This method * automatically bind the graphics node to the element and the element to * the graphics node. + * * @param element the element to bind to the specified graphics node * @param node the graphics node to bind to the specified element */ @@ -540,6 +554,7 @@ /** * Removes the binding of the specified Element. + * * @param element the element to unbind */ public void unbind(Element element) { @@ -579,7 +594,7 @@ } } - // bridge support + // Bridge management ///////////////////////////////////////////////////// /** * Returns the bridge associated with the specified element. @@ -653,7 +668,7 @@ * @param bridge the bridge that manages the element */ public void putBridge(String namespaceURI, String localName, Bridge bridge) { - // debug + // start assert if (!(namespaceURI.equals(bridge.getNamespaceURI()) && localName.equals(bridge.getLocalName()))) { throw new Error("Invalid Bridge: "+ @@ -661,7 +676,7 @@ localName+"/"+bridge.getLocalName()+" "+ bridge.getClass()); } - + // end assert if (namespaceURIMap == null) { namespaceURIMap = new HashMap(); } @@ -708,11 +723,26 @@ } } - // dynamic support ///////////////////////////////////////////////////////// + // dynamic support //////////////////////////////////////////////////////// + /** + * The DOM EventListener to receive 'DOMAttrModified' event. + */ protected EventListener domAttrModifiedEventListener; + + /** + * The DOM EventListener to receive 'DOMNodeInserted' event. + */ protected EventListener domNodeInsertedEventListener; + + /** + * The DOM EventListener to receive 'DOMNodeRemoved' event. + */ protected EventListener domNodeRemovedEventListener; + + /** + * The CSSEngine listener to receive CSSEngineEvent. + */ protected CSSEngineListener cssPropertiesChangedListener; /** @@ -861,7 +891,7 @@ * Returns a lighter font-weight. */ public float getLighterFontWeight(float f) { - // !!! TODO: delegates to the UserAgent. + // <!> FIXME: delegates to the UserAgent. switch ((int)f) { case 100: return 100; case 200: return 100; @@ -881,7 +911,7 @@ * Returns a bolder font-weight. */ public float getBolderFontWeight(float f) { - // !!! TODO: delegates to the UserAgent. + // <!> FIXME: delegates to the UserAgent. switch ((int)f) { case 100: return 600; case 200: return 600; @@ -908,7 +938,7 @@ * Returns the medium font size. */ public float getMediumFontSize() { - // !!! TODO: delegates to the UserAgent. + // <!> FIXME: delegates to the UserAgent. return 9f * 25.4f / (72f * getPixelToMillimeters()); } @@ -928,9 +958,11 @@ return getViewport(elt).getHeight(); } - // bridge extensions support + // bridge extensions support ////////////////////////////////////////////// + + protected static List extensions = null; - /** + /** * Registers the bridges to handle SVG 1.0 elements. * * @param ctx the bridge context to initialize @@ -938,15 +970,12 @@ public static void registerSVGBridges(BridgeContext ctx) { UserAgent ua = ctx.getUserAgent(); Iterator iter = getBridgeExtensions().iterator(); - while(iter.hasNext()) { BridgeExtension be = (BridgeExtension)iter.next(); be.registerTags(ctx); ua.registerExtension(be); } } - - static List extensions = null; /** * Returns the extensions supported by this bridge context. 1.12 +13 -9 xml-batik/sources/org/apache/batik/bridge/SVGFontUtilities.java Index: SVGFontUtilities.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGFontUtilities.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- SVGFontUtilities.java 18 Mar 2002 10:28:19 -0000 1.11 +++ SVGFontUtilities.java 21 Mar 2002 09:39:17 -0000 1.12 @@ -8,28 +8,32 @@ package org.apache.batik.bridge; -import org.apache.batik.util.SVGConstants; +import java.util.Map; +import java.util.StringTokenizer; +import java.util.Vector; -import org.apache.batik.gvt.font.GVTFontFamily; -import org.apache.batik.gvt.font.UnresolvedFontFamily; -import org.apache.batik.dom.util.XLinkSupport; import org.apache.batik.dom.svg.SVGOMDocument; import org.apache.batik.dom.svg.XMLBaseSupport; +import org.apache.batik.dom.util.XLinkSupport; + +import org.apache.batik.gvt.font.GVTFontFamily; +import org.apache.batik.gvt.font.UnresolvedFontFamily; + +import org.apache.batik.util.SVGConstants; + import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; + import org.w3c.dom.svg.SVGDocument; -import java.util.HashMap; -import java.util.Vector; -import java.util.StringTokenizer; /** * Utility class for SVG fonts. * * @author <a href="mailto:[EMAIL PROTECTED]">Bella Robinson</a> - * @version $Id: SVGFontUtilities.java,v 1.11 2002/03/18 10:28:19 hillion Exp $ + * @version $Id: SVGFontUtilities.java,v 1.12 2002/03/21 09:39:17 tkormann Exp $ */ public abstract class SVGFontUtilities implements SVGConstants { @@ -64,7 +68,7 @@ // check fontFamilyMap to see if we have already created an // FontFamily that matches - HashMap fontFamilyMap = ctx.getFontFamilyMap(); + Map fontFamilyMap = ctx.getFontFamilyMap(); GVTFontFamily fontFamily = (GVTFontFamily)fontFamilyMap.get(fontKeyName); if (fontFamily != null) {
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]