Next: , Previous: Development tools, Up: Top

3 Project structure overview

VRR consists of these main parts.

They are described in details in the following chapters. Here we supply a short overview of every part.


The basic modules, intended to be used by the whole project. There are things like logging and debugging, memory allocation and general data structures.


GEOMLIB is the geometrical library of VRR project. It implements many numerical algorithms with Bézier curves, general geometrical objects, planar search data structures and many other features. From the beginning, it was designed as a standalone library with no other dependency inside VRR (with the exception of the VRRLIB).

3.3 Kernel

Kernel is the core of VRR project, implementing main VRR data structures, graphic objects, transaction mechanism, undo history and also many computations with graphic objects.

3.4 GUI

Graphical User Interface communicates with the user. GUI uses the services of Kernel to manipulate with objects, maintain data structures and perform various operations, and with VCL to render them on screen. It also calls other parts of VRR like export and import modules. GUI heavily uses the GTK+ library.

3.5 VCL

VRR Canvas Library (VCL) is the set of low-level rendering routines, as well as high-level graphical engine, containing various object expansion caching. Most of the low-level algorithms are hand-written, the rest is performed by the GDK library, part of GTK+, or optionally by the Cairo library.


FONTLIB is the font rendering and manipulation library. It contains support for rendering PostScript Type1 fonts and TrueTypes, computing text bounding boxes and converting font among these formats.

3.7 Plugins

This is the VRR plugin mechanism, allowing a programmer to write separated modules (which are actually ELF dynamic libraries), that is possible to load (and sometimes also unload) in runtime. In this chapter we give the interface description, as well as some tips & tricks.

3.8 Export

VRR is able to fully export pictures in PostScript, Encapsulated PostScript, PDF (conforming to level 1.5) and SVG. PostScript and PDF export routines are hand-written, SVG export uses the LibXML library to handle the native SVG's XML format.

3.9 Import

VRR supports importing large subset of the SVG image data format. There is also experimental support for a subset of the IPE version 5.0 native image format.

3.10 Scheme

VRR has an integrated scripting language. It is based on the GUILE library, a Scheme language interpret. The connections between VRR

and GUILE are described in this chapter.