Diva is structured as a set of clearly-defined packages. We have designed the packages to minimize inter-package dependencies, so that the core functionality of each can be used independently of the others.
We use the Java2D API as the basis for most of our graphics code. By doing so, we gain very flexible rendering support, including arbitrary shapes, fills, clip regions, transparency, and affine transforms. The Diva canvas is a structured graphics layer over Java2D, that adds persistent objects, a well-structured graphical architecture, and high-level support for user interaction.
Graphs are crucial to the design of hardware-software systems. The Diva Graph package provides the support we need for building, displaying, and editing graphs. It is designed as a Swing-style MVC data and notification model, with extensible and pluggable graph rendering and layout tools. It is oriented towards the flexibility needed for visualization rather than the performance needed for algorithmic uses.
Ultimately, every visualization is part of some sort of user interface. The Diva GUI package provides a framework for several kinds of common user interfaces, including improved java support for Multiple-Document style interfaces. The package allows the user interface to be created as an applet or as a command-line application without excessive code duplication.
The sketch package provides data structures and algorithms for "digital ink" and gesture recognition for pen-based user interfaces. It provides the support that we need to explore the use of informal input and gesture-based navigation control in hardware-software design.
The util package provides utilities. Oo, yeah.
...fixme...For further information, see the release-specific software documentation: