A class library for easy implementation of graphical input and output.

-> Screenshots


  • Form based input of basic types with textual input lines, drop down lists and check boxes
  • Output of two dimensional function graphs in a Diagram
  • Output of vector based graphical elements (lines, boxes, shaded triangles, polygons, labels, bitmap images, ...)
  • 3d visualisation using the separately distributed -> 3dView addon.
  • PostScript export and printing
  • Thin client stub library - GUI functionality isolated in separate server process
  • Client and GUI-Server can optionally run on different machines

Platform specific notes


Linux/i386 RPM Binaries

Download the bvlnet RPM and if needed the expat and qt-mt RPMs. Install them using rpm -i --nodeps.

Server and library is installed to /usr/local/lib and /usr/local/bin. You can find documentation and examples in /usr/local/doc/bvlnet.

From source tarball

To install the Unix version of BVLnet you need the Qt library (version 3.x) with thread support and pthreads. (these requirements apply only for the GUI-server)

Installation procedure:

  1. extract the archive
  2. GUI-Server:
    • change to the server subdirectory
    • create the makefile using qmake (qmake -o Makefile
    • make the GUI-Server (make)
    • place the server in an accessible place (e.g. /usr/local/bin)
    • to use the PostScript and PDF export features place the files formats and from the resources directory in an accessible place (e.g. /usr/local/lib/bvl); if these files are placed into an other directory you need to edit the filenames at the end of server/getconfig.cpp
    • the PDF export feature requires an installed GhostScript in /usr/bin/gs; if your GhostScript is in an other location, you need to edit the filename at the end of server/getconfig.cpp; if GhostScript is not installed change the filename to the empty string
  3. Client library:
    • change to the lib subdirectory
    • make the library (make)
    • place the library in an accessible place (e.g. /usr/local/lib)
    • create symbolic links from to, and
    • run ldconfig
    • copy the include directory to an accessible place (e.g. /usr/local/include/bvlnet/)
    Some of these steps are specific for the Linux operating environment. Contributions to these notes for other platforms are welcome.


Installation on Windows systems is handled by an installation wizard. Precompiled versions of the GUI-Server and the client library are installed. The server is linked against Qt-3.0.5 for Win32. The required DLL is shipped within the installation archive.

The client library is precompiled with MSVS6 for the multithreaded runtime model with C++ exception handling. If your runtime model differs, you need to rebuild the library using the supplied DSW/DSP project files.

If AFPL GhostScript is installed, the GUI-Server provides PDF export and Windows printing functionality.

Instead of using the installation wizard the software can also be installed manually. You need to place the software in a directory of your choice and set either the enviroment variable BVL pointing to this directory (you should not change the structure of the package in this case) or configure the paths to the various BVL components using the registry. The registry entries may be placed in the LOCAL_MACHINE or CURRENT_USER hierarchy. The enviroment variable takes precedence over a registry entry in CURRENT_USER, which itself takes precedence over an entry in LOCAL_MACHINE. Finally you need to copy the shared libraries from the DLL subdirectory to a directory contained in the PATH.

Getting started

Now you are ready to use the library. Have a look at the supplied examples, first. For a detailed description of the functionality consult the library reference documentation. Don't forget to add the include directory and the bvlnet-library to your makefile or project. On Windows you have also to add the wsock32.lib to your project.


By downloading you accept the terms and conditions of the LPGL license agreement.

Current Version is R7 from 2002-11-06 for Unix/Linux or R8 from 2002-11-19 for Win32:


R7 to R8

  • Server is running in the tray (Win32 only)

R6 to R7

  • Zoom/pan function stays active until changed
  • Win32-version distributed with Debug- and Release-libs
  • Fixed bug in Print- and Export-dialogues: Cancel is no longer ignored
  • Windows are raised and activated on show() and exec()

R5 to R6

  • configuration options for Win32
  • Win32-version server linked against Qt 3.0.5

(Unix version unchanged)

R4 to R5

  • new DrawBoard features
    • panning
    • scaled bitmapped images
    • keyboard shortcuts
  • fixed server autostart bug for win32
  • fixed resource leak for win32
  • changed prebuilt runtime model to multithreaded for win32

R3 to R4

  • missing files in source distribution for Win32 fixed
  • session/preferences support (window sizes and positions) added

R2 to R3

  • improved drawing performance
  • DrawBoard axis and grid support
  • Diagram printing support
  • improved printing and PostScript export

R1 to R2

  • improved Unix printing support
  • improved network perfomance, changed protocol
  • live update of inserted DrawBoard elements without redraw

API Changes from previous versions

DrawBoard::add...() return types changed in BVLnet from the types used in BVL

The return types of the DrawBoard::add...() methods have changed. They are no longer C++ references. Now an instance of an object with reference semantics is returned by value. Simply remove the reference sign (&) from the used initialisation statements (e.g. DBLine& l = db.addLine(...); becomes DBLine l = db.addLine(...);).

This change allows a reuse of the object reference. A C++ reference cannot be reassigned to a new object instance.