Visualisation

VIEW is a framework for the implementation of GUI based visualizations. More...
Collaboration diagram for Visualisation:

Modules

Datatypes for the VIEW framework
In this section the color datatypes and their help classes are defined.
QT Dialogs
This section contains all dialogs, which are created with QT.
Kernel
This section contains core classes that are responsible for handling client requests, building a connection with message queuing between widgets and dialogs and other things.
Model Processors
Geometric Objects
The Representation of molecular structures consists of primitive geometric objects, e.g.
Renderer
The VIEW libary currently contains two methods for rendering visualisations:
The obviously most import is the OPENGL renderer which provides hardware acceleration and is e.g.
Modular Widgets
To provide a high grade of encapsulation of functionality we have developed a design pattern of independent widgets, called ModularWidget .

Detailed Description

VIEW is a framework for the implementation of GUI based visualizations.

The GUI toolkit used in this framework is QT because it provides a portable GUI framework in C++ and allows the use of the OpenGL library for 3D rendering. VIEW defines several important basic data structures:

First, the class MainControl is the most important widget for building an application. The MainControl is the main window of the application. It provides a menu bar and a status bar that can be initialized and changed by its child widgets. Those child widgets must be derived from ModularWidget that provides interface methods to create, maintain and remove menu entries and preferences tab dialogs. Further the ModularWidget does all the connectivity needed to insert the widget properly into the MainControl (like setup the menu entries, fetch the preferences and handle the signal/slot mechanism of the underlying QT-widgets). To insert such a widget derived from ModularWidget just create it with MainControl as parent. Each ModularWidget is a component that can be used to build an application block for block. They use a Message communication queue which is maintained by the class MainControl that relays all catched messages to all other inserted ModularWidgets except the one which had originally sent the message. With these messages it is possible for the widgets to notify the MainControl of changes done to the graphical representation of certain objects or to change the contents of the status bar or even notify of objects which are no longer available. The forth class we introduce is the class Scene that provides the three-dimensional interactive visualization of the above mentioned GeometricObject objects. With this class it is possible to rotate, translate, zoom or pick objects by mouse click. Another important class is the class GenericControl. With the help of this class the hierarchical structure of the visualized objects can be displayed and manipulated.


The following code is an example for building an application (the includes have been omitted):

         int main(int argc, char **argv)
         {
           // creating mainframe and application
           QApplication app(argc, argv);
           MainControl main;
           app.setMainWidget(&main);

           // create the the molecular control
           new MolecularControl(&main);

           // create the scene 
           new Scene(&main);

           // start the application
           main.show();
           return app.exec();
         }
Note This application only demonstrates how to build an application. It opens a main window with both the MolecularControl and Scene. but as there are no means by which any object can be added no objects will be shown in either the MolecularControl and the Scene widget.

For more information about QT widgets and application programming see the documentation of the QT-library.

Generated on Thu Aug 6 18:29:58 2009 for BALL by doxygen 1.5.8