<?xml version="1.0"?>
<!DOCTYPE document SYSTEM "./dtd/document-v10.dtd">

<!--

   Copyright 2000-2003  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.

-->
<!-- ====================================================================== -->
<!-- author Thierry.Kormann@sophia.inria.fr                                 -->
<!-- author vincent.hardy@eng.sun.com                                       -->
<!-- version $Id$ -->
<!-- ====================================================================== -->
<document>
    <header>
        <title>Batik Status</title>
        <subtitle>Implementation Status and Code Metrics</subtitle>
        <authors>
            <person name="Vincent Hardy" email="vincent.hardy@eng.sun.com" />
            <person name="Thierry Kormann" email="Thierry.Kormann@sophia.inria.fr" />
        </authors>
    </header>

    <body>
        <s1 title="Introduction">
            <p>
            This page provides information about Batik's
            implementation status in terms of code metrics and SVG
            support. It is broken down into the following
            sections:</p>

            <ul>
                <li><link href="#status">Batik status</link> provides
                information about what Batik roadmap and current
                support of SVG features. This section is further
                broken down into:<ul>

                    <li><link href="#roadmap">Roadmap</link> describes
                    the upcoming milestones in the Batik
                    implementation</li>

                    <li><link href="#elementStatus">SVG Elements and
                    Attributes</link> which defines which elements and
                    attributes are supported by the Batik
                    project.</li>

                    <li><link href="#propertiesStatus">CSS
                    Properties</link> which defines which CSS
                    properties are supported by the Batik
                    components.</li>

                    <li><link href="#svgDomStatus">SVG DOM</link>
                    which defines which portions of the SVG DOM are
                    supported by the Batik implementation.
                    </li>

                    <li><link href="#beSuiteStatus">SVG BE
                    Suite</link> which defines which tests of the SVG
                    1.0 BE Suite are successfully passed by the Batik
                    browser (Squiggle).</li> 
                </ul></li>

                <li><link href="#metrics">Batik metrics</link>
                provides metrics for the Batik project: binary size
                for the various modules, source code size, lines of
                code, number of files etc...</li>
            </ul>
        </s1>

        <anchor id="status" />
        <s1 title="Batik Status" />
            
            <anchor id="roadmap" />

            <s1 title="Batik roadmap">

            <ul>
                <li><strong>Batik 1.1</strong> (December 2001) was
                focused on supporting all static SVG features. In
                addition, Batik 1.1 supported hyperlinking and
                'one-way' scripting (which means that scripts could
                handle events but modifications to the SVG document by
                scripts would not be reflected visually by the Batik
                viewing component.
                </li>

                <li><strong>Batik 1.5</strong> (Summer 2003) is
                focussed on supporting SVG scripting fully. The
                following sections provide details on the exact support
                of the SVG scripting features.</li> 
            </ul>

            </s1>

            <anchor id="elementStatus" />
            <s1 title="SVG Elements and Attributes Support" >

            <p> The <link href="supportedElements.html">supported elements table</link> lists all the elements part of the SVG
            specification that are supported in the Batik toolkit rendering
            components (i.e., the <code>ImageTranscoder</code> and the <code>JSVGCanvas</code> Swing
            component).  </p>

            </s1>

            <anchor id="propertiesStatus" />
            <s1 title="CSS Properties Support" >

            <p> The <link href="supportedProperties.html">supported properties table</link> lists all the CSS properties part of the SVG
            specification or the CSS2 specification that are supported in the
            Batik toolkit rendering components (i.e., the <code>ImageTranscoder</code> and the
            <code>JSVGCanvas</code> Swing component).  </p>

            </s1>

            <anchor id="svgDomStatus" />
            <s1 title="SVG DOM Support" >

            <p>The <link href="SVGDOMstatus.html">SVG DOM implementation
            table</link> lists all SVG DOM interfaces and indicates for all
            methods the status of the implementation in Batik.</p>

            </s1>

            <anchor id="beSuiteStatus" />
            <s1 title="SVG BE Suite Status">
            <p>
            The <link href="http://www.w3.org/Graphics/SVG/Test/">SVG BE Test suite</link> is developed by the W3C SVG working
            group to allow implementation to check their level of
            conformance with the SVG specification. In that spirit,
            the table below shows how much of the test suite the 
            SVG Viewer included in the Batik distribution passes.
            </p>
            <p>
            There are two sections: the first one shows the tests
            Batik passes and the second shows the tests that 
            Batik does not pass (althought it will eventually).
            Each section lists
            static and dynamic SVG tests separately.
            </p>
           <p>
            Static ratings : passed: 93, not passed: 0 (Total: 93/93)
           </p>
           <p>
            Dynamic ratings : passed: 10, not passed 23 (Total: 10/33)
           </p>

            <p><em>Note</em> that the Batik tests go beyond the SVG Working Group BE test suite
            and that the <link href="test.html">Batik test suite infrastructure</link> contains
            several hundreds of tests in addition to the BE test suite.</p>
           
        <p><strong>Static Tests Passed by Batik</strong></p>
        <table>
            <!-- ############################################################## -->
<tr><td>color-datatypes-BE-01.svg</td><td>color-property-BE-02.svg</td><td>color-colorProf-BE-03.svg</td></tr>
            <!-- ############################################################## -->
<tr><td>coords-transforms-BE-02.svg</td><td>coords-units-BE-01.svg</td><td>coords-unitsProc-BE-05.svg</td></tr>	   

<tr><td>coords-viewBox-BE-03.svg</td><td>filters-convolve-BE-06.svg</td><td>filters-diffuseLt-BE-07.svg</td></tr>

	    <tr><td>filters-lights-BE-09.svg</td><td>filters-many-BE-01.svg</td><td>filters-specularLt-BE-08.svg</td></tr>
	    <tr><td>filters-blend-BE-02.svg</td><td>filters-blur-BE-12.svg</td><td>filters-dispMap-BE-16.svg</td></tr>
	    <tr><td>filters-feImage-BE-13.svg</td><td>filters-feTile-BE-14.svg</td><td>filters-fldMrgOff-BE-15.svg</td></tr>
	    <tr><td>filters-morph-BE-10.svg</td><td>filters-transfer-BE-04.svg</td><td>filters-turb-BE-11.svg</td></tr>
	    <tr><td>filters-colorMtrx-BE-03.svg</td><td>filters-composite-BE-05.svg</td><td>masking-mask-BE-05.svg</td></tr>
	    <tr><td>masking-mask-BE-06.svg</td><td>masking-property-BE-07.svg</td><td>gradPatt-linearGr-BE-01.svg</td></tr>
	    <tr><td>gradPatt-linearGr-BE-02.svg</td><td>gradPatt-linearGr-BE-03.svg</td><td>gradPatt-pattern-BE-07.svg</td></tr>
	    <tr><td>gradPatt-radialGr-BE-04.svg</td><td>gradPatt-radialGr-BE-04.svg</td><td>gradPatt-referenc-BE-08.svg</td></tr>
	    <tr><td>gradPatt-stop-BE-06.svg</td><td>gradPatt-stop-BE-10.svg</td><td>gradPatt-transfrm-BE-09.svg</td></tr>
	    <tr><td>masking-clipPath-BE-01.svg</td><td>masking-clipPath-BE-02.svg</td><td>masking-clipPath-BE-08.svg</td></tr>
            <tr><td>masking-clipRule-BE-03.svg</td><td>masking-groupOpac-BE-04.svg</td><td>masking-vportClip-BE-09.svg</td></tr>
	    <tr><td>paint-colIntProp-BE-05.svg</td><td>paint-inherit-BE-06.svg</td><td>paint-stroke-BE-02.svg</td></tr>
	    <tr><td>paint-fill-BE-01.svg</td><td>paint-markers-BE-03.svg</td><td>paint-markers-BE-04.svg</td></tr>
	    <tr><td>path-curves-BE-02.svg</td><td>path-curves-BE-03.svg</td><td>path-curves-BE-04.svg</td></tr>
	    <tr><td>path-lines-BE-01.svg</td><td>rendering-orderGr-BE-01.svg</td><td>rendering-shape-BE-03.svg</td></tr>
	    <tr><td>rendering-text-BE-02.svg</td><td>shapes-circle-BE-03.svg</td><td>shapes-ellipse-BE-02.svg</td></tr>
	    <tr><td>shapes-line-BE-04.svg</td><td>shapes-polygon-BE-05.svg</td><td>shapes-polyline-BE-06.svg</td></tr>
	    <tr><td>shapes-rect-BE-01.svg</td><td>structure-allElem-BE-09.svg</td><td>structure-basicG-BE-03.svg</td></tr>
	    <tr><td>structure-defs-BE-04.svg</td><td>structure-empty-BE-01.svg</td><td>structure-extRef-BE-10.svg</td></tr>
	    <tr><td>structure-image-BE-06.svg</td><td>structure-lang-BE-08.svg</td><td>structure-nested-BE-02.svg</td></tr>
	    <tr><td>structure-switch-BE-07.svg</td><td>structure-symbol-BE-05.svg</td><td>style-selector-BE-01.svg</td></tr>
	    <tr><td>style-selector-BE-02.svg</td><td>style-selector-BE-03.svg</td><td>text-text-BE-01.svg</td></tr>
	    <tr><td>text-tspan-BE-02.svg</td><td>text-textOnPath-BE-03.svg</td><td>text-tref-BE-04.svg</td></tr>
	    <tr><td>text-textAnchor-BE-05.svg</td><td>text-whiteSpace-BE-06.svg</td><td>text-altGlyph-BE-07.svg</td></tr>
	    <tr><td>text-i18n-BE-09.svg</td><td>text-alignment-BE-10.svg</td><td>text-alignment-BE-11.svg</td></tr>
	    <tr><td>text-selection-BE-13.svg</td><td>text-spacing-BE-14.svg</td><td>text-font-BE-15.svg</td></tr>
	    <tr><td>text-font-BE-16.svg</td><td>text-textLength-BE-17.svg</td><td>text-extTref-BE-18.svg</td></tr>
	    <tr><td>fonts-fontElement-BE-01.svg</td><td>metadata-sample-BE-01.svg</td><td>text-decoration-BE-12.svg</td></tr>

        </table>
        
        <anchor id="DynamicTest" />
        <p><strong>Dynamic Tests Passed by Batik</strong></p>
        <table>
	    <tr><td>linking-outBound-BE-01.svg</td><td>linking-xlinkAttr-BE-02.svg</td><td>linking-inBound-BE-03.svg</td></tr>
	    <tr><td >linking-view-BE-04.svg</td><td >linking-view-BE-05.svg</td><td>script-eventDom-BE-01.svg</td></tr>
            <tr><td>script-uiEvents-BE-02.svg</td><td>dom-core-BE-01.svg</td><td>dom-featureString-BE-03.svg</td></tr>
            <tr><td>dom-eventListener-BE-04.svg</td><td>&nbsp;</td><td>&nbsp;</td></tr>

        </table>
    


    <p><strong>Dynamic Tests Not Passed by Batik</strong></p>
        <table >
            <tr>
	    <td>animation-inherit-BE-10.svg</td>
	    <td>animation-overall-BE-01.svg</td>
	    <td>animation-timing-BE-05.svg</td>
            </tr>
            <tr>
	    <td>animation-values-BE-08.svg</td>
	    <td>extend-multiNS-BE-01.svg</td>
	    <td>interact-bubble-BE-04.svg</td>
            </tr>
            <tr>
	    <td>interact-pEvents-BE-05.svg</td>
	    <td>interact-zoomPan-BE-02.svg</td>
            <td>animation-add-BE-09.svg</td>
            </tr>
            <tr>
            <td>animation-href-BE-02.svg</td>
            <td>animation-motion-BE-11.svg</td>
            <td>animation-motion-BE-12.svg</td>
            </tr>
            <tr>
            <td>animation-targAtt-BE-04.svg</td>
            <td>animation-targElt-BE-03.svg</td>
            <td>animation-values-BE-06.svg</td>
            </tr>
            <tr>
            <td>animation-values-BE-07.svg</td>
            <td>dom-svg-BE-02.svg</td>
            <td>interact-bubble-BE-04-targ.svg</td>
            </tr>
            <tr>
            <td>interact-cursor-BE-08.svg</td>
            <td>interact-onload-BE-07.svg</td>
            <td>interact-pEvents-BE-06.svg</td>
            </tr>
            <tr>
            <td>interact-zoomPan-BE-01.svg</td>
            <td>interact-zoomPan-BE-03.svg</td>
            <td>&nbsp;</td>
            </tr>
        </table>
        
        </s1>

        <anchor id="metrics" />
        <s1 title="Batik Metrics">
            <p>The following numbers are as of July 10th 2003</p>

            <p><strong>Modules Binary size</strong></p>
            <table>
                <tr>
                    <td>Java API, AWT and Swing Extensions 
                        (batik-awt-util.jar, 
                        org.apache.batik.ext.awt and 
                        org.apache.batik.ext.swing)</td>
                    <td>354,700</td>
                </tr>
                <tr>
                    <td>Bridge module (batik-bridge.jar,
                    org.apache.batik.bridge)</td>
                    <td>240,925</td>
                </tr>
                <tr>
                    <td>CSS 2 support (batik-css.jar,
                    org.apache.batik.css)</td>
                    <td>221,112</td>
                </tr>
                <tr>
                    <td>Batik DOM support (batik-dom.jar, 
                        org.apache.batik.dom)</td>
                    <td>79,168</td>
                </tr>
                <tr>
                    <td>W3C and XML APIs (batik-ext.jar, org.w3c)</td>
                    <td>76,733</td>
                </tr>
                <tr>
                    <td>Sample extensions (batik-extensions.jar,
                    org.apache.batik.extension)</td>
                    <td>43,870</td>
                </tr>
                <tr>
                    <td>User interface utilities (batik-gui-util.jar,
                    org.apache.batik.dom)</td>
                    <td>135,636</td>
                </tr>
                <tr>
                    <td>GVT  (batik-gvt.jar,
                    org.apache.batik.gvt)</td>
                    <td>143,429</td>
                </tr>
                <tr>
                    <td>Micro Parsers  (batik-parser.jar,
                    org.apache.batik.parser)</td>
                    <td>35,078</td>
                </tr>
                <tr>
                    <td>Scripting engines infrastructure  (batik-script.jar,
                    org.apache.batik.script)</td>
                    <td>30,842</td>
                </tr>
                <tr>
                    <td>Batik SVG Dom Implementation  (batik-svg-dom.jar,
                    org.apache.batik.dom.svg)</td>
                    <td>376,951</td>
                </tr>
                <tr>
                    <td>SVG Generator (batik-svggen.jar, 
                        includes SVG font converter)</td>
                    <td>162,171</td>
                </tr>
                <tr>
                    <td>JSVG Canvas (batik-swing.jar,
                        org.apache.batik.swing)</td>
                    <td>126,040</td>
                </tr>
                <tr>
                    <td>Transcoder module (batik-transcoder.jar,
                    org.apache.batik.transcoder)</td>
                    <td>61,780</td>
                </tr>
                <tr>
                    <td>Utilities (batik-util.jar, org.apache.batik.util 
                        and org.apache.batik.i18n)</td>
                    <td>75,679</td>
                </tr>
                <tr>
                    <td>XML Parsing utilities (batik-xml.jar,
                    org.apache.batik.xml)</td>
                    <td>19,876</td>
                </tr>
            </table>

            <p><strong>External packages</strong></p>

            <table>
                <tr>
                    <td>ECMA Script Engine (js.jar)</td>
                    <td>593,919</td>
                </tr>

                <tr>
                    <td>Parser (xerces_2_5_0.jar)</td>
                    <td>934,835</td>
                </tr>

                <tr>
                    <td>XML Interfaces (xml-apis.jar)</td>
                    <td>107,431</td>
                </tr>

                <tr>
                    <td>FOP PDF Transcoder (pdf-transcoder.jar)</td>
                    <td>302,896</td>
                </tr>
            </table>

            <p><strong>Source Metrics</strong></p>

            <table>
                <tr>
                    <td>Number of source lines overall (includes comments and empty lines)</td>
                    <td>242,137</td>
                </tr>
                <tr>
                    <td>Number of source files overall</td>
                    <td>1,348</td>
                </tr>
            </table>

        </s1>
    </body>
</document>
