| <?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 - Architecture Overview</title> |
| <subtitle>Batik's modules explained</subtitle> |
| <authors> |
| <person name="Vincent Hardy" email="vincent.hardy@eng.sun.com"/> |
| </authors> |
| </header> |
| |
| <body> |
| <s1 title="Introduction"> |
| <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 |
| <link href="http://opensource.objectsbydesign.com/batik/index.html">Batik UML diagrams.</link></p> |
| <p>The Batik modules are of one of three types:</p> |
| <ul> |
| <li><link href="#applicationComponents">Application Modules</link></li> |
| <li><link href="#coreComponents">Core Modules</link></li> |
| <li><link href="#lowLevelComponents">Low Level Modules</link></li> |
| </ul> |
| <p>The following figure illustrates these three module types. </p> |
| <figure src="images/HighLevelArchitecture.png" alt="Batik Architecture" /> |
| <p>Application Modules illustrate how to use |
| the Core Modules and let users evaluate the Batik software by experimenting |
| with its features.</p> |
| <p>The Core Modules are the heart of Batik and the primary deliverables for the |
| projects. These are the modules developers use to manipulate, generate, create, |
| convert and render SVG content</p> |
| <p>Finally, the Low Level Modules are used internally by the Core Modules to |
| accomplish their work. These modules are not typically used by developers directly.</p> |
| </s1> |
| |
| <anchor id="applicationComponents" /> |
| <s1 title="Application Modules"> |
| <p>As mentioned earlier, the Application Modules illustrate the functionality that Batik |
| offers. </p> |
| <p>For example, the <link href="svgviewer.html">SVG Browser</link> 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 <link href="svgpp">SVG Pretty Printer</link> 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 <link href="ttf2svg">SVG Font Converter</link> 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 True Type Font format to the SVG Font format.</p> |
| <p>Finally, the <link href="svgrasterizer.html">SVG Rasterizer</link> shows how to leverage the |
| <link href="rasterizerTutorial">Transcoder API</link> to convert to and from SVG content</p> |
| <p> |
| Note that even though the Application Modules are meant to be usefull 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> |
| </s1> |
| |
| <anchor id="coreComponents" /> |
| <s1 title="Core Modules"> |
| <p>The Batik core modules are the heart of the Batik architecture. They can be used individually |
| or in combinations for various purposes, and the <link href="#applicationComponents">Application Modules</link> |
| offer some usage examples. |
| </p> |
| <ul> |
| <li><link href="svggen.html"><code>SVGGraphics2D</code></link> is a modules that lets all |
| Java technology applications 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><link href="domapi.html"><code>SVG DOM</code></link> 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><link href="jsvgcanvas.html"><code>JSVGCanvas</code></link> is a UI component that can display |
| SVG content and let the user interact with that content (zoom, pan, rotate, text selection, etc...)</li> |
| <li><code>Bridge</code> this module, more rarely used directly, can convert an |
| SVG document into the internal representation Batik uses for graphics, based on the |
| Graphic Vector Toolkit, GVT</li> |
| </ul> |
| </s1> |
| |
| <anchor id="lowLevelComponents" /> |
| <s1 title="Low Level Modules"> |
| <p>The Low Level Modules are not expected to be used directly by developers using the Batik |
| API. Rather, they are supporting the operation of the Core Modules. The Low Level Modules |
| include:</p> |
| <ul> |
| <li>The <code>Graphic Vector Toolkit</code> (GVT), which represents a view of the DOM tree |
| that is more suitable for for rendering and event handling purposes. </li> |
| <li>The <code>Renderer</code> 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 it deems necessary and does not have to be raster based.</li> |
| <li>The <code>Micro Parsers</code>. These are parsers for complex SVG attributes such as |
| <code>transform</code> or <code>color</code> attributes, which higher level modules |
| rely on</li> |
| </ul> |
| </s1> |
| </body> |
| </document> |