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 de...@apache.org on 2004/11/05 02:34:33 UTC

cvs commit: xml-batik/sources/org/apache/batik/transcoder SVGAbstractTranscoder.java

deweese     2004/11/04 17:34:33

  Modified:    sources/org/apache/batik/css/engine CSSEngine.java
                        SVGCSSEngine.java
               sources/org/apache/batik/dom/svg
                        ExtensibleSVGDOMImplementation.java
               sources/org/apache/batik/transcoder
                        SVGAbstractTranscoder.java
  Log:
  1) Fixed width/height change onload bug in transcoders submitted
     by Simon Mieth.  Thanks!
  2) Fixed a bug with CSS shorthand properties not being set by presentation
     attributes.
  3) ExtensibleSVGDOMImplementation now allows 'extension' elements in
     the SVG Namespace (they are always lower priority than 'buit ins').
  
  Revision  Changes    Path
  1.41      +34 -13    xml-batik/sources/org/apache/batik/css/engine/CSSEngine.java
  
  Index: CSSEngine.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/css/engine/CSSEngine.java,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- CSSEngine.java	20 Aug 2004 19:29:47 -0000	1.40
  +++ CSSEngine.java	5 Nov 2004 01:34:33 -0000	1.41
  @@ -411,13 +411,18 @@
           }
   
           if (hints) {
  -            len = vm.length;
  -            nonCSSPresentationalHints = new HashSet();
  +            nonCSSPresentationalHints = new HashSet(vm.length+sm.length);
               nonCSSPresentationalHintsNamespaceURI = hintsNS;
  -            for (int i = len - 1; i >= 0; --i) {
  +            len = vm.length;
  +            for (int i = 0; i < len; i++) {
                   String pn = vm[i].getPropertyName();
                   nonCSSPresentationalHints.add(pn);
               }
  +            len = sm.length;
  +            for (int i = 0; i < len; i++) {
  +                String pn = sm[i].getPropertyName();
  +                nonCSSPresentationalHints.add(pn);
  +            }
           }
   
           if (cssContext.isDynamic() &&
  @@ -665,7 +670,7 @@
       public StyleMap getCascadedStyleMap(CSSStylableElement elt,
                                           String pseudo) {
           int props = getNumberOfProperties();
  -        StyleMap result = new StyleMap(props);
  +        final StyleMap result = new StyleMap(props);
   
           // Apply the user-agent style-sheet to the result.
           if (userAgentStyleSheet != null) {
  @@ -683,7 +688,28 @@
   
           element = elt;
           try {
  -        // Apply the non-CSS presentational hints to the result.
  +            // Apply the non-CSS presentational hints to the result.
  +            ShorthandManager.PropertyHandler ph =
  +                new ShorthandManager.PropertyHandler() {
  +                    public void property(String pname, LexicalUnit lu,
  +                                         boolean important) {
  +                        int idx = getPropertyIndex(pname);
  +                        if (idx != -1) {
  +                            ValueManager vm = valueManagers[idx];
  +                            Value v = vm.createValue(lu, CSSEngine.this);
  +                            putAuthorProperty(result, idx, v, important,
  +                                              StyleMap.NON_CSS_ORIGIN);
  +                            return;
  +                        }
  +                        idx = getShorthandIndex(pname);
  +                        if (idx == -1)
  +                            return; // Unknown property...
  +                        // Shorthand value
  +                        shorthandManagers[idx].setValues
  +                            (CSSEngine.this, this, lu, important);
  +                    }
  +                };
  +
               if (nonCSSPresentationalHints != null) {
                   NamedNodeMap attrs = elt.getAttributes();
                   int len = attrs.getLength();
  @@ -693,13 +719,8 @@
                       if (nonCSSPresentationalHints.contains(an)) {
                           try {
                               LexicalUnit lu;
  -                            int idx = getPropertyIndex(an);
  -                            lu = parser.parsePropertyValue
  -                                (attr.getNodeValue());
  -                            ValueManager vm = valueManagers[idx];
  -                            Value v = vm.createValue(lu, this);
  -                            putAuthorProperty(result, idx, v, false,
  -                                              StyleMap.NON_CSS_ORIGIN);
  +                            lu = parser.parsePropertyValue(attr.getNodeValue());
  +                            ph.property(an, lu, false);
                           } catch (Exception e) {
                               String m = e.getMessage();
                               if (m == null) m = "";
  
  
  
  1.8       +5 -13     xml-batik/sources/org/apache/batik/css/engine/SVGCSSEngine.java
  
  Index: SVGCSSEngine.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/css/engine/SVGCSSEngine.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGCSSEngine.java	18 Aug 2004 07:12:48 -0000	1.7
  +++ SVGCSSEngine.java	5 Nov 2004 01:34:33 -0000	1.8
  @@ -147,12 +147,8 @@
       private static ValueManager[] mergeArrays(ValueManager[] a1,
                                                 ValueManager[] a2) {
           ValueManager[] result = new ValueManager[a1.length + a2.length];
  -        for (int i = 0; i < a1.length; i++) {
  -            result[i] = a1[i];
  -        }
  -        for (int i = 0; i < a2.length; i++) {
  -            result[i + a1.length] = a2[i];
  -        }
  +        System.arraycopy(a1, 0, result, 0, a1.length);
  +        System.arraycopy(a2, 0, result, a1.length, a2.length);
           return result;
       }
   
  @@ -163,12 +159,8 @@
                                                     ShorthandManager[] a2) {
           ShorthandManager[] result =
               new ShorthandManager[a1.length + a2.length];
  -        for (int i = 0; i < a1.length; i++) {
  -            result[i] = a1[i];
  -        }
  -        for (int i = 0; i < a2.length; i++) {
  -            result[i + a1.length] = a2[i];
  -        }
  +        System.arraycopy(a1, 0, result, 0, a1.length);
  +        System.arraycopy(a2, 0, result, a1.length, a2.length);
           return result;
       }
   
  
  
  
  1.10      +14 -8     xml-batik/sources/org/apache/batik/dom/svg/ExtensibleSVGDOMImplementation.java
  
  Index: ExtensibleSVGDOMImplementation.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/svg/ExtensibleSVGDOMImplementation.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ExtensibleSVGDOMImplementation.java	18 Aug 2004 07:13:13 -0000	1.9
  +++ ExtensibleSVGDOMImplementation.java	5 Nov 2004 01:34:33 -0000	1.10
  @@ -203,14 +203,20 @@
           if (SVG_NAMESPACE_URI.equals(namespaceURI)) {
               String name = DOMUtilities.getLocalName(qualifiedName);
               ElementFactory ef = (ElementFactory)factories.get(name);
  -            if (ef == null) {
  -                throw document.createDOMException
  -                    (DOMException.NOT_FOUND_ERR,
  -                     "invalid.element",
  -                     new Object[] { namespaceURI,
  -                                    qualifiedName });
  +            if (ef != null) 
  +                return ef.create(DOMUtilities.getPrefix(qualifiedName), 
  +                                 document);
  +            if (customFactories != null) {
  +                ElementFactory cef;
  +                cef = (ElementFactory)customFactories.get(namespaceURI, name);
  +                if (cef != null)
  +                    return cef.create(DOMUtilities.getPrefix(qualifiedName),
  +                                      document);
               }
  -            return ef.create(DOMUtilities.getPrefix(qualifiedName), document);
  +
  +            throw document.createDOMException
  +                (DOMException.NOT_FOUND_ERR, "invalid.element",
  +                 new Object[] { namespaceURI, qualifiedName });
           }
           if (namespaceURI != null) {
               if (customFactories != null) {
  
  
  
  1.21      +13 -16    xml-batik/sources/org/apache/batik/transcoder/SVGAbstractTranscoder.java
  
  Index: SVGAbstractTranscoder.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/transcoder/SVGAbstractTranscoder.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- SVGAbstractTranscoder.java	18 Aug 2004 07:15:41 -0000	1.20
  +++ SVGAbstractTranscoder.java	5 Nov 2004 01:34:33 -0000	1.21
  @@ -198,15 +198,24 @@
                ((Boolean)hints.get(KEY_EXECUTE_ONLOAD)).booleanValue() &&
                BaseScriptingEnvironment.isDynamicDocument(svgDoc));
   
  -        if (isDynamic)
  -            ctx.setDynamicState(BridgeContext.DYNAMIC);
  -
           GraphicsNode gvtRoot;
           try {
  +            if (isDynamic)
  +                ctx.setDynamicState(BridgeContext.DYNAMIC);
  +
               gvtRoot = builder.build(ctx, svgDoc);
  +
  +            // dispatch an 'onload' event if needed
  +            if (ctx.isDynamic()) {
  +                BaseScriptingEnvironment se;
  +                se = new BaseScriptingEnvironment(ctx);
  +                se.loadScripts();
  +                se.dispatchSVGLoadEvent();
  +            }
           } catch (BridgeException ex) {
               throw new TranscoderException(ex);
           }
  +
           // get the 'width' and 'height' attributes of the SVG document
           float docWidth = (float)ctx.getDocumentSize().getWidth();
           float docHeight = (float)ctx.getDocumentSize().getHeight();
  @@ -260,18 +269,6 @@
               curTxf = new AffineTransform();
           } else {
               curTxf = Px;
  -        }
  -
  -        try {
  -            // dispatch an 'onload' event if needed
  -            if (ctx.isDynamic()) {
  -                BaseScriptingEnvironment se;
  -                se = new BaseScriptingEnvironment(ctx);
  -                se.loadScripts();
  -                se.dispatchSVGLoadEvent();
  -            }
  -        } catch (BridgeException ex) {
  -            throw new TranscoderException(ex);
           }
   
           this.root = gvtRoot;
  
  
  

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