# Software projects

Here are some projects I've been working on over the last couple of years, and whose development is still very active.

My main language for developing software is C++. I work on Linux for my programming projects, and moved to development with GCC 3 and GNU's autotools about a year ago.

## baseML

### Abstract

baseML is a tool to manage and construct web sites. To create a web site, you have to provide baseML with a set of "source" XML files that contain the styling and contents of your web site. The source code format is a mix between XML/XHTML components and procedural programming. Some concepts taken from object orientation (such as inheritance/overloading and containers) facilitate managing cascading styles, contents and containers of documents.

## C++ classes for xfig

### The need for a vectorial graphics engine

For my research at the University at Eindhoven, I need to do a lot of graphics. Most of the graphics I'm generating are graphs that are based on data generated by several small programs. Gnuplot (http://www.gnuplot.info/) is excellent for most of my graphs, but its capabilities are limited. Especially if you have specific data that needs to be plotted in a specific way, most programs can't really handle my requests. In more than one occasion, I needed a way to write the programs that generate the graphs myself.

That's why I started writing a set of C++ classes for xfig (http://www.xfig.org/), a vector based drawing program for Unices. A lot of vectorial graphics can be made with this program, its file format is very simple to understand, read or write, and some great command line tools are available that allow you to convert these files to many common portable file formats (such as (encapsulated) postscript, Adobe's portable document format (PDF), many pixel based file formats, and many more other formats I'm not even familiar with).

### The basic idea behind the library

When you are using this class library, you can create all kinds of vectorial objects (such as lines, circles, beziers, text) and assign all kinds of attributes (lines, text justifications, pen styles, fill styles) to these objects. Once the objects are created, you can put them in a container, denoting the figure that is being created, and dump this figure to a stream (standard output, or an output file stream) in the xfig format. Note that it is easy to combine this with inputting a data stream which tells where the graphical objects should be placed, and you can create all kinds of interesting graphs which are hard to create with other graphing utilities in the wild.

### A vectorial 3d to 2d renderer

As a latest addition to this graphing library, I have added a vectorial 3D to 2D renderer, such that you can create a world of vectorial 3 dimensional objects, and render this to a vectorial format, which then can be included in an xfig file. You can read more on my rendering engine in the Rendering Tutorial.

### Where is it?

The xfig libraries are pretty well documented, except for the 3d layer on top of the 2d libraries, which miss out on a lot of documentation. Once that I find the time, I'll push it into a CVS server so you can all grab it. (It's been in CVS servers before, but the server has gone dead, so I need to bring it back up, on another machine. I hope to be able to offer these libraries as a downloadable set of classes once. For now, you can try http://anthony.liekens.net/pub/files/cpfig.tar.gz but I'm not even sure whether it comes to life when used. I have had problems with using the library since I moved to a mac and gcc4.