SVG Salamander
==============

SVG Salamander is distributed under the Lesser GNU Public License.  A copy of this license should have been provided with this product.  Please read this license.  If not, it can be found at http://www.gnu.org/licenses/lgpl.html.


Description
-----------

Salamander SVG is an SVG engine with a focus on being optimized for rendering in Java. It opts for minimal code, optimum memory use, rendering speed and ease of programmer manipulation over more formally correct implementations. It also implements most of the SVG spec, meaning that whatever you design in your favorite SVG editor ought to be displayable with Salamander SVG.

Intended purpose
----------------

Salamander SVG is intended to provide some functionallity that I felt was missing in the Batik engine.  I had evalutated the Batik SVG engine, and while it was a cool engine, found it unsuitable for my purposes. Salamander was born with with an intention to make it easy for artists and programmers to quickly create content for Java.

With Salamander SVG, you get:
-----------------------------

    * a much smaller code foot print than Batik, and only one JAR file to include
    * direct access to the scene graph tree. You can use programatic commands to manipulate it directly.
    * index of all named shapes in the SVG graph.
    * picking shapes with (x, y) coorinates is available, and can be used to implement graphical buttons
    * clip region sensitivity makes for fast rendering when only updating part of the image. This makes panning the camera quite efficient.
    * easy rendering to any Graphics2D or BufferedImage
    * network awareness, which makes it easy for SVG to find SVG files it 'imports', even if they're stored on a remote server. 

Coming soon
-----------

    * Animation is mostly implemented. It is possible to play most SVG files or simply render any frame of their timeline.
    * Scripting is currently not implemented, but ought to be easy to add. It will be implemented in a fashion that allows the programmer to incorporate their favorite scripting environment (rhino, beanshell, jython, or another) 

Workflow
--------

An SVG editor allows an artist to quickly create fancy 2D content. (SodiPodi, Adobe Illustrator and Jasc WebDraw are some popular SVG editors) These documents can then be loaded by a Java program and rendered. Since SVG is a vector format, rendering is possible to an infinite resolution.

In production, the user would load the SVG file produced by the artist into an SVGUniverse. The file itself would be a scene graph encapsulated by an SVGDiagram within this universe. The user can then perform operations on this scene graph, altering values, querying for named shapes, performing picking, setting the current animation time, or rendering it to the preferred graphics device.

Potentially, SalamanderSVG could allow Java to perform very much like Macromedia Flash.

Current status
--------------

SalamanderSVG is currently part of the Salamander project hosted on kitfox.com, and will be uploaded soon.

http://www.kitfox.com/

You can contact me at mark@kitfox.com

SVG Salamander is copyright © Mark McKay 2004





