<?xml version="1.0"?>
<!DOCTYPE document SYSTEM "./dtd/document-v10.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.                                                         -->
<!-- ========================================================================= -->

<!-- ========================================================================= -->
<!-- author vincent.hardy@eng.sun.com                                          -->
<!-- version $Id$ -->
<!-- ========================================================================= -->
<document>
    <header>
        <title>Batik SVG Toolkit</title>
        <subtitle>SVG Tools in Java</subtitle>
        <authors>
            <person name="Vincent Hardy" email="vincent.hardy@eng.sun.com"/>
            <person name="Thierry Kormann" email="tkormann@apache.org"/>
            <person name="Stephane Hillion" email="stephane@hillion.org"/>
        </authors>
    </header>

    <body>
        <s1 title="Batik Overview">
        <figure src="images/1_0beta2splash.png" alt="Batik release 1.0" />

        <p>
        Batik is a Java(tm) technology based toolkit for applications that want 
        to use images in the <link href="http://www.w3.org/TR/SVG/">Scalable Vector
        Graphics (SVG)</link> format for various purposes, such as
        viewing, generation or manipulation.
        </p>

        <p>
        The project's ambition is to give developers a set of core 
        modules which can be used together or individually to support 
        specific SVG solutions. Example modules are, SVG parsers, SVG 
        generators and SVG DOM implementations. Another ambition for 
        the Batik project is to make it highly extensible (for 
        example, Batik allows the developer to handle custom SVG 
        tags). Even though the goal of the project is to provide a 
        set of core modules, one of the deliverables is a full fledged 
        SVG browser implementation which validates the various modules 
        and their inter-operability. 
        </p>

        </s1>

        <s1 title="Applications of Batik">
        <p><img src="images/batikUses.jpg" alt="Batik use cases" />
        With Batik, you can manipulate SVG documents anywhere Java is
        available. You can also use the various Batik modules to
        generate, manipulate, transcode and search SVG images in your 
        applications.
        </p>
        <p>
        Batik makes it easy for Java based applications to deal with SVG
        contents. For example, using Batik's SVG generator, a Java application
        can very easily export its graphics in the SVG format. Using 
        Batik's SVG processor and SVG Viewing component, an application can very easily
        integrate SVG viewing capabilities. Another possibility is to
        use Batik's modules to convert SVG to various formats, such as 
        raster images (JPEG or PNG).
        </p>
        <p>
        Batik provides core components for handling and processing SVG
        files.
        </p>
         </s1>

        <s1 title="The SVG Specification">
        <p>
        Scalable Vector Graphics, SVG, is a <link href="http://www.w3.org">W3C</link>
        Candidate Recommendation. It defines an XML grammar for rich 2D graphics
        which includes features such as transparency, arbitrary geometry, filter
        effects (shadows, lighting effects, etc...), scripting and animation.
        </p>
        <p>
        The SVG specification can be found on the 
        <link href="http://www.w3.org/TR/SVG/">W3C site</link>. <strong>Batik 1.0 is conformant
        with the November 2nd, 2000 Candidate Recommendation Specification</strong> and its 
        modifications leading to the upcoming Proposed Recommendation. Note that because
        SVG is not a final Recommendation yet, it may still change. The Batik team will
        keep the implementation current with the latest specification developments.
        </p>
         </s1>

        <s1 title="Batik's Implementation Status">
        <p>
        At this time, Batik provides a good implementation for all the SVG static 
        features, supports linking, and has some scripting support, even though dynamic 
        modification of SVG documents is not yet available and animation is
        not supported.
        </p>
        <p>
        You will find a detailed description of the set of SVG features
        Batik supports on the 
        <link href="status.html">Status</link>
        page.
        </p>
        </s1>
 
        <s1 title="Download Batik">
        <p>
        You can get Batik on the 
        <link href="dist">download page</link>.
        </p>
        <note>
        All other libraries needed by Batik are included in the distribution.
        As a consequence the Batik archive is quite big, but
        after you downloaded it, you will not need anything else.
        </note>
        </s1>
    </body>
</document>
