Up to now we have discussed the way the GNOME canvas operates internally. In this section we will describe the imaging model the canvas supports.
Libart is a library that provides a superset of the PostScript imaging model[2], and it extends it with support for antialiasing and alpha transparency. This means that the edges of graphics primitives such as Bézier paths are smoothed out to eliminate jaggies. Also, such primitives and images can be rendered and composited together using transparency information.
Libart is quite similar in design and scope to such ``next-generation'' imaging models as Adobe's Bravo[1], the Java 2D API[10], Adobe's Precision Graphics Markup Language (PGML)[11], and the W3C's Scalable Vector Graphics Specification (SVG)[12].
The GNOME canvas uses Libart to render its primitives when it is in antialiased mode. Also, it uses Libart's microtile arrays, described below, to represent the areas that need redrawing.
The following sections describe the main features of libart.