tkormann 02/03/21 03:04:56 Modified: sources/org/apache/batik/bridge AbstractGraphicsNodeBridge.java BridgeUpdateHandler.java SVGShapeElementBridge.java Log: clean some code fix getBBox (I am still not sure it's the correct behavior - spec unclear) Revision Changes Path 1.18 +36 -6 xml-batik/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java Index: AbstractGraphicsNodeBridge.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- AbstractGraphicsNodeBridge.java 20 Mar 2002 16:34:43 -0000 1.17 +++ AbstractGraphicsNodeBridge.java 21 Mar 2002 11:04:56 -0000 1.18 @@ -43,7 +43,7 @@ * </ul> * * @author <a href="mailto:[EMAIL PROTECTED]">Thierry Kormann</a> - * @version $Id: AbstractGraphicsNodeBridge.java,v 1.17 2002/03/20 16:34:43 tkormann Exp $ + * @version $Id: AbstractGraphicsNodeBridge.java,v 1.18 2002/03/21 11:04:56 tkormann Exp $ */ public abstract class AbstractGraphicsNodeBridge extends AbstractSVGBridge implements SVGContext, @@ -183,12 +183,23 @@ } /** + * Disposes this BridgeUpdateHandler and releases all resources. + */ + public void dispose() { + SVGOMElement elt = (SVGOMElement)e; + elt.setSVGContext(null); + ctx.unbind(e); + } + + + /** * Disposes all resources related to the specified node and its subtree */ - protected void disposeTree(Node node) { + static void disposeTree(Node node) { if (node instanceof SVGOMElement) { - ((SVGOMElement)node).setSVGContext(null); - ctx.unbind((Element)node); + SVGOMElement elt = (SVGOMElement)node; + BridgeUpdateHandler h = (BridgeUpdateHandler)elt.getSVGContext(); + h.dispose(); } for (Node n = node.getFirstChild(); n != null; n = n.getNextSibling()) { disposeTree(n); @@ -247,7 +258,9 @@ * stroke-width and filter effects). */ public Rectangle2D getBBox() { - return node.getTransformedPrimitiveBounds(null); + AffineTransform ctm = node.getGlobalTransform(); + Rectangle2D bounds = node.getPrimitiveBounds(); + return ctm.createTransformedShape(bounds).getBounds2D(); } /** @@ -256,6 +269,23 @@ * the viewport coordinate system for the nearestViewportElement. */ public AffineTransform getCTM() { - throw new Error("Not yet implemented"); + GraphicsNode gn = node; + AffineTransform ctm = new AffineTransform(); + Element elt = e; + while (elt != null) { + AffineTransform gnT = gn.getTransform(); + if (gnT != null) { + ctm.preConcatenate(gnT); + } + if (elt.getNamespaceURI().equals(SVG_NAMESPACE_URI) && + (elt.getLocalName().equals(SVG_SVG_TAG) || + elt.getLocalName().equals(SVG_SYMBOL_TAG))) { + return ctm; + } else { + elt = (Element)elt.getParentNode(); + gn = gn.getParent(); + } + } + return null; } } 1.4 +5 -1 xml-batik/sources/org/apache/batik/bridge/BridgeUpdateHandler.java Index: BridgeUpdateHandler.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/BridgeUpdateHandler.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- BridgeUpdateHandler.java 20 Mar 2002 16:34:43 -0000 1.3 +++ BridgeUpdateHandler.java 21 Mar 2002 11:04:56 -0000 1.4 @@ -16,7 +16,7 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a> * @author <a href="mailto:[EMAIL PROTECTED]">Thierry Kormann</a> - * @version $Id: BridgeUpdateHandler.java,v 1.3 2002/03/20 16:34:43 tkormann Exp $ + * @version $Id: BridgeUpdateHandler.java,v 1.4 2002/03/21 11:04:56 tkormann Exp $ */ public interface BridgeUpdateHandler { @@ -40,4 +40,8 @@ */ void handleCSSEngineEvent(CSSEngineEvent evt); + /** + * Disposes this BridgeUpdateHandler and releases all resources. + */ + void dispose(); } 1.17 +27 -26 xml-batik/sources/org/apache/batik/bridge/SVGShapeElementBridge.java Index: SVGShapeElementBridge.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGShapeElementBridge.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- SVGShapeElementBridge.java 20 Mar 2002 16:34:43 -0000 1.16 +++ SVGShapeElementBridge.java 21 Mar 2002 11:04:56 -0000 1.17 @@ -8,32 +8,31 @@ package org.apache.batik.bridge; +import java.awt.Paint; import java.awt.RenderingHints; +import java.awt.Shape; + import java.util.Map; import org.apache.batik.css.engine.CSSEngineEvent; import org.apache.batik.css.engine.SVGCSSEngine; +import org.apache.batik.gvt.CompositeShapePainter; +import org.apache.batik.gvt.FillShapePainter; import org.apache.batik.gvt.GraphicsNode; import org.apache.batik.gvt.ShapeNode; import org.apache.batik.gvt.ShapePainter; +import org.apache.batik.gvt.StrokeShapePainter; import org.w3c.dom.Element; -import org.apache.batik.gvt.CompositeShapePainter; -import org.apache.batik.gvt.FillShapePainter; -import org.apache.batik.gvt.StrokeShapePainter; -import java.awt.Paint; -import java.awt.Shape; - /** * The base bridge class for shapes. Subclasses bridge <tt>ShapeNode</tt>. * * @author <a href="mailto:[EMAIL PROTECTED]">Thierry Kormann</a> - * @version $Id: SVGShapeElementBridge.java,v 1.16 2002/03/20 16:34:43 tkormann Exp $ + * @version $Id: SVGShapeElementBridge.java,v 1.17 2002/03/21 11:04:56 tkormann Exp $ */ -public abstract class SVGShapeElementBridge - extends AbstractGraphicsNodeBridge { +public abstract class SVGShapeElementBridge extends AbstractGraphicsNodeBridge { /** * Constructs a new bridge for SVG shapes. @@ -175,23 +174,25 @@ shapeNode.setShapePainter(createShapePainter(ctx, e, shapeNode)); } break; - } case SVGCSSEngine.SHAPE_RENDERING_INDEX: { - RenderingHints hints = node.getRenderingHints(); - hints = CSSUtilities.convertShapeRendering(e, hints); - if (hints != null) { - node.setRenderingHints(hints); - } - break; - } case SVGCSSEngine.COLOR_RENDERING_INDEX: { - RenderingHints hints = node.getRenderingHints(); - hints = CSSUtilities.convertColorRendering(e, hints); - if (hints != null) { - node.setRenderingHints(hints); - } - break; - } default: { - super.handleCSSPropertyChanged(property); - } + } + case SVGCSSEngine.SHAPE_RENDERING_INDEX: { + RenderingHints hints = node.getRenderingHints(); + hints = CSSUtilities.convertShapeRendering(e, hints); + if (hints != null) { + node.setRenderingHints(hints); + } + break; + } + case SVGCSSEngine.COLOR_RENDERING_INDEX: { + RenderingHints hints = node.getRenderingHints(); + hints = CSSUtilities.convertColorRendering(e, hints); + if (hints != null) { + node.setRenderingHints(hints); + } + break; + } + default: + super.handleCSSPropertyChanged(property); } } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]