13thmonkey.org : Artdraw

The Artdraw logo
Artdraw? | Status |  History | TODO |  [ PNG examples ]

What is and what isn't Artdraw ?

Artdraw is a easy to use yet very powerfull library for the creation of fully anti-aliased images. It is completely vector based and thus has no floodfill nor bitmap operations like weird filters etc. They might be added later as an appendage to it but it isnt part of the initial specification.

The basic set of drawing primitives supported in Artdraw are the ones found in many graphical languages such as Adobe's PostScript extended with alpha blending, powerfull fill and clipping methods and bitmap fill patterns. Drawing bitmaps like photo's is integrated in Artdraw but maybe a bit different than one is used to in other libraries as it logically integrates as `yet another' fill methods on the vector based drawing operations. This has the advantage that all other operations normally done on vectors are possible on bitmaps too like gradual transparency and clipping to name a few.

A programmer using the Artdraw library is more or less instructing the library in a graphic language with primitives like moveto, lineto, curveto and fill. Very complex and diverse images can be constructed using these simple primitives alone. This relieves the artist / programmer of a lot of administrational tasks as found in other drawing libraries and is as extra benefit far less error-prone.

Artdraw currently consists of the selfcontained library and a few regression test programs to check the basic functionalities of the library. Artdraw consists of 100% my own code and only needs to link to libz and libm as found on all machines nowadays or at least obtainable for them. Libz isn't strictly nessisary if you drop out the png image loading.

Artdraw has been developped on a range of machines running NetBSD but also runs and compiles fine on other BSDs and Linux. Last time i checked it also ran fine on Sun's Solaris but has been quite some time ago regretfully. Under Linux you will have to use the BSD/Posix make sometimes installed as `pmake' or `bmake' due to gmake being non posix.


Currently Artdraw is nearly finished for its 1st release. Its now very suitable for the creation of PNGs in programs and webpages. The example images show that most desired features are operational now so most complex images are ready to be drawn!


On the TODO list is currenly providing a more generic framework for displaying results on media like X screens and making the library thread-safe in order to create images in PHP for websites!. This later objective might however result in a (hopefully minor) change in the API.

History and motivation

It all started when i used the vector drawing program `Artworks' on the Acorn machines released by ComputerConcepts Ltd. This program has been rewritten by them and is later on merged with Corel and evolved into `Corel Xara X'. Since the majority of my machines run NetBSD i wanted a package that could run on all my machines and could at least tip or exceed its drawing capacities but still be easy to use.

In the meantime i started the `Albion' project with is a quite ambitious project to create a fast and most of all easy to use intuitive desktop environment. This project is still a heap of papers but i started working out some of the parts i needed anyway and so the `Artdraw' library got started following Albion's structural and communicative structures.

Having looked at other drawing libraries first i discovered that first of all allmost all of them were very hostile to use and needed a lot of carefull administration to even get a simple image!. Second, all of them used `handles' to datastructures wich are forbidden in the Albion project design goals and communication structure. Finally, most libraries (except notably libart f.e.) were either written in non portable code or were written in object oriented languages like C++ or Java and for that reason allready got disqualified in itself :-D

Back to top of page