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