The Graphics Vision C++ Project

Graphics Vision (GV) is an object-oriented graphical user interface. GV is currently implemented in Borland Pascal for DOS and DPMI targets. The object hierarchy claims to be compatible with Turbo Vision, a commercial text-mode user interface by Borland, which is used in many industrial applications. Graphics Vision has been developped and supported for 4 years now on a Shareware basis by MKM Software (Stefan Milius, Matthias Koeppe, Daniel Mahrenholz). See the MKM Homepage for details.

The Graphics Vision C++ Project is now heading for a re-implementation of GV in the C++ language. The aim is to provide a free programming system that allows creating portable, efficient graphical applications.


Current State of Development: It is Dead.

In some sense, GV is already working. The X11 implementation is still unstable. The Windows implementation is running stable, but some major questions are still open. A port to a very low-level system (PC with a dummy operating system (not even DOS) with directly addressed VGA hardware) was successful.

There is no documentation at all.

Not a single line of code has been written in this project for a long time, so this project should be considered dead. If someone is interested in continuing development, please contact Matthias Köppe since he has the most current sources.


Planned Targets

The following targets are planned:

  1. Microsoft Windoze 3.1+ / Windows NT

    Of course, there is no point in having yet another object-oriented programing interface for Windoze. There are Microsoft's Visual C++ and Borland's OWL, which make Windoze programming very comfortable.

    The reason why Windoze is the first platform GV is going to be implemented for is: An experimental version of GV/Pascal for Windoze is already running, such that a port should be especially easy.

  2. X Window System Version 11 Release 6

    The X Window System is today the major windowing system for workstations. It is available for any modern operating system, including Unix, Linux, and VMS. X is a network-transparent system. Programming with X originally meant using Xlib functions to exchange messages between the X client (application program) and the X server (display program), which need not run on the same computer. There are libraries, such as the Xt Intrinsics, with object-oriented approaches that meant to simplify X programming. Xt provides the concept of a Widget (window gadget) which encapsulates a window's functionality and interacts with the application using callback functions. There are several Widget sets, such as Athena or Motif, which provide standard widgets for menus, buttons, etc.

    These approaches have failed to use the features of object-oriented programming languages, such as C++. An X implementation of GV is going to perform the natural representation of application gadgets as C++ classes.

    GV will not be a Linux-specific system.


  3. Low Level Target (No Window System)

    Graphics Vision is able to run on every graphical system, even if no window system is available. GV then implements its own "visibility" system (which calculates the shape of partially hidden views) and its own window decorations to provide full functionality.

    This is how GV/Pascal runs in DOS/DPMI targets.

    The minimal graphical system that GV can run on must provide the following functions:


Concepts

Graphics Vision will use the Standard Template Library (STL) for its data structures.

Graphics Vision C++ will be free software in the sense of the FSF General Public License.


Developers

Stefan Milius <S.Milius@tu-bs.de> translated a large amount of GV/Pascal code into C++ code. He developed a proportional-font text input line for GV/C++. Due to Stefan's work there are useful and well-functioning objects rather than only little test objects.

Matthias Koeppe <mkoeppe@cs.uni-magdeburg.de> is working on the Windoze and Low Level targets. He wrote a hierarchical "property" system that generalizes color palettes. He is responsible for everything that is connected with the drawing system, including the visibility management and transparent views.

Daniel Mahrenholz <mahrenho@cs.uni-magdeburg.de> is working on the X11 target.

Martin Erxleben <erxleben@cs.uni-magdeburg.de> is currently developing a pull-down menu system, following the GV/Pascal menu implementation.

Thomas Kiebel <kiebel@cs.uni-magdeburg.de> made a raw translation of the text editor object of GV/Pascal into C++.


Author of this web page: Matthias Koeppe <mkoeppe@mail.math.uni-magdeburg.de>