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/04/23 19:10:14 UTC

cvs commit: xml-batik/sources/org/apache/batik/util SVGConstants.java

tkormann    02/04/23 10:10:14

  Modified:    resources/org/apache/batik/dom/svg/resources
                        Messages.properties
               sources/org/apache/batik/bridge
                        AbstractGraphicsNodeBridge.java
               sources/org/apache/batik/dom/svg SVGContext.java
                        SVGLocatableSupport.java SVGOMElement.java
               sources/org/apache/batik/util SVGConstants.java
  Log:
  - implement getTransformToElement, getNearestViewportElement, and
  getFarthestViewportElement
  
  Revision  Changes    Path
  1.4       +4 -0      xml-batik/resources/org/apache/batik/dom/svg/resources/Messages.properties
  
  Index: Messages.properties
  ===================================================================
  RCS file: /home/cvs/xml-batik/resources/org/apache/batik/dom/svg/resources/Messages.properties,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Messages.properties	18 Mar 2002 10:28:19 -0000	1.3
  +++ Messages.properties	23 Apr 2002 17:10:13 -0000	1.4
  @@ -25,3 +25,7 @@
   
   css.parser.access = \
   The CSS parser class '{0}' cannot be accessed.
  +
  +noninvertiblematrix = \
  +The matrix is not invertible.
  +
  
  
  
  1.23      +9 -1      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.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- AbstractGraphicsNodeBridge.java	22 Apr 2002 14:59:44 -0000	1.22
  +++ AbstractGraphicsNodeBridge.java	23 Apr 2002 17:10:13 -0000	1.23
  @@ -44,7 +44,7 @@
    * </ul>
    *
    * @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
  - * @version $Id: AbstractGraphicsNodeBridge.java,v 1.22 2002/04/22 14:59:44 tkormann Exp $
  + * @version $Id: AbstractGraphicsNodeBridge.java,v 1.23 2002/04/23 17:10:13 tkormann Exp $
    */
   public abstract class AbstractGraphicsNodeBridge extends AbstractSVGBridge
       implements SVGContext, 
  @@ -294,6 +294,14 @@
               }
           }
           return ctm;
  +    }
  +
  +    /**
  +     * Returns the global transformation matrix from the current
  +     * element to the root.
  +     */
  +    public AffineTransform getGlobalTransform() {
  +        return node.getGlobalTransform();
       }
   
       /**
  
  
  
  1.8       +7 -1      xml-batik/sources/org/apache/batik/dom/svg/SVGContext.java
  
  Index: SVGContext.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/svg/SVGContext.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGContext.java	15 Apr 2002 10:16:12 -0000	1.7
  +++ SVGContext.java	23 Apr 2002 17:10:14 -0000	1.8
  @@ -15,7 +15,7 @@
    * This interface is the placeholder for SVG application informations.
    *
    * @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
  - * @version $Id: SVGContext.java,v 1.7 2002/04/15 10:16:12 hillion Exp $
  + * @version $Id: SVGContext.java,v 1.8 2002/04/23 17:10:14 tkormann Exp $
    */
   public interface SVGContext {
   
  @@ -38,6 +38,12 @@
        * the viewport coordinate system for the nearestViewportElement.
        */
       AffineTransform getCTM();
  +
  +    /**
  +     * Returns the global transformation matrix from the current
  +     * element to the root.
  +     */
  +    AffineTransform getGlobalTransform();
   
       /**
        * Returns the width of the viewport which directly contains the
  
  
  
  1.4       +44 -7     xml-batik/sources/org/apache/batik/dom/svg/SVGLocatableSupport.java
  
  Index: SVGLocatableSupport.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/svg/SVGLocatableSupport.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SVGLocatableSupport.java	15 Apr 2002 10:16:12 -0000	1.3
  +++ SVGLocatableSupport.java	23 Apr 2002 17:10:14 -0000	1.4
  @@ -9,11 +9,16 @@
   package org.apache.batik.dom.svg;
   
   import java.awt.geom.AffineTransform;
  +import java.awt.geom.NoninvertibleTransformException;
  +
  +import org.apache.batik.css.engine.SVGCSSEngine;
   
   import org.w3c.dom.DOMException;
   import org.w3c.dom.Element;
  +
   import org.w3c.dom.svg.SVGElement;
   import org.w3c.dom.svg.SVGException;
  +import org.w3c.dom.svg.SVGFitToViewBox;
   import org.w3c.dom.svg.SVGMatrix;
   import org.w3c.dom.svg.SVGRect;
   
  @@ -21,7 +26,7 @@
    * This class provides support for the SVGLocatable interface.
    *
    * @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
  - * @version $Id: SVGLocatableSupport.java,v 1.3 2002/04/15 10:16:12 hillion Exp $
  + * @version $Id: SVGLocatableSupport.java,v 1.4 2002/04/23 17:10:14 tkormann Exp $
    */
   public class SVGLocatableSupport {
       /**
  @@ -34,8 +39,15 @@
        * To implement {@link
        * org.w3c.dom.svg.SVGLocatable#getNearestViewportElement()}.
        */
  -    public static SVGElement getNearestViewportElement(Element elt) {
  -	throw new RuntimeException(" !!! TODO: getNearestViewportElement()");
  +    public static SVGElement getNearestViewportElement(Element e) {
  +        Element elt = e;
  +        while (elt != null) {
  +            elt = SVGCSSEngine.getParentCSSStylableElement(elt);
  +            if (elt instanceof SVGFitToViewBox) {
  +                break;
  +            }
  +        }
  +        return (SVGElement)elt;
       }
   
       /**
  @@ -43,7 +55,7 @@
        * org.w3c.dom.svg.SVGLocatable#getFarthestViewportElement()}.
        */
       public static SVGElement getFarthestViewportElement(Element elt) {
  -	throw new RuntimeException(" !!! TODO: getFarthestViewportElement()");
  +        return (SVGElement)elt.getOwnerDocument().getDocumentElement();
       }
   
       /**
  @@ -93,8 +105,8 @@
           return new AbstractSVGMatrix() {
                   protected AffineTransform getAffineTransform() {
                       return svgelt.getSVGContext().getCTM();
  -                }
  -            };
  +            }
  +        };
       }
   
       /**
  @@ -112,6 +124,31 @@
       public static SVGMatrix getTransformToElement(Element elt,
                                                     SVGElement element)
   	throws SVGException {
  -	throw new RuntimeException(" !!! TODO: getTransformToElement()");
  +        final SVGOMElement currentElt = (SVGOMElement)elt;
  +        final SVGOMElement targetElt = (SVGOMElement)element;
  +        return new AbstractSVGMatrix() {
  +                protected AffineTransform getAffineTransform() {
  +                    AffineTransform cat = 
  +                        currentElt.getSVGContext().getGlobalTransform();
  +                    if (cat == null) {
  +                        cat = new AffineTransform();
  +                    }
  +                    AffineTransform tat = 
  +                        targetElt.getSVGContext().getGlobalTransform();
  +                    if (tat == null) {
  +                        tat = new AffineTransform();
  +                    }
  +                    AffineTransform at = new AffineTransform(cat);
  +                    try {
  +                        at.preConcatenate(tat.createInverse());
  +                        return at;
  +                    } catch (NoninvertibleTransformException ex) {
  +                        throw currentElt.createSVGException
  +                            (SVGException.SVG_MATRIX_NOT_INVERTABLE,
  +                             "noninvertiblematrix",
  +                             null);
  +                    }
  +                }
  +            };
       }
   }
  
  
  
  1.13      +16 -1     xml-batik/sources/org/apache/batik/dom/svg/SVGOMElement.java
  
  Index: SVGOMElement.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/svg/SVGOMElement.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- SVGOMElement.java	15 Apr 2002 10:16:13 -0000	1.12
  +++ SVGOMElement.java	23 Apr 2002 17:10:14 -0000	1.13
  @@ -27,6 +27,7 @@
   import org.w3c.dom.svg.SVGAnimatedNumber;
   import org.w3c.dom.svg.SVGAnimatedString;
   import org.w3c.dom.svg.SVGElement;
  +import org.w3c.dom.svg.SVGException;
   import org.w3c.dom.svg.SVGFitToViewBox;
   import org.w3c.dom.svg.SVGSVGElement;
   
  @@ -34,7 +35,7 @@
    * This class implements the {@link SVGElement} interface.
    *
    * @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
  - * @version $Id: SVGOMElement.java,v 1.12 2002/04/15 10:16:13 hillion Exp $
  + * @version $Id: SVGOMElement.java,v 1.13 2002/04/23 17:10:14 tkormann Exp $
    */
   public abstract class SVGOMElement
       extends    AbstractElement
  @@ -188,6 +189,20 @@
       }
   
       // ExtendedNode //////////////////////////////////////////////////
  +
  +    /**
  +     * Creates an SVGException with the appropriate error message.
  +     */
  +    public SVGException createSVGException(short type, 
  +                                           String key, 
  +                                           Object [] args) {
  +        try {
  +            return new SVGOMException
  +                (type, getCurrentDocument().formatMessage(key, args));
  +        } catch (Exception e) {
  +            return new SVGOMException(type, key);
  +        }
  +    }
   
       /**
        * Tests whether this node is readonly.
  
  
  
  1.64      +199 -20   xml-batik/sources/org/apache/batik/util/SVGConstants.java
  
  Index: SVGConstants.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/util/SVGConstants.java,v
  retrieving revision 1.63
  retrieving revision 1.64
  diff -u -r1.63 -r1.64
  --- SVGConstants.java	15 Apr 2002 10:16:17 -0000	1.63
  +++ SVGConstants.java	23 Apr 2002 17:10:14 -0000	1.64
  @@ -14,7 +14,7 @@
    * @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
    * @author <a href="vincent.hardy@eng.sun.com">Vincent Hardy</a>
    * @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
  - * @version $Id: SVGConstants.java,v 1.63 2002/04/15 10:16:17 hillion Exp $
  + * @version $Id: SVGConstants.java,v 1.64 2002/04/23 17:10:14 tkormann Exp $
    */
   public interface SVGConstants extends CSSConstants {
   
  @@ -34,6 +34,204 @@
       String SVG_VERSION =
           "1.0";
   
  +    //////////////////////////////////////////////////////////////////////////
  +    // Events type and attributes
  +    //////////////////////////////////////////////////////////////////////////
  +
  +    /**
  +     * The event type for MouseEvent.
  +     */
  +    String SVG_MOUSEEVENTS_EVENT_TYPE = "MouseEvents";
  +
  +    /**
  +     * The event type for UIEvent.
  +     */
  +    String SVG_UIEVENTS_EVENT_TYPE = "UIEvents";
  +
  +    /**
  +     * The event type for SVGEvent.
  +     */
  +    String SVG_SVGEVENTS_EVENT_TYPE = "SVGEvents";
  +
  +    // ---------------------------------------------------------------------
  +
  +    /**
  +     * The event type for 'click' MouseEvent.
  +     */
  +    String SVG_CLICK_EVENT_TYPE = "click";
  +
  +    /**
  +     * The event type for 'mouseup' MouseEvent.
  +     */
  +    String SVG_MOUSEUP_EVENT_TYPE = "mouseup";
  +
  +    /**
  +     * The event type for 'mousedown' MouseEvent.
  +     */
  +    String SVG_MOUSEDOWN_EVENT_TYPE = "mousedown";
  +
  +    /**
  +     * The event type for 'mousemove' MouseEvent.
  +     */
  +    String SVG_MOUSEMOVE_EVENT_TYPE = "mousemove";
  +
  +    /**
  +     * The event type for 'mouseout' MouseEvent.
  +     */
  +    String SVG_MOUSEOUT_EVENT_TYPE = "mouseout";
  +
  +    /**
  +     * The event type for 'mouseover' MouseEvent.
  +     */
  +    String SVG_MOUSEOVER_EVENT_TYPE = "mouseover";
  +
  +    /**
  +     * The event type for 'DOMFocusIn' UIEvent.
  +     */
  +    String SVG_DOMFOCUSIN_EVENT_TYPE = "DOMFocusIn";
  +
  +    /**
  +     * The event type for 'DOMFocusOut' UIEvent.
  +     */
  +    String SVG_DOMFOCUSOUT_EVENT_TYPE = "DOMFocusOut";
  +
  +    /**
  +     * The event type for 'DOMActivate' UIEvent.
  +     */
  +    String SVG_DOMACTIVATE_EVENT_TYPE = "DOMActivate";
  +
  +    /**
  +     * The event type for 'SVGLoad' SVGEvent.
  +     */
  +    String SVG_SVGLOAD_EVENT_TYPE = "SVGLoad";
  +
  +    /**
  +     * The event type for 'SVGUnload' SVGEvent.
  +     */
  +    String SVG_SVGUNLOAD_EVENT_TYPE = "SVGUnload";
  +
  +    /**
  +     * The event type for 'SVGAbort' SVGEvent.
  +     */
  +    String SVG_SVGABORT_EVENT_TYPE = "SVGAbort";
  +
  +    /**
  +     * The event type for 'SVGError' SVGEvent.
  +     */
  +    String SVG_SVGERROR_EVENT_TYPE = "SVGError";
  +
  +    /**
  +     * The event type for 'SVGResize' SVGEvent.
  +     */
  +    String SVG_SVGRESIZE_EVENT_TYPE = "SVGResize";
  +
  +    /**
  +     * The event type for 'SVGScroll' SVGEvent.
  +     */
  +    String SVG_SVGSCROLL_EVENT_TYPE = "SVGScroll";
  +
  +    /**
  +     * The event type for 'SVGZoom' SVGEvent.
  +     */
  +    String SVG_SVGZOOM_EVENT_TYPE = "SVGZoom";
  +
  +    // ---------------------------------------------------------------------
  +
  +    /**
  +     * The 'onabort' attribute name of type SVGEvents.
  +     */
  +    String SVG_ONABORT_ATTRIBUTE = "onabort";
  +
  +    /**
  +     * The 'onabort' attribute name of type SVGEvents.
  +     */
  +    String SVG_ONACTIVATE_ATTRIBUTE = "onactivate";
  +
  +    /**
  +     * The 'onbegin' attribute name of type SVGEvents.
  +     */
  +    String SVG_ONBEGIN_ATTRIBUTE = "onbegin";
  +
  +    /**
  +     * The 'onclick' attribute name of type MouseEvents.
  +     */
  +    String SVG_ONCLICK_ATTRIBUTE = "onclick";
  +
  +    /**
  +     * The 'onend' attribute name of type SVGEvents.
  +     */
  +    String SVG_ONEND_ATTRIBUTE = "onend";
  +
  +    /**
  +     * The 'onerror' attribute name of type SVGEvents.
  +     */
  +    String SVG_ONERROR_ATTRIBUTE = "onerror";
  +
  +    /**
  +     * The 'onfocusin' attribute name of type UIEvents.
  +     */
  +    String SVG_ONFOCUSIN_ATTRIBUTE = "onfocusin";
  +
  +    /**
  +     * The 'onfocusout' attribute name of type UIEvents.
  +     */
  +    String SVG_ONFOCUSOUT_ATTRIBUTE = "onfocusout";
  +
  +    /**
  +     * The 'onload' attribute name of type SVGEvents.
  +     */
  +    String SVG_ONLOAD_ATTRIBUTE = "onload";
  +
  +    /**
  +     * The 'onmousedown' attribute name of type MouseEvents.
  +     */
  +    String SVG_ONMOUSEDOWN_ATTRIBUTE = "onmousedown";
  +
  +    /**
  +     * The 'onmousemove' attribute name of type MouseEvents.
  +     */
  +    String SVG_ONMOUSEMOVE_ATTRIBUTE = "onmousemove";
  +
  +    /**
  +     * The 'onmouseout' attribute name of type MouseEvents.
  +     */
  +    String SVG_ONMOUSEOUT_ATTRIBUTE = "onmouseout";
  +
  +    /**
  +     * The 'onmouseover' attribute name of type MouseEvents.
  +     */
  +    String SVG_ONMOUSEOVER_ATTRIBUTE = "onmouseover";
  +
  +    /**
  +     * The 'onmouseup' attribute name of type MouseEvents.
  +     */
  +    String SVG_ONMOUSEUP_ATTRIBUTE = "onmouseup";
  +
  +    /**
  +     * The 'onrepeat' attribute name of type SVGEvents.
  +     */
  +    String SVG_ONREPEAT_ATTRIBUTE = "onrepeat";
  +
  +    /**
  +     * The 'onresize' attribute name of type SVGEvents.
  +     */
  +    String SVG_ONRESIZE_ATTRIBUTE = "onresize";
  +
  +    /**
  +     * The 'onscroll' attribute name of type SVGEvents.
  +     */
  +    String SVG_ONSCROLL_ATTRIBUTE = "onscroll";
  + 
  +    /**
  +     * The 'onunload' attribute name of type SVGEvents.
  +     */
  +    String SVG_ONUNLOAD_ATTRIBUTE = "onunload";
  +
  +    /**
  +     * The 'onzoom' attribute name of type SVGEvents.
  +     */
  +    String SVG_ONZOOM_ATTRIBUTE = "onzoom";
  +
       /////////////////////////////////////////////////////////////////////////
       // SVG features
       /////////////////////////////////////////////////////////////////////////
  @@ -225,25 +423,6 @@
       String SVG_OFFSET_ATTRIBUTE = "offset";
       String SVG_OPACITY_ATTRIBUTE = CSS_OPACITY_PROPERTY;
       String SVG_OPERATOR_ATTRIBUTE = "operator";
  -    String SVG_ONABORT_ATTRIBUTE = "onabort";
  -    String SVG_ONACTIVATE_ATTRIBUTE = "onactivate";
  -    String SVG_ONBEGIN_ATTRIBUTE = "onbegin";
  -    String SVG_ONCLICK_ATTRIBUTE = "onclick";
  -    String SVG_ONEND_ATTRIBUTE = "onend";
  -    String SVG_ONERROR_ATTRIBUTE = "onerror";
  -    String SVG_ONFOCUSIN_ATTRIBUTE = "onfocusin";
  -    String SVG_ONFOCUSOUT_ATTRIBUTE = "onfocusout";
  -    String SVG_ONLOAD_ATTRIBUTE = "onload";
  -    String SVG_ONMOUSEDOWN_ATTRIBUTE = "onmousedown";
  -    String SVG_ONMOUSEMOVE_ATTRIBUTE = "onmousemove";
  -    String SVG_ONMOUSEOUT_ATTRIBUTE = "onmouseout";
  -    String SVG_ONMOUSEOVER_ATTRIBUTE = "onmouseover";
  -    String SVG_ONMOUSEUP_ATTRIBUTE = "onmouseup";
  -    String SVG_ONREPEAT_ATTRIBUTE = "onrepeat";
  -    String SVG_ONRESIZE_ATTRIBUTE = "onresize";
  -    String SVG_ONSCROLL_ATTRIBUTE = "onscroll";
  -    String SVG_ONUNLOAD_ATTRIBUTE = "onunload";
  -    String SVG_ONZOOM_ATTRIBUTE = "onzoom";
       String SVG_ORDER_ATTRIBUTE = "order";
       String SVG_ORDER_X_ATTRIBUTE = "orderX";
       String SVG_ORDER_Y_ATTRIBUTE = "orderY";
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org