BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Modules
Visualisation

Modules

 Datatypes for the VIEW framework
 
 QT Dialogs
 
 Kernel
 
 Model Processors
 
 Geometric Objects
 
 Renderer
 
 Modular Widgets
 

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: <br>
   - GeometricObject classes: like Sphere, Tube, Point, etc. and base 
     classes for easy creation of such primitives
   - Classes to access the OpenGL library for building and handling the
     display lists required for rendering the visualization
   - Widgets that can be used for building an application

 First, the class \link BALL::VIEW::MainControl MainControl \endlink is the most important widget for building an application.
 The \link BALL::VIEW::MainControl MainControl \endlink 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 \link BALL::VIEW::ModularWidget ModularWidget \endlink 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 \link BALL::VIEW::MainControl MainControl \endlink 
 (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 \link BALL::VIEW::ModularWidget ModularWidget \endlink just create it with 
 \link BALL::VIEW::MainControl MainControl \endlink as parent. 
 Each ModularWidget is a component that can be used to build an application block for block.
 They use a \link BALL::VIEW::Message Message \endlink communication queue which is maintained by the class 
 \link BALL::VIEW::MainControl MainControl \endlink 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 \link BALL::VIEW::MainControl MainControl 
 \endlink 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 \link BALL::VIEW::Scene Scene \endlink that provides the three-dimensional
 interactive visualization of the above mentioned \link BALL::VIEW::GeometricObject GeometricObject \endlink 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.
 <br> <br> <br>
 The following code is an example for building an application (the includes have been omitted):
 <br>
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.