]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
1.) Removed xsl file for property generation (no longer used, due to
authorGlen Mazza <gmazza@apache.org>
Sun, 21 Mar 2004 12:38:56 +0000 (12:38 +0000)
committerGlen Mazza <gmazza@apache.org>
Sun, 21 Mar 2004 12:38:56 +0000 (12:38 +0000)
Finn's work.)  Removed build.xml entry.

2.) Disconnected the FOUserAgent from the SVGUserAgent.  This will make
the SVGUserAgent more portable although at the cost of a more complex
constructor.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197467 13f79535-47bb-0310-9956-ffa450edef68

build.xml
src/codegen/properties.xsl [deleted file]
src/java/org/apache/fop/image/analyser/SVGReader.java
src/java/org/apache/fop/render/pdf/PDFXMLHandler.java
src/java/org/apache/fop/render/ps/PSXMLHandler.java
src/java/org/apache/fop/svg/SVGUserAgent.java

index 4ea0154eb51bc3ad0ff70dbac3bc644588db4e27..416553ca4abaca695bd98abbe3cfdf75a0d2570c 100644 (file)
--- a/build.xml
+++ b/build.xml
@@ -218,10 +218,7 @@ list of possible build targets.
     <property name="jai" value="JAIImage.java"/>
 
     <property name="xslt" value="org.apache.xalan.xslt.Process"/>
-    <property name="src.properties.xsl" value="${src.codegen}/properties.xsl"/>
-    <property name="src.propmaker.xsl" value="${src.codegen}/propmaker.xsl"/>
 
-    <property name="propinc.xsl" value="${src.codegen}/propinc.xsl"/>
     <property name="src.charlist.xsl" value="${src.codegen}/code-point-mapping.xsl"/>
     <property name="encodings.xml" value="${src.codegen}/encodings.xml"/>
     <property name="charlist.xsl" value="${src.codegen}/code-point-mapping.xsl"/>
diff --git a/src/codegen/properties.xsl b/src/codegen/properties.xsl
deleted file mode 100644 (file)
index e3e19be..0000000
+++ /dev/null
@@ -1,1084 +0,0 @@
-<!--
-  Copyright 1999-2004 The Apache Software Foundation
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<!-- $Id$ -->
-<xsl:stylesheet version="1.0"
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                xmlns:lxslt="http://xml.apache.org/xslt"
-                xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
-                extension-element-prefixes="redirect">
-
-<xsl:include href="./propinc.xsl"/>
-
-<xsl:output method="text" />
-
-<xsl:template match="extfile">
-<!--<xsl:message>Do <xsl:value-of select="@href"/></xsl:message>-->
-   <xsl:apply-templates select="document(@href)/*"/>
-</xsl:template>
-
-<!-- Content of element is code to calculate the base length -->
-<xsl:template match="percent-ok">
-  <xsl:text>
-    /** Return object used to calculate base Length
-     * for percent specifications.
-     */
-    public PercentBase getPercentBase(final FObj fo, final PropertyList propertyList) {</xsl:text>
-  <xsl:choose>
-    <xsl:when test="@base">
-      <xsl:text>
-        return new LengthBase(fo, propertyList, LengthBase.</xsl:text>
-        <xsl:value-of select="@base"/><xsl:text>);
-</xsl:text>
-     </xsl:when>
-     <xsl:otherwise>
-       <!-- I have no idea what's happening here.  Is this supposed to be
-            an anonymous class returning the actual base length?
-            -->
-       <xsl:text>
-        return new LengthBase(fo, propertyList, LengthBase.CUSTOM_BASE) {
-     public int getBaseLength() {
-      return (</xsl:text>
-         <xsl:value-of select="."/>
-         <xsl:text>);
-          }
-  });</xsl:text>
-       </xsl:otherwise>
-     </xsl:choose>
-     <xsl:text>
-    }</xsl:text>
-</xsl:template>
-
-<!-- Look for "auto" length keyword -->
-<xsl:template match="auto-ok">
-  <xsl:text>
-    protected boolean isAutoLengthAllowed() {
-        return true;
-    }</xsl:text>
-</xsl:template>
-
-<xsl:template match="enumeration">
-  <xsl:text>
-    public Property checkEnumValues(String value) {</xsl:text>
-    <xsl:for-each select="value">
-      <xsl:call-template name="enumvals">
-        <xsl:with-param name="specvals" select="concat(.,' ')"/>
-      </xsl:call-template>
-    </xsl:for-each>
-    <xsl:text>
-        return super.checkEnumValues(value);
-    }</xsl:text>
-</xsl:template>
-
-
-<!-- Look for keyword equivalents. Value is the new expression  -->
-<xsl:template match="keyword-equiv[1]">
-  <xsl:text>
-    // Initialize hashtable of keywords
-    static HashMap s_htKeywords;
-    static {
-        s_htKeywords = new HashMap(</xsl:text>
-    <xsl:value-of select="count(../keyword-equiv)"/>
-    <xsl:text>);</xsl:text>
-  <xsl:for-each select="../keyword-equiv">
-    <xsl:text>
-        s_htKeywords.put("</xsl:text>
-      <xsl:value-of select="@match"/>
-      <xsl:text>", "</xsl:text>
-      <xsl:value-of select="."/>
-      <xsl:text>");</xsl:text>
-    </xsl:for-each>
-    <xsl:text>
-    }
-
-    protected String checkValueKeywords(String keyword) {
-        String value = (String)s_htKeywords.get(keyword);
-        if (value == null) {
-            return super.checkValueKeywords(keyword);
-        }
-        else return value;
-    }</xsl:text>
-</xsl:template>
-
-<xsl:template match="keyword-equiv[position()>1]"/>
-
-<!-- Generate code to convert from other datatypes to property datatype -->
-<xsl:template match='datatype-conversion[1]'>
-  <xsl:variable name="propclass">
-    <xsl:choose>
-      <xsl:when test="../compound">
-        <xsl:call-template name="propclass">
-          <xsl:with-param name="prop"
-            select="../compound/subproperty[@set-by-shorthand]"/>
-        </xsl:call-template>
-      </xsl:when><xsl:otherwise>
-      <xsl:call-template name="propclass">
-        <xsl:with-param name="prop" select=".."/>
-      </xsl:call-template>
-    </xsl:otherwise>
-  </xsl:choose>
-</xsl:variable>
-<xsl:text>
-
-    // See if other value types are acceptable
-    protected Property convertPropertyDatatype(
-                  Property p, PropertyList propertyList, FObj fo) {</xsl:text>
-  <xsl:for-each select="../datatype-conversion">
-    <xsl:variable name="dtc">
-      <xsl:choose>
-        <xsl:when test="@vartype">
-          <xsl:value-of select="@vartype"/>
-        </xsl:when><xsl:otherwise>
-        <xsl:value-of select="@from-type"/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:variable>
-  <xsl:text>
-        </xsl:text>
-  <xsl:value-of select="$dtc"/>
-  <xsl:text> </xsl:text>
-  <xsl:value-of select="@varname"/>
-  <xsl:text> = p.get</xsl:text>
-  <xsl:value-of select="@from-type"/>
-  <xsl:text>();
-        if (</xsl:text>
-      <xsl:value-of select="@varname"/>
-      <xsl:text> != null) {
-            return new </xsl:text>
-      <xsl:value-of select="$propclass"/><xsl:text>(
-                    </xsl:text>
-        <xsl:value-of select='normalize-space(.)'/><xsl:text>);
-        }</xsl:text>
-      </xsl:for-each>
-      <xsl:text>
-        return super.convertPropertyDatatype(p, propertyList, fo);
-    }</xsl:text>
-</xsl:template>
-
-<xsl:template match="datatype-conversion[position()>1]"/>
-
-<!-- generate getDefaultForXXX for property components -->
-<xsl:template match="default[@subproperty]" priority="2">
-  <xsl:variable name="spname">
-    <xsl:call-template name="makeClassName">
-      <xsl:with-param name="propstr" select="@subproperty"/>
-    </xsl:call-template>
-  </xsl:variable>
-  <xsl:text>
-    protected String getDefaultFor</xsl:text>
-    <xsl:value-of  select='$spname'/>
-    <xsl:text>() {
-        return "</xsl:text>
-    <xsl:value-of  select='.'/>
-    <xsl:text>";
-    }</xsl:text>
-</xsl:template>
-
-<!-- generate default "make" method for non-compound properties -->
-<xsl:template match="default[not(../compound)]" priority="1">
-  <xsl:if test='not(@contextdep = "true")'>
-    <xsl:text>
-    private Property m_defaultProp=null;</xsl:text>
-  </xsl:if>
-  <xsl:text>
-    public Property make(PropertyList propertyList) throws FOPException {</xsl:text>
-    <xsl:choose>
-      <xsl:when test='@contextdep="true"'>
-        <xsl:text>
-        return make(propertyList, "</xsl:text>
-          <xsl:value-of select='.'/>
-          <xsl:text>", propertyList.getParentFObj());</xsl:text>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:text>
-        if (m_defaultProp == null) {
-            m_defaultProp=make(propertyList, "</xsl:text>
-            <xsl:value-of select='.'/>
-            <xsl:text>", propertyList.getParentFObj());
-        }
-        return m_defaultProp;</xsl:text>
-          </xsl:otherwise>
-        </xsl:choose>
-        <xsl:text>
-    }</xsl:text>
-</xsl:template>
-
-<xsl:template match="text()"/>
-
-<!-- Ignore properties which reference others. Only for mapping! -->
-<xsl:template match="property[@type='ref']"/>
-
-<!-- Only if more explicit rules not matched (ref) -->
-<xsl:template match="property">
-
-  <!-- Only create a specific class for those properties not based on
-       template (generic) property definitions or which extends a
-       generic definition.
-       -->
-  <xsl:if test='not(use-generic) or count(*)>2'>
-    
-    <xsl:variable name="eclassname">
-      <xsl:choose>
-        <xsl:when test="class-name">
-          <xsl:value-of select="class-name"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:call-template name="makeClassName">
-            <xsl:with-param name="propstr" select="name"/>
-          </xsl:call-template>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-
-    <xsl:variable name="classname">
-      <xsl:value-of select="$eclassname"/>
-      <xsl:if test="not(@type='generic')">
-        <xsl:text>Maker</xsl:text>
-      </xsl:if>
-    </xsl:variable>
-
-    <!-- The class of the Property object to be created -->
-    <xsl:variable name="propclass">
-      <xsl:call-template name="propclass"/>
-    </xsl:variable>
-
-    <!-- The superclass for this PropertyMaker -->
-    <xsl:variable name="superclass">
-      <xsl:choose>
-        <xsl:when test="use-generic[@ispropclass='true']">
-          <xsl:value-of select="use-generic"/><xsl:text>.Maker</xsl:text>
-        </xsl:when>
-        <xsl:when test="use-generic">
-          <xsl:value-of select="use-generic"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:value-of select="datatype"/><xsl:text>Property.Maker</xsl:text>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-
-    <!-- Is this property an Enum or derived from a generic Enum -->
-    <xsl:variable name="enumconst">
-      <xsl:if test="enumeration/value and not(@type='generic')">
-        <xsl:text> implements Constants</xsl:text></xsl:if>
-    </xsl:variable>
-
-    <redirect:write select="concat($classname, '.java')">
-      <xsl:text>package org.apache.fop.fo.properties;
-      
-</xsl:text>
-      <xsl:if test=".//keyword-equiv or ./name[.='generic-color']">
-        <xsl:text>
-import java.util.HashMap;</xsl:text>
-      </xsl:if>
-      <xsl:if test=
-          "((./datatype and
-              (not (./datatype[.='String' or .='Enum' or .='List'
-                      or .='Length' or .='Character' or .='Number'])
-                    or (./datatype[.='Length'] and ./percent-ok)
-            ) )
-            or .//datatype-conversion)
-            and ./name[. !='generic-color']">
-        <xsl:text>
-import org.apache.fop.datatypes.*;</xsl:text>
-      </xsl:if>
-      <xsl:text>
-import org.apache.fop.fo.*;</xsl:text>
-      <xsl:if test="not(
-                    (./datatype and ./datatype[. ='List'])
-                    or ./class-name[.='GenericCondPadding']
-                    or ./name[.='generic-boolean'
-                              or .='generic-color'])">
-        <xsl:text>
-import org.apache.fop.apps.FOPException;</xsl:text>
-      </xsl:if>
-  <xsl:if test=".//enumeration and @type='generic'">
-    <xsl:text>
-import org.apache.fop.fo.Constants;</xsl:text>
-</xsl:if>
-      <xsl:text>
-
-public class </xsl:text>
-      <xsl:value-of select="$classname"/>
-      <xsl:text> extends </xsl:text>
-      <xsl:value-of select="$superclass"/><xsl:value-of select="$enumconst"/>
-      <xsl:text> {</xsl:text>
-
-      <!-- If has enumerated values and is a generic class, create a nested
-           interface defining the enumeration constants -->
-      <xsl:if test=".//enumeration and @type='generic'">
-        <xsl:text>
-    public interface Enums {</xsl:text>
-        <xsl:for-each select="enumeration/value">
-          <xsl:text>
-        int </xsl:text>
-          <xsl:value-of select="@const"/>
-          <xsl:text> =  Constants.</xsl:text>
-          <xsl:value-of select="@const"/>
-          <xsl:text>;</xsl:text>
-        </xsl:for-each>
-        <xsl:for-each select="compound/subproperty[enumeration]">
-          <xsl:variable name="spname">
-            <xsl:call-template name="makeClassName">
-              <xsl:with-param name="propstr" select="name"/>
-            </xsl:call-template>
-          </xsl:variable>
-          <xsl:text>
-        public interface </xsl:text>
-          <xsl:value-of select="$spname"/>
-          <xsl:text> {</xsl:text>
-          <xsl:for-each select="enumeration/value">
-            <xsl:text>
-            int </xsl:text>
-            <xsl:value-of select="@const"/>
-            <xsl:text> = Constants.</xsl:text>
-            <xsl:value-of select="@const"/>
-            <xsl:text>;</xsl:text>
-          </xsl:for-each>
-          <xsl:text>
-        }</xsl:text>
-        </xsl:for-each>
-        <xsl:text>
-    }</xsl:text>
-      </xsl:if>
-
-
-      <!-- Handle enumeration values -->
-      <xsl:for-each select="enumeration/value">
-        <xsl:text>
-    protected final static EnumProperty s_prop</xsl:text>
-        <xsl:value-of select="@const"/>
-        <xsl:text> = new EnumProperty(</xsl:text>
-        <xsl:if test="../../@type='generic'">
-          <xsl:text>Enums.</xsl:text>
-        </xsl:if>
-        <xsl:value-of select="@const"/>
-        <xsl:text>);</xsl:text>
-      </xsl:for-each>
-
-
-      <!-- Look for compound properties -->
-      <xsl:if test="compound">
-        <xsl:variable name="enumclass">
-          <xsl:choose>
-            <xsl:when test="@type='generic'">
-              <xsl:text>Enums</xsl:text>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:value-of select="$eclassname"/>
-            </xsl:otherwise>
-          </xsl:choose>
-        </xsl:variable>
-        <xsl:for-each select="compound/subproperty">
-          <xsl:variable name="spname">
-            <xsl:call-template name="makeClassName">
-              <xsl:with-param name="propstr" select="name"/>
-            </xsl:call-template>
-          </xsl:variable>
-          <xsl:variable name="sp_superclass">
-            <xsl:choose>
-              <xsl:when test="use-generic">
-                <xsl:value-of select="use-generic"/>
-              </xsl:when>
-              <xsl:otherwise>
-                <xsl:value-of select="datatype"/>
-                <xsl:text>Property.Maker</xsl:text>
-              </xsl:otherwise>
-            </xsl:choose>
-          </xsl:variable>
-          
-          <xsl:choose>
-            <xsl:when test='*[local-name(.)!="name" and local-name(.)!="datatype" and local-name(.)!="use-generic" and local-name(.)!="default"]'>
-              <xsl:text>
-    static private class SP_</xsl:text>
-              <xsl:value-of select="$spname"/>
-              <xsl:text>Maker extends </xsl:text>
-              <xsl:value-of select="$sp_superclass"/>
-              <xsl:if test="enumeration">
-                <xsl:text> implements </xsl:text>
-                <xsl:value-of select="$enumclass"/>
-                <xsl:text>.</xsl:text>
-                <xsl:value-of select="$spname"/>
-              </xsl:if>
-              <xsl:text> {
-        SP_</xsl:text>
-              <xsl:value-of select="$spname"/>
-              <xsl:text>Maker(int sPropName) {
-            super(sPropName);
-        }</xsl:text>
-              <xsl:for-each select="enumeration/value">
-                <xsl:text>
-        protected final static EnumProperty s_prop</xsl:text>
-                <xsl:value-of select="@const"/>
-                <xsl:text> = new EnumProperty(</xsl:text>
-                <xsl:value-of select="@const"/>
-                <xsl:text>);</xsl:text>
-              </xsl:for-each>
-
-              <xsl:apply-templates
-                select="percent-ok|auto-ok|keyword-equiv|
-                        datatype-conversion|enumeration"/>
-              <xsl:text>
-    }
-
-    final private static Property.Maker s_</xsl:text>
-              <xsl:value-of select="$spname"/>
-              <xsl:text>Maker =
-              new SP_</xsl:text><xsl:value-of select="$spname"/>
-              <xsl:text>Maker(</xsl:text>
-              <xsl:if test="not(../../@type = 'generic')">
-                <xsl:text>Constants.PR_</xsl:text>
-                <xsl:call-template name="makeEnumConstant">
-                  <xsl:with-param name="propstr" select="../../name"/>
-                </xsl:call-template>
-                <xsl:text> | </xsl:text>
-              </xsl:if>
-              <xsl:text>Constants.CP_</xsl:text>
-              <xsl:call-template name="makeEnumConstant">
-                <xsl:with-param name="propstr" select="name"/>
-              </xsl:call-template>
-              <xsl:text>);</xsl:text>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:text>
-    final private static Property.Maker s_</xsl:text>
-              <xsl:value-of select="$spname"/>
-              <xsl:text>Maker =
-              new </xsl:text><xsl:value-of select="$sp_superclass"/>
-              <xsl:text>(</xsl:text>
-              <xsl:if test="not(../../@type = 'generic')">
-                <xsl:text>Constants.PR_</xsl:text>
-                <xsl:call-template name="makeEnumConstant">
-                  <xsl:with-param name="propstr" select="../../name"/>
-                </xsl:call-template>
-                <xsl:text> | </xsl:text>
-              </xsl:if>
-              <xsl:text>Constants.CP_</xsl:text>
-              <xsl:call-template name="makeEnumConstant">
-                <xsl:with-param name="propstr" select="name"/>
-              </xsl:call-template>
-              <xsl:text>);</xsl:text>
-            </xsl:otherwise>
-          </xsl:choose>
-        </xsl:for-each>
-      </xsl:if>
-
-      <xsl:text>
-
-    static public Property.Maker maker(int propertyId) {
-        return new </xsl:text>
-      <xsl:value-of select="$classname"/>
-      <xsl:text>(propertyId);
-    }
-
-    protected </xsl:text>
-      <xsl:value-of select="$classname"/>
-      <xsl:text>(int propId) {
-        super(propId);</xsl:text>
-      <xsl:if test="compound">
-        <xsl:text>
-        m_shorthandMaker= getSubpropMaker(Constants.CP_</xsl:text>
-        <xsl:call-template name="makeEnumConstant">
-          <xsl:with-param name="propstr" select=
-                       'compound/subproperty[@set-by-shorthand="true"]/name'/>
-        </xsl:call-template>
-        <xsl:text>);</xsl:text>
-      </xsl:if>
-      <xsl:text>
-    }
-</xsl:text>
-
-      <xsl:if test="compound">
-        <xsl:text>
-    Property.Maker m_shorthandMaker;
-
-    public Property checkEnumValues(String value) {
-        return m_shorthandMaker.checkEnumValues(value);
-    }
-
-    protected boolean isCompoundMaker() {
-        return true;
-    }
-
-    protected Property.Maker getSubpropMaker(int subpropId) {</xsl:text>
-        <xsl:for-each select="compound/subproperty">
-          <xsl:variable name="spname">
-            <xsl:call-template name="makeClassName">
-              <xsl:with-param name="propstr" select="name"/>
-            </xsl:call-template>
-          </xsl:variable>
-          <xsl:text>
-        if (subpropId == Constants.CP_</xsl:text>
-          <xsl:call-template name="makeEnumConstant">
-            <xsl:with-param name="propstr" select="name"/>
-          </xsl:call-template>
-          <xsl:text>)
-            return s_</xsl:text>
-          <xsl:value-of select="$spname"/>
-          <xsl:text>Maker;</xsl:text>
-        </xsl:for-each>
-        <xsl:text>
-        return super.getSubpropMaker(subpropId);
-    }
-
-    protected Property setSubprop(Property baseProp, int subpropId,
-                                  Property subProp) {
-        </xsl:text>
-        <xsl:value-of select="datatype"/>
-        <xsl:text> val = baseProp.get</xsl:text>
-        <xsl:value-of select="datatype"/>
-        <xsl:text>();
-        // Do some type checking???
-        // Check if one of our subproperties???
-        val.setComponent(subpropId, subProp, false);
-        return baseProp;
-    }
-
-    public Property getSubpropValue(Property baseProp, int subpropId) {
-        </xsl:text>
-        <xsl:value-of select="datatype"/>
-        <xsl:text> val = baseProp.get</xsl:text>
-        <xsl:value-of select="datatype"/>
-        <xsl:text>();
-        return val.getComponent(subpropId);
-    }
-</xsl:text>
-      <xsl:choose>
-        <!-- some subproperty default is context dependent;
-             don't cache default! -->
-        <xsl:when test='.//default[@contextdep="true"]'>
-          <xsl:text>
-    public Property make(PropertyList propertyList) throws FOPException {
-        return makeCompound(propertyList, propertyList.getParentFObj());
-    }</xsl:text>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:text>
-    private Property m_defaultProp=null;
-    public Property make(PropertyList propertyList) throws FOPException {
-        if (m_defaultProp == null) {
-            m_defaultProp=makeCompound(
-                            propertyList, propertyList.getParentFObj());
-        }
-        return m_defaultProp;
-    }</xsl:text>
-        </xsl:otherwise>
-      </xsl:choose>
-      <xsl:text>
-
-    protected Property makeCompound(PropertyList pList, FObj fo) throws FOPException {</xsl:text>
-      <xsl:value-of select="datatype"/>
-      <xsl:text> p = new </xsl:text>
-      <xsl:value-of select="datatype"/>
-      <xsl:text>();
-        Property subProp;</xsl:text>
-      <xsl:for-each select="compound/subproperty/name">
-        <xsl:variable name="spname">
-          <xsl:call-template name="makeClassName">
-            <xsl:with-param name="propstr" select="."/>
-          </xsl:call-template>
-        </xsl:variable>
-        <xsl:text>
-       // set default for subprop </xsl:text>
-        <xsl:value-of select="."/>
-        <xsl:text>
-       subProp = getSubpropMaker(Constants.CP_</xsl:text>
-        <xsl:call-template name="makeEnumConstant">
-          <xsl:with-param name="propstr" select="."/>
-        </xsl:call-template>
-        <xsl:text>).make(pList, getDefaultFor</xsl:text>
-        <xsl:value-of select='$spname'/>
-        <xsl:text>(), fo);
-       p.setComponent(Constants.CP_</xsl:text>
-        <xsl:call-template name="makeEnumConstant">
-          <xsl:with-param name="propstr" select="."/>
-        </xsl:call-template>
-        <xsl:text>, subProp, true);</xsl:text>
-      </xsl:for-each>
-      <xsl:text>
-        return new </xsl:text>
-      <xsl:value-of select="$propclass"/>
-      <xsl:text>(p);
-    }
-</xsl:text>
-      <!-- generate a "getDefaultForXXX" for each subproperty XXX -->
-      <xsl:for-each select="compound/subproperty">
-        <xsl:variable name="spname">
-          <xsl:call-template name="makeClassName">
-            <xsl:with-param name="propstr" select="name"/>
-          </xsl:call-template>
-        </xsl:variable>
-        <xsl:text>
-        protected String getDefaultFor</xsl:text>
-        <xsl:value-of  select='$spname'/>
-        <xsl:text>() {</xsl:text>
-        <xsl:choose>
-          <xsl:when test="default">
-            <xsl:text>
-            return "</xsl:text>
-            <xsl:value-of  select='default'/>
-            <xsl:text>";</xsl:text>
-          </xsl:when>
-          <xsl:when test=
-            "use-generic and key('genericref', use-generic)/default">
-            <xsl:text>
-            return "</xsl:text>
-            <xsl:value-of select='key(&apos;genericref&apos;,
-                                  use-generic)/default'/>
-            <xsl:text>";</xsl:text>
-          </xsl:when>
-          <xsl:otherwise>
-            <xsl:text>
-            return "";</xsl:text>
-          </xsl:otherwise>
-        </xsl:choose>
-        <xsl:text>
-    }</xsl:text>
-      </xsl:for-each>
-      <xsl:text>
-
-    /** Set the appropriate components when the "base" property is set. */
-    public Property convertProperty(Property p, PropertyList pList,FObj fo)
-            throws FOPException {
-        if (p instanceof </xsl:text>
-      <xsl:value-of select="$propclass"/>
-      <xsl:text>) return p;
-        if (! (p instanceof EnumProperty)) {
-            // delegate to the subprop maker to do conversions
-            p = m_shorthandMaker.convertProperty(p,pList,fo);
-        }
-        if (p != null) {
-            Property prop = makeCompound(pList, fo);
-      </xsl:text>
-      <xsl:value-of select="datatype"/>
-      <xsl:text> pval = prop.get</xsl:text>
-      <xsl:value-of select="datatype"/>
-      <xsl:text>();</xsl:text>
-      <xsl:for-each select="compound/subproperty[@set-by-shorthand='true']">
-        <xsl:text>
-            pval.setComponent(Constants.CP_</xsl:text>
-        <xsl:call-template name="makeEnumConstant">
-          <xsl:with-param name="propstr" select="name"/>
-        </xsl:call-template>
-        <xsl:text>, p, false);</xsl:text>
-      </xsl:for-each>
-      <xsl:text>
-            return prop;
-        }
-        else return null;</xsl:text>
-        <!--
-             else {
-             // throw some kind of exception!
-             throw new FOPException("Can't convert value to <xsl:value-of select='$spdt'/> type");
-             }
-         -->
-      <xsl:text>
-    }
-
-</xsl:text>
-      </xsl:if> <!-- property/compound -->
-
-      <xsl:if test="inherited">
-        <xsl:text>
-    public boolean isInherited() {
-          return </xsl:text>
-        <xsl:value-of select="inherited"/>
-        <xsl:text>;
-    }
-</xsl:text>
-      </xsl:if>
-
-      <!-- the default implementation returns false -->
-      <xsl:if test='inherited/@type="specified"'>
-        <xsl:text>
-    public boolean inheritsSpecified() {
-        return true;
-    }
-</xsl:text>
-      </xsl:if>
-
-
-      <!-- Currently only works for Enum values -->
-      <xsl:if test="derive">
-        <xsl:text>
-    public Property compute(PropertyList propertyList) {
-        Property computedProperty = null;
-        Property correspondingProperty = propertyList.get(Constants.PR_</xsl:text>
-        <xsl:call-template name="makeEnumConstant">
-          <xsl:with-param name="propstr" select="derive/@from"/>
-        </xsl:call-template>
-        <xsl:text>);
-        if (correspondingProperty != null) {
-            int correspondingValue = correspondingProperty.getEnum();</xsl:text>
-        <xsl:for-each select="derive/if">
-          <xsl:text>
-            if (correspondingValue == Constants.</xsl:text>
-          <xsl:value-of select="@match"/>
-          <xsl:text>)
-                computedProperty = new EnumProperty(</xsl:text>
-          <xsl:value-of select="."/>
-          <xsl:text>);
-            else</xsl:text>
-        </xsl:for-each>
-        <xsl:text>
-                ;
-        }
-        return computedProperty;
-    }
-</xsl:text>
-      </xsl:if>
-
-      <!-- If any corresponding element at property or subproperty levels -->
-      <xsl:if test=".//corresponding">
-        <xsl:if test=".//corresponding/@use-if-specified='true'">
-          <xsl:text>
-    public boolean isCorrespondingForced(PropertyList propertyList) {
-        FObj parentFO = propertyList.getParentFObj();</xsl:text>
-          <xsl:for-each select=".//corresponding/propval">
-            <xsl:text>
-        if (propertyList.getExplicit(</xsl:text>
-            <xsl:apply-templates select="."/>
-            <xsl:text>) != null)
-            return true;</xsl:text>
-          </xsl:for-each>
-          <xsl:text>
-        return false;
-    }
-</xsl:text>
-      </xsl:if>
-      <xsl:text>
-
-    public Property compute(PropertyList propertyList) throws FOPException {
-        FObj parentFO = propertyList.getParentFObj();
-        Property p=null;</xsl:text>
-      <xsl:choose>
-        <xsl:when test="corresponding/propexpr">
-          <xsl:text>
-        // Make sure the property is set before calculating it!
-        if (propertyList.getExplicitOrShorthand(</xsl:text>
-          <xsl:apply-templates select="corresponding/propval"/>
-          <xsl:text>) == null)
-            return p;
-        StringBuffer sbExpr=new StringBuffer();
-        sbExpr.setLength(0);</xsl:text>
-          <xsl:apply-templates select="corresponding/propexpr"/>
-          <xsl:text>
-        p = make(propertyList, sbExpr.toString(), propertyList.getParentFObj());</xsl:text>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:text>
-        p= propertyList.getExplicitOrShorthand(</xsl:text>
-          <xsl:apply-templates select="corresponding/propval"/>
-          <xsl:text>);</xsl:text>
-        </xsl:otherwise>
-      </xsl:choose>
-      <xsl:text>
-        if (p != null) {
-            p = convertProperty(p, propertyList, parentFO );
-        }</xsl:text>
-      <xsl:if test="compound">
-        <xsl:text>
-        else p = makeCompound(propertyList, parentFO);
-
-        Property subprop;</xsl:text>
-        <xsl:for-each select="compound/subproperty/corresponding">
-          <xsl:choose>
-            <xsl:when test="propexpr">
-              <xsl:apply-templates select="propexpr"/>
-              <xsl:text>
-        subprop = getSubpropMaker("</xsl:text>
-              <xsl:value-of select='../name'/>
-              <xsl:text>").
-                  make(propertyList, sbExpr.toString(), parentFO);</xsl:text>
-          </xsl:when>
-          <xsl:otherwise>
-            <xsl:text>
-        subprop = propertyList.getExplicitOrShorthand(</xsl:text>
-          <xsl:apply-templates select="propval"/>
-          <xsl:text>);</xsl:text>
-          </xsl:otherwise>
-        </xsl:choose>
-        <xsl:text>
-        if (subprop != null) {
-            setSubprop(p, Constants.CP_</xsl:text>
-        <xsl:call-template name="makeEnumConstant">
-          <xsl:with-param name="propstr" select="../name"/>
-        </xsl:call-template>
-        <xsl:text>, subprop);
-        }</xsl:text>
-      </xsl:for-each>
-    </xsl:if>
-    <xsl:text>
-        return p;
-    }
-</xsl:text>
-</xsl:if>
-
-<!-- If can be specified by any shorthand property -->
-<xsl:if test="shorthand">
-  <xsl:text>
-    public Property getShorthand(PropertyList propertyList) {
-        Property p = null;
-        ListProperty listprop;</xsl:text>
-  <xsl:for-each select="shorthand">
-    <xsl:variable name="shprop" select="."/>
-    <xsl:text>
-        if (p == null) {
-            listprop =
-                (ListProperty)propertyList.getExplicit(Constants.PR_</xsl:text>
-    <xsl:call-template name="makeEnumConstant">
-      <xsl:with-param name="propstr" select="$shprop"/>
-    </xsl:call-template>
-    <xsl:text>);
-            if (listprop != null) {
-               // Get a parser for the shorthand to set the individual properties
-               ShorthandParser shparser =
-                      new </xsl:text>
-    <xsl:value-of select="key('shorthandref', $shprop)/datatype-parser"/>
-    <xsl:text>(listprop);
-               p = shparser.getValueForProperty(
-                                        getPropId(), this, propertyList);
-            }
-        }</xsl:text>
-  </xsl:for-each>
-  <xsl:text>
-        return p;
-    }
-</xsl:text>
-</xsl:if>
-
-<xsl:apply-templates select=
-      "percent-ok|auto-ok|default|keyword-equiv|datatype-conversion|
-            enumeration|extfile"/>
-<xsl:text>
-}
-</xsl:text>
-</redirect:write>
-</xsl:if> <!-- need to create a class -->
-</xsl:template>
-
-<xsl:template match="corresponding/propexpr/propval">
-  <xsl:text>
-        sbExpr.append("_fop-property-value(");</xsl:text> <!-- Note: interpreted by property parser -->
-  <xsl:apply-templates/>
-  <xsl:text>
-        sbExpr.append(")");</xsl:text>
-</xsl:template>
-
-
-<xsl:template match="propval">
-  <xsl:choose>
-    <xsl:when test="wmabs2rel[@dir='LEFT']">
-      <xsl:call-template name="makeMap">
-        <xsl:with-param name="lrtb" select='"START"'/>
-        <xsl:with-param name="rltb" select='"END"'/>
-        <xsl:with-param name="tbrl" select='"AFTER"'/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:when test="wmabs2rel[@dir='RIGHT']">
-      <xsl:call-template name="makeMap">
-        <xsl:with-param name="lrtb" select='"END"'/>
-        <xsl:with-param name="rltb" select='"START"'/>
-        <xsl:with-param name="tbrl" select='"BEFORE"'/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:when test="wmabs2rel[@dir='TOP']">
-      <xsl:call-template name="makeMap">
-        <xsl:with-param name="lrtb" select='"BEFORE"'/>
-        <xsl:with-param name="rltb" select='"BEFORE"'/>
-        <xsl:with-param name="tbrl" select='"START"'/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:when test="wmabs2rel[@dir='BOTTOM']">
-      <xsl:call-template name="makeMap">
-        <xsl:with-param name="lrtb" select='"AFTER"'/>
-        <xsl:with-param name="rltb" select='"AFTER"'/>
-        <xsl:with-param name="tbrl" select='"END"'/>
-      </xsl:call-template>
-    </xsl:when>
-
-    <xsl:when test="wmrel2abs[@dir='START']">
-      <xsl:call-template name="makeMap">
-        <xsl:with-param name="lrtb" select='"LEFT"'/>
-        <xsl:with-param name="rltb" select='"RIGHT"'/>
-        <xsl:with-param name="tbrl" select='"TOP"'/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:when test="wmrel2abs[@dir='END']">
-      <xsl:call-template name="makeMap">
-        <xsl:with-param name="lrtb" select='"RIGHT"'/>
-        <xsl:with-param name="rltb" select='"LEFT"'/>
-        <xsl:with-param name="tbrl" select='"BOTTOM"'/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:when test="wmrel2abs[@dir='BEFORE'] or parwmrel2abs[@dir='BEFORE']">
-      <xsl:call-template name="makeMap">
-        <xsl:with-param name="lrtb" select='"TOP"'/>
-        <xsl:with-param name="rltb" select='"TOP"'/>
-        <xsl:with-param name="tbrl" select='"RIGHT"'/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:when test="wmrel2abs[@dir='AFTER'] or parwmrel2abs[@dir='AFTER']">
-      <xsl:call-template name="makeMap">
-        <xsl:with-param name="lrtb" select='"BOTTOM"'/>
-        <xsl:with-param name="rltb" select='"BOTTOM"'/>
-        <xsl:with-param name="tbrl" select='"LEFT"'/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:when test="wmrel2abs[@dir='BLOCKPROGDIM']">
-      <xsl:call-template name="makeMap">
-        <xsl:with-param name="lrtb" select='"HEIGHT"'/>
-        <xsl:with-param name="rltb" select='"HEIGHT"'/>
-        <xsl:with-param name="tbrl" select='"WIDTH"'/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:when test="wmrel2abs[@dir='INLINEPROGDIM']">
-      <xsl:call-template name="makeMap">
-        <xsl:with-param name="lrtb" select='"WIDTH"'/>
-        <xsl:with-param name="rltb" select='"WIDTH"'/>
-        <xsl:with-param name="tbrl" select='"HEIGHT"'/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:otherwise>UNKNOWN <xsl:value-of select="."/></xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-<xsl:template match="corresponding//text()">
-  <xsl:variable name="tval" select='normalize-space(.)'/>
-  <xsl:if test="$tval != ''">
-    <xsl:text>
-        sbExpr.append("</xsl:text>
-    <xsl:value-of select='$tval'/>
-    <xsl:text>");</xsl:text>
-  </xsl:if>
-</xsl:template>
-
-<xsl:template name="makeMap">
-  <xsl:param name="lrtb"/>
-  <xsl:param name="rltb"/>
-  <xsl:param name="tbrl"/>
-  <xsl:choose>
-    <xsl:when test="parwmrel2abs">
-      <xsl:text>parentFO.propertyList</xsl:text>
-    </xsl:when>
-    <xsl:otherwise>
-     <xsl:text>propertyList</xsl:text>
-    </xsl:otherwise>
-  </xsl:choose>
-  <xsl:text>.wmMap(Constants.PR_</xsl:text>
-  <xsl:apply-templates mode="x">
-    <xsl:with-param name="dir" select='$lrtb'/>
-  </xsl:apply-templates>
-  <xsl:text>, Constants.PR_</xsl:text>
-  <xsl:apply-templates mode="x">
-    <xsl:with-param name="dir" select='$rltb'/>
-  </xsl:apply-templates>
-  <xsl:text>, Constants.PR_</xsl:text>
-  <xsl:apply-templates mode="x">
-    <xsl:with-param name="dir" select='$tbrl'/>
-  </xsl:apply-templates>
-  <xsl:text>)</xsl:text>
-</xsl:template>
-
-<xsl:template match="corresponding//text()" mode="x">
-  <xsl:variable name="tval" select='normalize-space(.)'/>
-  <xsl:if test="$tval != ''">
-    <xsl:call-template name="makeEnumConstant">
-      <xsl:with-param name="propstr" select="$tval"/>
-    </xsl:call-template>
-  </xsl:if>
-</xsl:template>
-
-<xsl:template match="propval/wmrel2abs">
-  <xsl:text>
-        sbExpr.append(propertyList.wmRelToAbs(PropertyList.</xsl:text>
-  <xsl:value-of select="@dir"/>
-  <xsl:text>));</xsl:text>
-</xsl:template>
-
-<xsl:template match="propval/parwmrel2abs">
-  <xsl:text>
-        sbExpr.append(parentFO.propertyList.wmRelToAbs(PropertyList.</xsl:text>
-  <xsl:value-of select="@dir"/>
-  <xsl:text>));</xsl:text>
-</xsl:template>
-
-<xsl:template match="propval/wmabs2rel">
-  <xsl:text>
-        sbExpr.append(propertyList.wmAbsToRel(PropertyList.</xsl:text>
-  <xsl:value-of select="@dir"/>
-  <xsl:text>));</xsl:text>
-</xsl:template>
-
-<xsl:template match="propval/wmrel2abs" mode="x">
-  <xsl:param name="dir"/>
-  <xsl:value-of select="$dir"/>
-</xsl:template>
-
-<xsl:template match="propval/parwmrel2abs" mode="x">
-  <xsl:param name="dir"/>
-  <xsl:value-of select="$dir"/>
-</xsl:template>
-
-<xsl:template match="propval/wmabs2rel" mode="x">
-  <xsl:param name="dir"/>
-  <xsl:value-of select="$dir"/>
-</xsl:template>
-
-<!-- avoid unwanted output to placeholder file -->
-<xsl:template match="localname"/>
-
-<!-- Check that each member of the nodeset dtlist has the same value.
-     Print a message if any member of dtlist is different
-     from the first member. Return the first member.
- -->
-<xsl:template name="check-subprop-datatype">
-  <xsl:param name="dtlist"/>
-  <xsl:variable name="dt">
-    <xsl:value-of select='$dtlist[1]'/>
-  </xsl:variable>
-  <xsl:for-each select="$dtlist">
-    <xsl:if test=". != $dt">
-      <xsl:message>
-        <xsl:text>Conflict between subproperty datatypes: </xsl:text>
-        <xsl:value-of select='.'/> != <xsl:value-of select='$dt'/>
-      </xsl:message>
-    </xsl:if>
-  </xsl:for-each>
-  <xsl:value-of select='$dt'/>
-</xsl:template>
-
-<!-- If the value of an enumeration constant contains two or more words,
-     separated by a blank, map all of these words to the same constant.
--->
-<xsl:template name="enumvals">
-  <xsl:param name="specvals"/>
-  <xsl:if test='string-length($specvals)>0'>
-    <xsl:variable name="oneval" select="substring-before($specvals, ' ')"/>
-    <xsl:text>
-        if (value.equals("</xsl:text>
-    <xsl:value-of select="$oneval"/>
-    <xsl:text>")) {
-            return s_prop</xsl:text>
-    <xsl:value-of select="@const"/>
-    <xsl:text>;
-        }</xsl:text>
-    <xsl:call-template name="enumvals">
-      <xsl:with-param name="specvals" select="substring-after($specvals, ' ')"/>
-    </xsl:call-template>
-  </xsl:if>
-</xsl:template>
-
-</xsl:stylesheet>
index 7ffd6194ae97c14b2adbff132b4092730a3c7491..c7382f3f1e98e1ec86a324d273986a666e044be6 100644 (file)
@@ -27,6 +27,9 @@ import java.awt.geom.AffineTransform;
 import org.w3c.dom.Element;
 import org.w3c.dom.svg.SVGDocument;
 
+// Avalon
+import org.apache.avalon.framework.logger.Logger;
+
 // Batik
 import org.apache.batik.dom.svg.SAXSVGDocumentFactory;
 import org.apache.batik.dom.svg.SVGOMDocument;
@@ -87,7 +90,8 @@ public class SVGReader implements ImageReader {
         if (batik) {
             try {
                 Loader loader = new Loader();
-                return loader.getImage(uri, bis, ua);
+                return loader.getImage(uri, bis, ua.getLogger(), 
+                    ua.getPixelUnitToMillimeter());
             } catch (NoClassDefFoundError e) {
                 batik = false;
                 //ua.getLogger().error("Batik not in class path", e);
@@ -104,7 +108,7 @@ public class SVGReader implements ImageReader {
      */
     class Loader {
         private FopImage.ImageInfo getImage(String uri, InputStream fis,
-                FOUserAgent ua) {
+                Logger logger, float pixelUnitToMM) {
             // parse document and get the size attributes of the svg element
 
             try {
@@ -174,8 +178,8 @@ public class SVGReader implements ImageReader {
 
                 Element e = doc.getRootElement();
                 String s;
-                SVGUserAgent userAg =
-                        new SVGUserAgent(ua, new AffineTransform());
+                SVGUserAgent userAg = new SVGUserAgent(logger, pixelUnitToMM,
+                            new AffineTransform());
                 BridgeContext ctx = new BridgeContext(userAg);
                 UnitProcessor.Context uctx =
                         UnitProcessor.createContext(ctx, e);
index 01780d0b0687c69d3d9f269a4bf81cebf23daf81..04d38ecf03592777c8a4dcfe7c9591bf1755fb3d 100644 (file)
@@ -220,7 +220,9 @@ public class PDFXMLHandler implements XMLHandler {
             int yOffset = pdfInfo.currentYPosition;
 
             SVGUserAgent ua
-                 = new SVGUserAgent(context.getUserAgent(), new AffineTransform());
+                 = new SVGUserAgent(context.getUserAgent().getLogger(), 
+                        context.getUserAgent().getPixelUnitToMillimeter(),
+                        new AffineTransform());
 
             GVTBuilder builder = new GVTBuilder();
             BridgeContext ctx = new BridgeContext(ua);
index 20e50e667e5272c72b2abd5e593758fb48dfb13a..522ef0b79fd303e118aade52bc367bd12173e558 100644 (file)
@@ -257,8 +257,9 @@ public class PSXMLHandler implements XMLHandler {
             PSGenerator gen = psInfo.psGenerator;
 
             SVGUserAgent ua
-                 = new SVGUserAgent(context.getUserAgent(), new AffineTransform());
-
+                 = new SVGUserAgent(context.getUserAgent().getLogger(), 
+                        context.getUserAgent().getPixelUnitToMillimeter(),
+                        new AffineTransform());
 
             GVTBuilder builder = new GVTBuilder();
             BridgeContext ctx = new BridgeContext(ua);
index 7d5e80f835fdbbd70f33f52428b7b8846f43530a..06aaee0f67f5ea5140f11f696c0d0e19f4a1d8e7 100644 (file)
@@ -18,7 +18,7 @@
  
 package org.apache.fop.svg;
 
-import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.apps.FOFileHandler;
 import org.apache.batik.bridge.UserAgentAdapter;
 import org.apache.avalon.framework.logger.Logger;
 
@@ -34,16 +34,20 @@ import java.awt.Dimension;
  */
 public class SVGUserAgent extends UserAgentAdapter {
     private AffineTransform currentTransform = null;
-    private FOUserAgent userAgent;
+    private Logger logger;
+    private float pixelUnitToMillimeter = 0.0f;
 
     /**
      * Creates a new SVGUserAgent.
-     * @param ua the FO user agent
+     * @param log an Avalon logging instance
+     * @param pixelUnitToMM The pixel to millimeter conversion factor 
+     *                  currently in effect
      * @param at the current transform
      */
-    public SVGUserAgent(FOUserAgent ua, AffineTransform at) {
+    public SVGUserAgent(Logger log, float pixelUnitToMM, AffineTransform at) {
+        logger = log;
+        pixelUnitToMillimeter = pixelUnitToMM;
         currentTransform = at;
-        userAgent = ua;
     }
 
     /**
@@ -51,7 +55,7 @@ public class SVGUserAgent extends UserAgentAdapter {
      * @return Logger the logger
      */
     protected final Logger getLogger() {
-        return this.userAgent.getLogger();
+        return logger;
     }
 
     /**
@@ -59,7 +63,7 @@ public class SVGUserAgent extends UserAgentAdapter {
      * @param message the message to display
      */
     public void displayError(String message) {
-        getLogger().error(message);
+        logger.error(message);
     }
 
     /**
@@ -67,7 +71,7 @@ public class SVGUserAgent extends UserAgentAdapter {
      * @param ex the exception to display
      */
     public void displayError(Exception ex) {
-        getLogger().error("SVG Error" + ex.getMessage(), ex);
+        logger.error("SVG Error" + ex.getMessage(), ex);
     }
 
     /**
@@ -76,7 +80,7 @@ public class SVGUserAgent extends UserAgentAdapter {
      * @param message the message to display
      */
     public void displayMessage(String message) {
-        getLogger().info(message);
+        logger.info(message);
     }
 
     /**
@@ -84,7 +88,7 @@ public class SVGUserAgent extends UserAgentAdapter {
      * @param message the message to display
      */
     public void showAlert(String message) {
-        getLogger().warn(message);
+        logger.warn(message);
     }
 
     /**
@@ -92,7 +96,7 @@ public class SVGUserAgent extends UserAgentAdapter {
      * @return the pixel unit to millimeter conversion factor
      */
     public float getPixelUnitToMillimeter() {
-        return userAgent.getPixelUnitToMillimeter();
+        return pixelUnitToMillimeter;
     }
 
     /**
@@ -124,7 +128,7 @@ public class SVGUserAgent extends UserAgentAdapter {
      * @return the XML parser class name
      */
     public String getXMLParserClassName() {
-        return org.apache.fop.apps.FOFileHandler.getParserClassName();
+        return FOFileHandler.getParserClassName();
     }
 
     /**