vhardy      2003/07/02 06:51:46

  Modified:    test-resources/org/apache/batik/svggen regsvggen.xml
               sources/org/apache/batik/svggen DefaultStyleHandler.java
                        SVGRenderingHints.java
  Added:       test-sources/org/apache/batik/svggen Bug17965.java
  Log:
  Fixed bug 17965. Modified text hint mapping.
  
  Revision  Changes    Path
  1.1                  xml-batik/test-sources/org/apache/batik/svggen/Bug17965.java
  
  Index: Bug17965.java
  ===================================================================
  /*****************************************************************************
   * 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.                                                         *
   *****************************************************************************/
  
  package org.apache.batik.svggen;
  
  import java.awt.*;
  import java.awt.geom.*;
  import java.awt.image.*;
  import javax.swing.ImageIcon;
  
  /**
   * This test validates fix to Bug #17965 and checks that 
   * attributes which do not apply to given element (eg., font-family
   * does not apply to <rect>) are not written out.
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a>
   * @version $Id: Bug17965.java,v 1.1 2003/07/02 13:51:43 vhardy Exp $
   */
  public class Bug17965 implements Painter {
      public void paint(Graphics2D g) {
          g.setRenderingHint(java.awt.RenderingHints.KEY_ANTIALIASING,
                             java.awt.RenderingHints.VALUE_ANTIALIAS_ON);
  
          Font font = new Font("Arial", Font.PLAIN, 30);
          g.setFont(font);
          g.setPaint(Color.blue);
          g.fillRect(0, 0, 50, 50);
  
          font = new Font("Helvetica", Font.PLAIN, 20);
          g.setFont(font);
          g.fillRect( 50, 50, 50, 50);
      }
  }
  
  
  
  1.18      +2 -1      xml-batik/test-resources/org/apache/batik/svggen/regsvggen.xml
  
  Index: regsvggen.xml
  ===================================================================
  RCS file: /home/cvs/xml-batik/test-resources/org/apache/batik/svggen/regsvggen.xml,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- regsvggen.xml     8 Jul 2002 11:54:02 -0000       1.17
  +++ regsvggen.xml     2 Jul 2003 13:51:43 -0000       1.18
  @@ -19,6 +19,7 @@
       <test id="Bug4389" />
       <test id="Bug4945" />
       <test id="Bug6535" />
  +    <test id="Bug17965" />
       <test id="Clip" />
       <test id="Color1" />
       <test id="Color2" />
  
  
  
  1.3       +47 -5     
xml-batik/sources/org/apache/batik/svggen/DefaultStyleHandler.java
  
  Index: DefaultStyleHandler.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/svggen/DefaultStyleHandler.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultStyleHandler.java  11 Apr 2003 13:59:02 -0000      1.2
  +++ DefaultStyleHandler.java  2 Jul 2003 13:51:44 -0000       1.3
  @@ -8,8 +8,12 @@
   
   package org.apache.batik.svggen;
   
  +import org.apache.batik.util.SVGConstants;
  +
   import java.util.Iterator;
   import java.util.Map;
  +import java.util.HashMap;
  +import java.util.Vector;
   
   import org.w3c.dom.Element;
   
  @@ -20,7 +24,29 @@
    * @author <a href="mailto:[EMAIL PROTECTED]">Christophe Jolif</a>
    * @version $Id$
    */
  -public class DefaultStyleHandler implements StyleHandler {
  +public class DefaultStyleHandler implements StyleHandler, SVGConstants {
  +    /**
  +     * Static initializer for which attributes should be ignored on
  +     * some elements.
  +     */
  +    static HashMap ignoreAttributes = new HashMap();
  +
  +    static {
  +        Vector textAttributes = new Vector();
  +        textAttributes.addElement(SVG_FONT_SIZE_ATTRIBUTE);
  +        textAttributes.addElement(SVG_FONT_FAMILY_ATTRIBUTE);
  +        textAttributes.addElement(SVG_FONT_STYLE_ATTRIBUTE);
  +        textAttributes.addElement(SVG_FONT_WEIGHT_ATTRIBUTE);
  +
  +        ignoreAttributes.put(SVG_RECT_TAG, textAttributes);
  +        ignoreAttributes.put(SVG_CIRCLE_TAG, textAttributes);
  +        ignoreAttributes.put(SVG_ELLIPSE_TAG, textAttributes);
  +        ignoreAttributes.put(SVG_POLYGON_TAG, textAttributes);
  +        ignoreAttributes.put(SVG_POLYGON_TAG, textAttributes);
  +        ignoreAttributes.put(SVG_LINE_TAG, textAttributes);
  +        ignoreAttributes.put(SVG_PATH_TAG, textAttributes);
  +    }
  +
       /**
        * Sets the style described by <code>styleMap</code> on the given
        * <code>element</code>. That is sets the xml attributes with their
  @@ -36,9 +62,25 @@
           String styleName = null;
           while (iter.hasNext()) {
               styleName = (String)iter.next();
  -            if (element.getAttributeNS(null, styleName).length() == 0)
  -                element.setAttributeNS(null, styleName,
  -                                       (String)styleMap.get(styleName));
  +            if (element.getAttributeNS(null, styleName).length() == 0){
  +                if (appliesTo(styleName, tagName)) {
  +                    element.setAttributeNS(null, styleName,
  +                                           (String)styleMap.get(styleName));
  +                }
  +            }
  +        }
  +    }
  +
  +    /**
  +     * Controls whether or not a given attribute applies to a particular 
  +     * element.
  +     */
  +    protected boolean appliesTo(String styleName, String tagName) {
  +        Vector v = (Vector)ignoreAttributes.get(tagName);
  +        if (v == null) {
  +            return true;
  +        } else {
  +            return !v.contains(styleName);
           }
       }
   }
  
  
  
  1.12      +2 -2      xml-batik/sources/org/apache/batik/svggen/SVGRenderingHints.java
  
  Index: SVGRenderingHints.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/svggen/SVGRenderingHints.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- SVGRenderingHints.java    11 Apr 2003 13:59:06 -0000      1.11
  +++ SVGRenderingHints.java    2 Jul 2003 13:51:44 -0000       1.12
  @@ -126,7 +126,7 @@
               if(textAntialiasing == hints.VALUE_TEXT_ANTIALIAS_ON)
                   textRendering = SVG_OPTIMIZE_LEGIBILITY_VALUE;
               else if(textAntialiasing == hints.VALUE_TEXT_ANTIALIAS_OFF)
  -                textRendering = SVG_GEOMETRIC_PRECISION_VALUE;
  +                textRendering = SVG_OPTIMIZE_SPEED_VALUE;
               else if(textAntialiasing == hints.VALUE_TEXT_ANTIALIAS_DEFAULT)
                   textRendering = SVG_AUTO_VALUE;
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to