Libxmi

What is libxmi?

GNU libxmi is a C/C++ function library for rasterizing 2-D
vector graphics. It can draw 2-D graphical primitives, including wide
polygonal lines and circular and elliptical arcs, into a user-supplied
matrix of pixels. Sophisticated line styles, such as multicolored dashing
patterns, can be specified. There is also support for filling and
texturing polygons.

The current version of the libxmi package is
version 1.2, released in June 2000. It can be installed on
GNU/Linux, FreeBSD, and Unix systems. Since libxmi is written
in ANSI C, it should be easy to compile and install on almost any
system with a C compiler.

It can be used as a drop-in rendering module in any application that needs
to scan-convert 2-D vector graphics. It is highly customizable. For
example, the `pixel' datatype can be redefined at compile time. The
algorithm used for compositing pixels can be redefined too.
By default, libxmi uses the Painter's Algorithm
(a new pixel value replaces an old one). But it would be trivial
to install it so that it uses alpha compositing instead. The package, and
its header file xmi.h, include full documentation.

Who wrote libxmi?

libxmi is based on the scan-conversion code in the X11 sample
server, which was written in the late 1980s by programmers associated with
the X Consortium. Even though it
maintains pixel-level compatibility with X11 drawing functions,
it has been
decoupled from the X Window System: it no longer requires an
X display.
In 1999, Robert Maier extracted
the scan-conversion code, converted it to ANSI C, and modified it to
use a two-stage graphics pipeline (the second stage being the stage when
pixel-merging takes place). The resulting code was incorporated as a
rendering module in the GNU plotting
utilities package, of which he is the maintainer. The rendering
module is now being distributed separately, under the name
libxmi.