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 2002/03/21 12:04:56 UTC
cvs commit: xml-batik/sources/org/apache/batik/bridge AbstractGraphicsNodeBridge.java BridgeUpdateHandler.java SVGShapeElementBridge.java
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:tkormann@apache.org">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:vincent.hardy@apache.org">Vincent Hardy</a>
* @author <a href="mailto:Thierry.Kormann@sophia.inria.fr">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:tkormann@apache.org">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: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org