<?xml version="1.0"?>

<!--

   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You 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 vincent.hardy@eng.sun.com                                          -->
<!-- version $Id: architecture.xml 201374 2004-08-18 07:17:26Z vhardy $ -->
<!-- ========================================================================= -->

<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
<document>
  <header>
    <title>Architecture overview</title>
  </header>

  <body>
    <p>This document briefly describes the Batik architecture and the role of each of 
      its modules. For detailed module design, you can refer to the 
      Batik UML diagrams <a href="http://opensource.objectsbydesign.com/batik/index.html">Object by Design</a>
      or <a href="http://www.yworks.com/products/yDoc/showcase/batik-1.5/">yWorks</a>.</p>
    <p>The Batik modules are of one of three types:
      application modules, core modules and low level modules.
      The following figure illustrates these three module types.</p>
    <div class="figure"><img src="images/HighLevelArchitecture.png" alt="Batik Architecture" />
    </div>
    <p><a href="#applicationComponents">Application modules</a> illustrate how to use
      the core modules and let users evaluate the Batik software by experimenting
      with its features.</p>
    <p>The <a href="#coreComponents">Core modules</a> are the heart of Batik and the primary deliverables for the 
      projects. These are the modules developers use to manipulate, generate, create, 
      convert, render and view SVG content.</p>
    <p>Finally, the <a href="#lowLevelComponents">Low level modules</a> are used internally by the core modules to 
      accomplish their work. These modules are not typically used by developers directly.</p> 

    <section id="applicationComponents">
      <title>Application modules</title>
      <p>As mentioned earlier, the application modules illustrate the functionality that Batik
        offers. </p>
      <p>For example, the <a href="site:browser">SVG browser</a> is built using several
        Batik core modules (such as the <code>JSVGCanvas</code> GUI component and the <code>ImageTranscoder</code>s)
        and illustrates how Batik lets you not only view, zoom, pan and rotate SVG documents, but also search them
        and convert them to other formats (such as JPEG, TIFF or PNG).</p>
      <p>The <a href="site:pretty-printer">SVG pretty printer</a> is another example that shows how Batik
        lets you manipulate and transform SVG content, here for the purposed of tidying up potentially
        disorganized SVG files.</p>
      <p>The <a href="site:font-converter">SVG font converter</a> illustrates how Batik can help you embed
        SVG font definitions in an SVG file by providing an application that converts ranges of 
        characters from a TrueType Font format to the SVG font format.</p>
      <p>Finally, the <a href="site:rasterizer">SVG rasterizer</a> shows how to leverage the     
        <a href="site:transcoder">transcoder API</a> to convert to and from SVG content.</p> 
      <p>
        Note that even though the application modules are meant to be useful and fun to use, they
        are not the primary deliverables of the Batik project. Instead, they are illustrations of how the
        Batik core modules might be used and combined.</p>
    </section>

    <section id="coreComponents">
      <title>Core modules</title>
      <p>The Batik core modules are the heart of the Batik architecture. They can be used individually
        or in combination for various purposes, and the <a href="#applicationComponents">application modules</a>
        offer some usage examples.
      </p>
      <ul>
        <li>The <a href="site:generator">SVG generator</a> is a module containing
          <code><a href="../javadoc/org/apache/batik/svggen/SVGGraphics2D.html">SVGGraphics2D</a></code>
          class, that lets all Java applications or applets easily convert their
          graphics to the SVG format, as easily as they draw to a screen or a printer, 
          by leveraging the Java 2D API’s extensible design.</li>
        <li><a href="site:dom-api">SVG DOM</a> an implementation of the SVG DOM API defined
          in the SVG recommendation. It lets the programmer manipulate SVG documents in a Java program.</li>
        <li>The <a href="site:swing">Swing components</a> module includes, primarily, the
          <code><a href="../javadoc/org/apache/batik/swing/JSVGCanvas.html">JSVGCanvas</a></code>
          class, a UI component that can display SVG content and let the user
          interact with that content (zoom, pan, rotate, select text, etc.).</li>
        <li>The <strong>Bridge</strong> module is rarely used directly. It is responsible for creating 
          and maintaining an appropriate object corresponding to an SVG element. The bridge converts an
          SVG document into the internal representation Batik uses for graphics (GVT, the 
          Graphic Vector Toolkit).</li>
        <li>The <a href="site:transcoder">transcoder</a> is a module that provides a generic API for 
          transcoding an input to an output. This module transcodes an input stream or a document 
          into a particular ouput format, used for converting SVG documents to other types.</li>
      </ul>
    </section>

    <section id="lowLevelComponents">
      <title>Low level modules</title>
      <p>The low level modules are not expected to be used directly by developers using the Batik
        API. Rather, they support the operation of the core modules. The low level modules
        include:</p>
      <ul>
        <li>The <strong>Graphic Vector Toolkit</strong> (GVT) module, which represents a view of the DOM tree
          that is more suitable for for rendering and event handling purposes. This module describes 
          DOM tree in terms of a tree of Java graphics objects.</li>
        <li>The <strong>Renderer</strong> module is responsible for rendering a GVT tree and any 
          related task. For example, a raster based renderer may perform
          some caching (the default renderer in Batik does that). However, a renderer could perform
          any task deemed necessary and does not have to be raster based.</li>
        <li>The <a href="site:parsers">SVG parser</a> module contains parser classes for complex 
          SVG attributes such as the <code>transform</code> or <code>color</code> attributes. Higher level modules 
          rely on the SVG parser module.</li>
      </ul>
    </section>
  </body>
</document>
