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 hi...@apache.org on 2002/06/10 16:04:24 UTC

cvs commit: xml-batik/test-resources/org/apache/batik/css/dom bug9740-1.css bug9740-2.css bug9740.svg unitTesting.xml

hillion     2002/06/10 07:04:24

  Modified:    sources/org/apache/batik/css/dom CSSOMSVGComputedStyle.java
               sources/org/apache/batik/css/engine CSSEngine.java
               test-resources/org/apache/batik/css/dom unitTesting.xml
  Added:       test-resources/org/apache/batik/css/dom bug9740-1.css
                        bug9740-2.css bug9740.svg
  Log:
  Fixed bug #9740.
  
  Revision  Changes    Path
  1.2       +2 -2      xml-batik/sources/org/apache/batik/css/dom/CSSOMSVGComputedStyle.java
  
  Index: CSSOMSVGComputedStyle.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/css/dom/CSSOMSVGComputedStyle.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- CSSOMSVGComputedStyle.java	9 Apr 2002 16:27:18 -0000	1.1
  +++ CSSOMSVGComputedStyle.java	10 Jun 2002 14:04:23 -0000	1.2
  @@ -24,7 +24,7 @@
    * This class represents the computed style of an SVG element.
    *
    * @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
  - * @version $Id: CSSOMSVGComputedStyle.java,v 1.1 2002/04/09 16:27:18 hillion Exp $
  + * @version $Id: CSSOMSVGComputedStyle.java,v 1.2 2002/06/10 14:04:23 hillion Exp $
    */
   public class CSSOMSVGComputedStyle extends CSSOMComputedStyle {
       
  @@ -95,7 +95,7 @@
       /**
        * To manage a computed paint CSSValue.
        */
  -    protected class ComputedCSSPaintValue
  +    public class ComputedCSSPaintValue
           extends CSSOMSVGPaint
           implements CSSOMSVGPaint.ValueProvider {
           
  
  
  
  1.14      +60 -15    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.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- CSSEngine.java	23 May 2002 09:01:36 -0000	1.13
  +++ CSSEngine.java	10 Jun 2002 14:04:24 -0000	1.14
  @@ -58,7 +58,7 @@
    * This is the base class for all the CSS engines.
    *
    * @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
  - * @version $Id: CSSEngine.java,v 1.13 2002/05/23 09:01:36 hillion Exp $
  + * @version $Id: CSSEngine.java,v 1.14 2002/06/10 14:04:24 hillion Exp $
    */
   public abstract class CSSEngine {
   
  @@ -648,14 +648,16 @@
   
           // Apply the user-agent style-sheet to the result.
           if (userAgentStyleSheet != null) {
  -            putStyleSheetRules(elt, pseudo, result, userAgentStyleSheet,
  -                               StyleMap.USER_AGENT_ORIGIN);
  +            List rules = new ArrayList();
  +            addMatchingRules(rules, userAgentStyleSheet, elt, pseudo);
  +            addRules(elt, pseudo, result, rules, StyleMap.USER_AGENT_ORIGIN);
           }
   
           // Apply the user properties style-sheet to the result.
           if (userStyleSheet != null) {
  -            putStyleSheetRules(elt, pseudo, result, userStyleSheet,
  -                               StyleMap.USER_ORIGIN);
  +            List rules = new ArrayList();
  +            addMatchingRules(rules, userStyleSheet, elt, pseudo);
  +            addRules(elt, pseudo, result, rules, StyleMap.USER_ORIGIN);
           }
   
           element = elt;
  @@ -693,17 +695,20 @@
           // Apply the document style-sheets to the result.
           List snodes = getStyleSheetNodes();
           int slen = snodes.size();
  -        for (int i = 0; i < slen; i++) {
  -            CSSStyleSheetNode ssn = (CSSStyleSheetNode)snodes.get(i);
  -            StyleSheet ss = ssn.getCSSStyleSheet();
  -            if (ss != null &&
  -                (!ss.isAlternate() ||
  -                 ss.getTitle() == null ||
  -                 ss.getTitle().equals(alternateStyleSheet)) &&
  -                mediaMatch(ss.getMedia())) {
  -                putStyleSheetRules(elt, pseudo, result, ss,
  -                                   StyleMap.AUTHOR_ORIGIN);
  +        if (slen > 0) {
  +            List rules = new ArrayList();
  +            for (int i = 0; i < slen; i++) {
  +                CSSStyleSheetNode ssn = (CSSStyleSheetNode)snodes.get(i);
  +                StyleSheet ss = ssn.getCSSStyleSheet();
  +                if (ss != null &&
  +                    (!ss.isAlternate() ||
  +                     ss.getTitle() == null ||
  +                     ss.getTitle().equals(alternateStyleSheet)) &&
  +                    mediaMatch(ss.getMedia())) {
  +                    addMatchingRules(rules, ss, elt, pseudo);
  +                }
               }
  +            addRules(elt, pseudo, result, rules, StyleMap.AUTHOR_ORIGIN);
           }
   
           // Apply the inline style to the result.
  @@ -1131,6 +1136,46 @@
                       addMatchingRules(rules, mr, elt, pseudo);
                   }
                   break;
  +            }
  +        }
  +    }
  +
  +    /**
  +     * Adds the rules contained in the given list to a stylemap.
  +     */
  +    protected void addRules(Element elt,
  +                            String pseudo,
  +                            StyleMap sm,
  +                            List rules,
  +                            short origin) {
  +        sortRules(rules, elt, pseudo);
  +        int rlen = rules.size();
  +        int props = getNumberOfProperties();
  +
  +        if (origin == StyleMap.AUTHOR_ORIGIN) {
  +            for (int r = 0; r < rlen; r++) {
  +                StyleRule sr = (StyleRule)rules.get(r);
  +                StyleDeclaration sd = sr.getStyleDeclaration();
  +                int len = sd.size();
  +                for (int i = 0; i < len; i++) {
  +                    putAuthorProperty(sm,
  +                                      sd.getIndex(i),
  +                                      sd.getValue(i),
  +                                      sd.getPriority(i),
  +                                      origin);
  +                }
  +            }
  +        } else {
  +            for (int r = 0; r < rlen; r++) {
  +                StyleRule sr = (StyleRule)rules.get(r);
  +                StyleDeclaration sd = sr.getStyleDeclaration();
  +                int len = sd.size();
  +                for (int i = 0; i < len; i++) {
  +                    int idx = sd.getIndex(i);
  +                    sm.putValue(idx, sd.getValue(i));
  +                    sm.putImportant(idx, sd.getPriority(i));
  +                    sm.putOrigin(idx, origin);
  +                }
               }
           }
       }
  
  
  
  1.3       +2 -2      xml-batik/test-resources/org/apache/batik/css/dom/unitTesting.xml
  
  Index: unitTesting.xml
  ===================================================================
  RCS file: /home/cvs/xml-batik/test-resources/org/apache/batik/css/dom/unitTesting.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- unitTesting.xml	11 Apr 2002 16:51:36 -0000	1.2
  +++ unitTesting.xml	10 Jun 2002 14:04:24 -0000	1.3
  @@ -8,7 +8,7 @@
   
   <!-- ========================================================================= -->
   <!-- @author vincent.hardy@eng.sun.com                                         -->
  -<!-- @version $Id: unitTesting.xml,v 1.2 2002/04/11 16:51:36 hillion Exp $   -->
  +<!-- @version $Id: unitTesting.xml,v 1.3 2002/06/10 14:04:24 hillion Exp $   -->
   <!-- ========================================================================= -->
   <testSuite id="css.dom.unitTesting" name="CSS DOM - Unit Testing"
       class="org.apache.batik.css.dom.EcmaScriptCSSDOMTest">
  @@ -17,6 +17,6 @@
           <test id="rgbTest" />
           <test id="rgbUpdateTest" />
           <test id="rgbPresentationTest" />
  +        <test id="bug9740" />
       </testGroup>
  -
   </testSuite>
  
  
  
  1.1                  xml-batik/test-resources/org/apache/batik/css/dom/bug9740-1.css
  
  Index: bug9740-1.css
  ===================================================================
  rect.redBackground { fill: red;}
  
  
  
  1.1                  xml-batik/test-resources/org/apache/batik/css/dom/bug9740-2.css
  
  Index: bug9740-2.css
  ===================================================================
  rect {stroke: white; fill: #a0a0a0;}
  
  
  
  1.1                  xml-batik/test-resources/org/apache/batik/css/dom/bug9740.svg
  
  Index: bug9740.svg
  ===================================================================
  <?xml version="1.0" standalone="no"?>
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
  "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
  
  <!-- ========================================================================= -->
  <!-- Copyright (C) The Apache Software Foundation. All rights reserved.        -->
  <!--                                                                           -->
  <!-- This software is published under the terms of the Apache Software License -->
  <!-- version 1.1, a copy of which has been included with this distribution in  -->
  <!-- the LICENSE file.                                                         -->
  <!-- ========================================================================= -->
  
  <!-- ========================================================================= -->
  <!-- This test checks that the various RGB values read from the SVGColor       -->
  <!-- interface return accurate values.                                         -->
  <!--                                                                           -->
  <!-- @author shillion@ilog.fr                                                  -->
  <!-- @version $Id: bug9740.svg,v 1.1 2002/06/10 14:04:24 hillion Exp $ -->
  <!-- ========================================================================= -->
  
  <?xml-stylesheet  href="bug9740-1.css" type="text/css"?>
  <?xml-stylesheet  href="bug9740-2.css" type="text/css"?>
  
  <svg xmlns="http://www.w3.org/2000/svg" 
       xmlns:xlink="http://www.w3.org/1999/xlink" 
       xmlns:test="http://xml.apache.org/batik/test"
       width="450" height="500" viewBox="0 0 450 500"
       onload="runTest(evt)">
  
    <test:testResult id="testResult" />
  
    <script type="text/ecmascript"><![CDATA[
     var testNS = "http://xml.apache.org/batik/test";
  
     function runTest() {
       var result = document.getElementById("testResult");
  
       var elt = document.getElementById("targetElement");
       result.setAttributeNS(null, "result", "failed");
  
       if (elt == null){
          result.setAttributeNS(null, "errorCode", "cannot.find.test.element");
          var entry = document.createElementNS(testNS, "errorDescriptionEntry");
          entry.setAttributeNS(null, "id", "missing.element.id");
          entry.setAttributeNS(null, "value", "targetElement");
          result.appendChild(entry);
          return;
       }
  
       var style = document.documentElement.getComputedStyle(elt, null);
  
       if (style == null){
          result.setAttributeNS(null, "errorCode", "getComputedStyle() returned null");
          return;
       }
  
       var val = style.getPropertyCSSValue("fill");
  
       if ( val == null ){
          result.setAttributeNS(null, "errorCode", "CSSStyleDeclaration.getPropertyCSSValue returned null");
          return;
       }
  
       val = val.getRGBColor()
  
       if (val.red.getFloatValue(1) != 255 ||
           val.green.getFloatValue(1) != 0 ||
           val.blue.getFloatValue(1) != 0) {
          result.setAttributeNS(null, "errorCode", "invalid color components");
          return;
       }
  
       result.setAttributeNS(null, "result", "passed");
     }
    ]]></script>
  
    <g fill="blue">
      <rect x="10%" y="10%" width="80%" height="80%" id="targetElement"
            class="redBackground"/>
    </g>
  </svg>
  
  
  

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