BALL provides sophisticated visualization tools, both for integration into user-defined applications and for our stand-alone viewer BALLView:
Although a large number of tools for the three-dimensional visualization of molecular structures exists, it often proved convenient to tailor a visualization tool specifically for a certain purpose. In BALL, we chose two complementary approaches. First, we wanted to give the user the full flexibility of a visualization framework, knowing very well that the development of such a user interface is a very time-consuming process. Second, we wanted to offer a very simple, albeit less powerful, interface that allows the user to concentrate on the core problem at hand and handle all visualization issues with as little overhead as possible.
The visualization component of BALL, BALLView, is based on the GUI toolkit QT and on OpenGL for three-dimensional rendering. It provides an extensive set of classes for the visualization of three-dimensional geometric objects, molecules (using a wide variety of models), and surfaces. The BALLView classes are QT widgets that may be integrated into any QT application. There are widgets for 3D structure viewers, for the visualization of one- and two-dimensional NMR spectra, ready-made dialogs for reading and writing molecular structures, and many more. Hence, the user's main task is the ``wiring'' of these components, i.e. implementing the interaction of these classes. For standard applications, the BALLView widgets take over most of this task. Each of these widgets creates its own menu entries (for example, a molecule viewer widget creates menu entries to change the representation of the molecule) and notifies all other BALLView widgets it is aware of of changes in its state. Thus, the implementation effort can be restricted to a bare minimum.