Behind RLPlot

RLPlot is a true cross plattform application, designed to work on all common platforms. Current development supports Linux using Trolltechs Qt, and Windows. The build for Windows does not use Qt. This means that it is a true Linux application on Linux and a true Windows application on Windows. All platform specific code is concentrated in specific source files, QT_Spec.cpp and QT_Spec.h for Linux/Qt, and WinSpec.cpp and WinSpec.h for Windows. This availability for different platforms implies that a lot of low level programming is included in the source files, including workarounds for missing features.
There exists also a command line program, exprlp, which does not use any graphical user interface. It can be used to convert RLPlot graph files (*.rlp) to other formats. Build using a graphical user interface are built with use_gui.cpp while exprlp uses no_gui.cpp.


To increase portability dialogs of RLPlot are coded in a platform independent way. This notation looks like that:
{1, 2, 0, DEFAULT, PUSHBUTTON, (void*)"OK", 155, 10, 45, 12},
{2, 3, 0, 0x0L, PUSHBUTTON, (void*)"Cancel", 155, 25, 45, 12},
{3, 0, 4, ISPARENT | CHECKED, GROUP, NULL, 138, 40, 55, 12},
This notation is greatly inspired by historic GEM programming where each line defines a record for one element of a dialog. All elements are declared and implemented in the files TheDialog.cpp and TheDialog.h.
The first element of each record is an identifier for this record. The next elemnt identifies the record which record has to be drawn next, zero means 'return'. The third element is not zero if the record has children. It identifies the first child. Children are drawn first before the next record is processed. The following fields contain an optional flag value, the type of the record, a pointer whose meaning is dependent on the pointer type, x position, y position, width and height.
An alternative notation for dialogs used in RLPlot is as follows:
".,,4,ISPARENT | CHECKED,GROUP,0,138,40,55,12\n"
This notation is equivalent to the first where instead of pointers, indices to pointers in arrays are given. Both notations are used heavily in ProprtyDlg.cpp and reports.cpp.